我有这些代码行,我试图用Apache pdfBox读取pdf文件。
private void readPdf(){
try {
File PDF_Path = new File("/home/olyjosh/Downloads/my project.pdf");
PDDocument inputPDF = PDDocument.load(PDF_Path);
List<PDPage> allPages = inputPDF.getDocumentCatalog().getAllPages();
PDPage testPage = (PDPage) allPages.get(5);
System.out.println("Number of pages "+allPages.size());
PDFPagePanel pdfPanel = new PDFPagePanel();
jPanel1.add(pdfPanel);
pdfPanel.setPage(testPage);
// this.revalidate();
inputPDF.close();
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
我希望这个pdf显示在jPanel等swing组件上,但这只会显示带有pdf文件预期内容的面板。但是,我能够使用
将pdf显示为图像convertToImage = testPage.convertToImage();
请问,我该如何解决这个问题或者我做错了什么。
答案 0 :(得分:1)
Apache PDF-Box有一个mailing list我可以问同样的问题,这就是我得到的回复
这在2.0中删除了,因为它制造了麻烦。显然,它至少对你来说也不适用于1.8,所以为什么要这么麻烦?
有两种方法可以显示,或者获取BufferedImage(renderImage / renderImageWithDPI)并以某种方式显示(参见PDFDebugger如何操作),或者渲染到图形设备对象的renderPageToGraphics。
如果您确实想要获取已删除的PDFReader应用程序(包括PDFPagePanel)的源代码,请使用svn获取修订版1702125或更早版本,应该拥有它。但如果它在1.8中不适合你,它现在对你不起作用。
关键是PDF页面的摇摆显示不是API的一部分,它是某些工具的一部分(现在:在PDFDebugger中,之前:在PDFReader中)
你需要对awt / swing有一些了解。如果你不这样做,那就去学习,或雇用某人。 (这就是我们所做的,最好的是:谷歌支付它,作为谷歌夏季代码的一部分)
蒂尔曼