2010-12-14 12 views
5

Używam java i RCP i staram się pokazać dokument pdf z Acrobatem na moich poglądach. Nie trzeba ich zmieniać. Mam ten błąd z tym kodem. Każdy pomysł, jak rozwiązać ten problem ?. P.s .: działa to dobrze w tym samym czasie.Przeglądarka Java PDF

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) 

Pozdrawiam, Haythem

+0

Którą bibliotekę używasz? – Favonius

Odpowiedz

12

Wystarczy popatrzeć na tych free pdf renderujący ...

kilka linków ...

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

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

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

UPDATE

Zgodnie http://www.icepdf.org/,

ICEpdf jest open source Java PDF silnik, który może sprawić, konwersji lub ekstrakt zawartość PDF w dowolnej aplikacji Java lub na serwerze sieci Web.

Do podstawowej funkcjonalności należy dołączyć icepdf-core.jar i icepdf-viewer.jar w ścieżce zajęć. W zależności od wymagań można również dodać obsługę SVG.

Zrobione z folderu próbki iceface:

import org.icepdf.ri.common.SwingController; 
import org.icepdf.ri.common.SwingViewBuilder; 

import javax.swing.*; 

/** 
* The <code>ViewerComponentExample</code> class is an example of how to use 
* <code>SwingController</code> and <code>SwingViewBuilder</code> 
* 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); 
    } 
} 

Powyższy kod pomaga w wyświetlaniu PDF na komponencie huśtawka. Możesz zrobić to samo w środowisku SWT (spójrz na SwingViewBuilder .. coś twardego, ale będzie wyglądać i czuć SWT) lub użyj org.eclipse.swt.awt.SWT_AWT (rodzaj łatwego ... ale będzie miał swing + swt wygląd i styl) .. chociaż oba podejścia rozwiążą twój cel. Sprawdź również odpowiednie licencje w folderze licencji.

Mam nadzieję, że to pomoże.

+0

Tak, widziałem je, ale nie udało mi się znaleźć sposobu na otwarcie istniejących plików PDF i wyświetlanie ich w widoku. – Haythem

+0

@Haythem: Więc jakiej biblioteki teraz używasz? – Favonius

+0

@Favonius: Używam org.nightlabs.eclipse.ui.pdfviewer – Haythem

4

Oto kolejna darmowa, mała i potężna przeglądarka plików PDF na podstawie Eclipse SWT i jPod Renderer - JPview. Ma silne renderowanie i niskie zużycie pamięci.

Powiązane problemy