当前位置: 首页 > 知识库问答 >
问题:

如何使用PDFBox的PDFPagePanel查看PDF文档

衡高寒
2023-03-14

我似乎不知道如何使用PDFBox及其PDFPagePanel组件查看PDF页面。

因此,使用PDFBox,我的选项似乎是创建PDPage对象或PDDocument对象的列表,我使用了PDPage列表(而不是对PDDocument对象使用splitter())

下面的代码创建一个名为testPage的PDPage对象

File PDF_Path = new File("C:\\PDF.PDF");
PDDocument inputPDF = PDDocument.load(PDF_Path);
List<PDPage> allPages = inputPDF.getDocumentCatalog().getAllPages();
inputPDF.close();
PDPage testPage = (PDPage)allPages.get(0);

在这里,我想创建一个PDFPagePanel并使用它的setPage()方法将PDPage放入组件中。从这里开始,我想将组件添加到JFrame中。当我这样做时,我只看到空格。

JFrame testFrame = new JFrame();
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
PDFPagePanel pdfPanel = new PDFPagePanel();
pdfPanel.setPage(testPage);
testFrame.add(pdfPanel);
testFrame.setBounds(40, 40, pdfPanel.getWidth(), pdfPanel.getHeight());
testFrame.setVisible(true);

我找到了一个“解决方案”,它建议将PDF转换成一个图像,并将其显示为一个缓冲图像,虽然这是可行的,但似乎并不是正确的方法。我尝试使用PDFBOX的PDFPagePanel作为显示PDF的手段是不正确的吗?

共有1个答案

刘奇
2023-03-14

当我注释掉inputpdf.close call时,它可以正常工作。如果您在完成显示PDF后将关闭位置移到该位置,该怎么办?像这样的东西...

testFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
testFrame.addWindowListener(new WindowAdapter() {

@Override
public void windowClosing(WindowEvent e) {
    try {
        inputPDF.close();
        testFrame.setVisible(false);
    } catch (IOException e1) {
        //  TODO: implement error handling
        e1.printStackTrace();
    }
}

});

为了记录,我还实现了一个PDFBox查看器,作为一个包装在JPanel中的组件中的BufferedImage。然后,我就能够自定义带有附加按钮的面板,以更改页面、更改文档、“缩放”或调整图像大小等。

 类似资料:
  • 我正在尝试缩放pdf文件,就像复印机中的缩放功能一样,它可以按百分比缩放文档(如下所示:https://inspectapedia.com/graphics/Safari_Page_Setup.jpg),我正在使用pdfbox管理我的pdf文件。我尝试过这个代码,但为什么它不起作用?代码中没有错误。 有人知道为什么该代码不起作用吗? 编辑 我需要它在API 16上工作

  • 我目前正在尝试用PDFBox生成一些手动封面的PDF,我想知道是否有可能在我的PDF中获取一个精确的文本区域并根据我的曼努埃尔厚度将其移动(向左)(这将由我的手册将有的页数决定) 我很好地创建了我的PDF文件,但我没有找到一种只获取一块文本的方法。 是否可以使用PDFBox这样做? 注意:我试着在网上和其他问题上搜索,但没有一个有用。 谢啦

  • 我有一个问题,生成一个分层的pdf页面使用PDFbox。我在这里看到过几篇关于这个主题的文章,但它们都集中在将页面从另一个pdf导入到目标文档中。 我创建了一个类MapImage,它包含纸张大小(以像素为单位)和一个我想要添加到单个pdf页面的BufferedImages列表。 不幸的是,生成的PDF已损坏。我试图创建一个页面,只有一个图像(没有图层),但不幸的是,我不知道如何做到这一点。 有人遇

  • 问题内容: 我正在使用Apache PDFBox处理Java应用程序中的PDF文件。我想在每个页面上分割一个PDF文档。 是否有可能做到这一点Apache PDFBox?如果是这样,怎么办? 问题答案: 可以使用来实现。 这是一个示例代码,它将在每个页面上拆分文档: 您可以使用来控制每个拆分的PDF的页数。

  • 我正在迁移一些代码(最初使用iText)来使用PdfBox进行PDF合并。除了创建PDF包或文件夹,一切都很好。我不得不承认,直到现在我才意识到它的存在。 这是我的代码片段(使用iText): 我需要这个,但与PdfBox。 我正在研究两者的 API 和文档,但找不到解决方案。任何帮助都会很棒。 附言。如果我给人留下印象,我需要在iText中解决方案,我需要它在PdfBox中,因为迁移是从iTex

  • 问题内容: 我想使用Apache PDFBox从给定的PDF文件中提取文本。 我写了这段代码: 但是,出现以下错误: 我在类路径中添加了pdfbox-1.8.5.jar和fontbox-1.8.5.jar。 编辑 我添加到程序的开头。 我运行了它,然后出现了与上述相同的错误,并且未出现在控制台中。 因此,我认为我对类路径或其他东西有疑问。 谢谢。 问题答案: 我执行了您的代码,它工作正常。也许您的