Questo è un problema che mi si è presentato recentemente è ho avuto modo di valutare diverse soluzioni piu o meno realizzabili e in definitiva ho optato per la creazione di un documento PDF per mezzo delle librerie iText di http://www.lowagie.com/iText/ e aprire questo file con l'applicazione predefinita per visualizzare PDF.
Le soluzioni provate sono state diverse anche per il fatto di non sborsare un soldo per eventuali licenze commerciali per librerie o altro.
Trovare un java bean grafico da integrare nel mio programma
Esiste un bean grafico 'Acrobat Viewer ' che puo servire al nostro scopo e una dettagliata pagina di spiegazioni si trova qui (Inglese):
http://today.java.net/pub/a/today/2005/10/20/accessing-pdf-with-acrobat-viewer-javabean.html
Per utilizzare questa libreria bisogna includere nel nostro progetto di Netbeans le due librerie scaricabili qui 'Acrobat Viewer' che sono:
1.'MRJToolkitStubs.zip'
2.'acrobat.jar'
[Per includere nel progetto queste due librerie e usarle senza errori nel mio codice java:
Aprire la gerarchia del mio 'Application project' cliccare con il tasto destro del mouse la voce 'Libraries' cliccare la voce 'Add jar/Folder' si possono scegliere file .jar ma anche .zip non dovrebbe dare errori]
Il problema è che l'ultima versione scaricabile fornita è ferma dal 1999 e piu niente è stato aggiornato quindi l'interfaccia resta oltre che un po vecchiotta a rischio di mandarti in crash il tuo programma.
Un esempio di codice:
import com.adobe.acrobat.*;
import java.awt.*;
import java.io.*;
public class PDFViewer {
public PDFViewer() throws java.lang.Exception {
}
public void viewPDFDocument() {
try {
Frame frame = new Frame("PDF Viewer");
frame.setLayout(new BorderLayout());
Viewer viewer = new Viewer();
frame.add(viewer, BorderLayout.CENTER);
frame.add(new Label("PDF Document in Adobe Acrobat Viewer",
Label.CENTER), BorderLayout.NORTH);
InputStream input = new FileInputStream(new File(
"C:/miofile.pdf"));
viewer.setDocumentInputStream(input);
viewer.setEnableDebug(true);
viewer.setProperty("Default_Page_Layout", "SinglePage");
viewer.setProperty("Default_Zoom_Type", "FitPage");
viewer.setProperty("Default_Magnification", "100");
System.out.println("Page Count: " + viewer.getPageCount());
System.out.println("Current Page: " + viewer.getCurrentPage());
viewer.zoomTo(1.0);
viewer.activate();
frame.setSize(400, 500);
frame.pack();
frame.show();
OutputStream output=new FileOutputStream(new File("C:/output.txt"));
PrintWriter printWriter=new PrintWriter(output);
printWriter.print(viewer.getTextForPage(1));
printWriter.flush();
printWriter.close();
} catch (java.lang.Exception e) {
}
}
public static void main(String[] argv) {
try {
PDFViewer pdfViewer = new PDFViewer();
pdfViewer.viewPDFDocument();
} catch (java.lang.Exception e) {
}
}
}
Dopo qualche sforzo si riesce a visualizzare l'interfaccia di Acrobat Viewer sul tuo progetto, ma sul mio macbook il drag con la manina funziona correttamente mentre su una macchina windows sfarfalla fastidiosamente. quindi soluzione bocciata.
Altri bean grafici gratuiti che visualizzano PDF attualmente io non ne ho trovato risultano invece facili da trovare quelli a pagamento e in particolare:
1. http://www.icesoft.com/products/demos_icepdf.html
2. http://www.qoppa.com/demo/vapplet.html
i quali forniscono delle dimostrazioni on line dei loro viewer.
Un elenco di risorse per gestire, leggere, generare PDF in Java si trova qui:
http://schmidt.devlib.org/java/libraries-pdf.html
Fonte: http://www.pirasters.org/index.php?option=com_content&task=view&id=18&Itemid=30
Licenza Articolo: Attribuzione 2.5 Italia (CC BY 2.5)