Java PDF Viewer

Sto usando java e RCP e sto cercando di mostrare il documento pdf con Acrobat sulle mie viste. Non ho bisogno di cambiarli. Ho questo errore con questo codice. Qualche idea su come risolvere questo problema? Ps: funziona bene le stesse volte.

PDFFile pdfFile; pdfFile = PdfFileLoader.loadPdf(file, new NullProgressMonitor()); PdfDocument pdfDocument = new OneDimensionalPdfDocument(pdfFile, new NullProgressMonitor()); pdfViewer.setPdfDocument(pdfDocument); Error from PdfDocument pdfDocument = new OneDimensionalPdfDocument(pdfFile, new NullProgressMonitor()) : Unsupport CMap format: 6 java.nio.BufferUnderflowException at java.nio.Buffer.nextGetIndex(Unknown Source) at java.nio.HeapByteBuffer.getShort(Unknown Source) at com.sun.pdfview.font.ttf.HmtxTable.setData(HmtxTable.java:79) at com.sun.pdfview.font.ttf.TrueTypeTable.createTable(TrueTypeTable.java:113) at com.sun.pdfview.font.ttf.TrueTypeFont.getTable(TrueTypeFont.java:106) at com.sun.pdfview.font.TTFFont.getOutline(TTFFont.java:129) at com.sun.pdfview.font.TTFFont.getOutline(TTFFont.java:89) at com.sun.pdfview.font.OutlineFont.getGlyph(OutlineFont.java:118) at com.sun.pdfview.font.PDFFont.getCachedGlyph(PDFFont.java:307) at com.sun.pdfview.font.PDFFontEncoding.getGlyphFromEncoding(PDFFontEncoding.java:132) at com.sun.pdfview.font.PDFFontEncoding.getGlyphs(PDFFontEncoding.java:98) at com.sun.pdfview.font.PDFFont.getGlyphs(PDFFont.java:273) at com.sun.pdfview.PDFTextFormat.doText(PDFTextFormat.java:283) at com.sun.pdfview.PDFParser.iterate(PDFParser.java:742) at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:88) at java.lang.Thread.run(Unknown Source) 

Saluti, Haythem

Dai un’occhiata a questi renderer pdf gratuiti …

Alcuni link …

  1. http://www.icepdf.org/

  2. http://www.jpedal.org/support_siEclipse.php

  3. https://java.net/projects/pdf-renderer

AGGIORNARE

Come da http://www.icepdf.org/ ,

ICEpdf è un motore Java PDF open source in grado di eseguire il rendering, la conversione o l’estrazione di contenuto PDF all’interno di qualsiasi applicazione Java o su un server Web.

Per le funzionalità di base è necessario includere icepdf-core.jar e icepdf-viewer.jar nel percorso della class. A seconda del requisito è anche ansible aggiungere il supporto SVG.

Tratto dalla cartella di esempi iceface:

 import org.icepdf.ri.common.SwingController; import org.icepdf.ri.common.SwingViewBuilder; import javax.swing.*; /** * The ViewerComponentExample class is an example of how to use * SwingController and SwingViewBuilder * to build a PDF viewer component. A file specified at the command line is * opened in a JFrame which contains the viewer component. * * @since 2.0 */ public class ViewerComponentExample { public static void main(String[] args) { // Get a file from the command line to open String filePath = args[0]; // build a component controller SwingController controller = new SwingController(); SwingViewBuilder factory = new SwingViewBuilder(controller); JPanel viewerComponentPanel = factory.buildViewerPanel(); // add interactive mouse link annotation support via callback controller.getDocumentViewController().setAnnotationCallback( new org.icepdf.ri.common.MyAnnotationCallback( controller.getDocumentViewController())); JFrame applicationFrame = new JFrame(); applicationFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); applicationFrame.getContentPane().add(viewerComponentPanel); // Now that the GUI is all in place, we can try openning a PDF controller.openDocument(filePath); // show the component applicationFrame.pack(); applicationFrame.setVisible(true); } } 

Il codice sopra ti aiuta a visualizzare un PDF su un componente swing. Puoi fare lo stesso nell’ambiente SWT (dai uno sguardo a SwingViewBuilder .. un po ‘difficile, ma con un aspetto SWT) o usare org.eclipse.swt.awt.SWT_AWT (una specie di facile … ma avrà swing + swt look and feel) … sebbene entrambi gli approcci risolveranno il tuo scopo. Controlla anche le licenze applicabili nella cartella della licenza.

Spero che questo ti sia d’aiuto.

Ecco un altro PDF Viewer gratuito, piccolo e potente basato su Eclipse SWT e jPod Renderer – JPview . Ha un forte rendering e un basso utilizzo della memoria.