martedì 24 giugno 2014

UNIRE IMMAGINI IN PDF

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