【问题标题】:PDFBox unsupported operation for convertToImage()不支持 PDFBox 的 convertToImage() 操作
【发布时间】:2016-08-10 02:44:10
【问题描述】:

我想将 pdf 第一页作为 jpg 图像。该程序向我显示了一些错误:

Apr 18, 2016 1:18:40 PM org.apache.pdfbox.util.PDFStreamEngine processOperator
INFO: unsupported/disabled operation: BDC
Apr 18, 2016 1:18:40 PM org.apache.pdfbox.util.PDFStreamEngine processOperator
INFO: unsupported/disabled operation: EMC
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/fontbox/afm/AFMParser
    at org.apache.pdfbox.pdmodel.font.PDFont.addAdobeFontMetric(PDFont.java:165)
    at org.apache.pdfbox.pdmodel.font.PDFont.addAdobeFontMetric(PDFont.java:152)
    at org.apache.pdfbox.pdmodel.font.PDFont.getAdobeFontMetrics(PDFont.java:122)
    at org.apache.pdfbox.pdmodel.font.PDFont.<clinit>(PDFont.java:114)
    at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:108)
    at org.apache.pdfbox.pdmodel.PDResources.getFonts(PDResources.java:213)
    at org.apache.pdfbox.util.PDFStreamEngine.getFonts(PDFStreamEngine.java:607)
    at org.apache.pdfbox.util.operator.SetTextFont.process(SetTextFont.java:59)
    at org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:557)
    at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268)
    at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235)
    at org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215)
    at org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:139)
    at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:801)
    at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:732)
    at Main.main(Main.java:26)
Caused by: java.lang.ClassNotFoundException: org.apache.fontbox.afm.AFMParser
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 16 more

Main.java:26 : BufferedImage image = firstPage.convertToImage();

是否有可能使用 PDFBox 将第一页作为图像?

完整代码:

try {
            String sourceDir = "/home/linux/Downloads/test.pdf";
            String destinationDir = "/home/linux/Downloads/testImage";
            File sourceFile = new File(sourceDir);
            File destinationFile = new File(destinationDir);

                PDDocument document = PDDocument.load(sourceDir);
                PDPage firstPage = (PDPage) document.getDocumentCatalog().getAllPages().get(1);

                String fileName = sourceFile.getName().replace(".pdf", "");

                    BufferedImage image = firstPage.convertToImage();
                    ImageIO.write(image , "jpg", new File(destinationDir +fileName+"_"+".jpg"));

                document.close();

        } catch (Exception e) {
                    e.printStackTrace();
}

我只需要将第一页解析为图像。

【问题讨论】:

  • 大部分是 stackoverflow.com/questions/18503159/… 的复制品,缺少字体框,另见 pdfbox.apache.org/1.8/dependencies.html
  • 这是因为我理解的字体类型。但是我怎样才能删除警告呢? link
  • 这是一个不同的问题。该警告是 1.8 的典型警告。解决方案:更新到2.0。不要忘记阅读迁移指南。
  • 甚至可以得到 1.8 以不显示此类警告。因此,@Munchmallow,您是否一定要使用 2.0.0 之前的版本?
  • 我使用的是 1.8.5。和 PDFBox 1.8.10。我尝试了十种不同的 pdf,我得到了第一页作为图像,并且还得到了一些警告或信息消息,就像我在第一条评论中显示的那样。我应该将 fontbox 和 pdfbox 都更新到 2.0 吗?

标签: java pdfbox


【解决方案1】:

Convert a PDF file to image

尝试研究这个问题,“标记为正确答案”告诉了如何实现您的愿望的正确方法。 :)

【讨论】:

  • 引用的答案既没有解释丢失的资源,也没有阻止此处的 OP 所需的警告。
  • 我已经关注了那个,我确实看到了这些警告link
猜你喜欢
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 2023-03-24
相关资源
最近更新 更多