Dopo un breve periodo di assenza causa progetto SqlDocGenerator e lavoro, inserisco un codice per creare un file pdf unendo una o più immagini.
Il linguaggio di programmazione che utilizzo per questo esempio è Java ma fatemi sapere se siete interessati ad un'altro linguaggio in particolare.
Prima di tutto utilizzerò una libreria abbastanza famosa: iTextFree. Per quanto riguarda la routine invece tutto si racchiude nel chiedere all'utente quali immagini trasformare e generare l'output specifico.
Document document = new Document();
ArrayList input;
String output = ".\\out.pdf";
try {
FileOutputStream fos = new FileOutputStream(output);
PdfWriter pdfWriter = PdfWriter.getInstance(document, fos);
Image image;
JFileChooser fc = new JFileChooser(".\\");
//set the file chooser
fc.setMultiSelectionEnabled(true);
FileNameExtensionFilter filter = new FileNameExtensionFilter("IMAGES", "jpg", "jpeg", "gif", "png", "bmp");
fc.setFileFilter(filter);
int userOption = fc.showOpenDialog(null);
//checks the user selection
if (userOption == JFileChooser.APPROVE_OPTION) {
input = new ArrayList();
for (File f : fc.getSelectedFiles()) {
input.add(f.getAbsolutePath());
}
if (fc.getSelectedFile() != null) {
input.add(fc.getSelectedFile().getAbsolutePath());
}
} else {
return;
}
if (input.size() == 0) {
return;
}
//producing the output
pdfWriter.open();
document.open();
for (Object fileName : input.toArray()) {
image = Image.getInstance((String) fileName);
float scaler = ((document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin()) / image.getWidth()) * 100;
image.scalePercent(scaler);
document.add(image);
}
document.close();
pdfWriter.close();
JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, ex.toString(), "", JOptionPane.ERROR_MESSAGE);
}
Nessun commento:
Posta un commento