【问题标题】:How can I find out in Java if a PDF file contains a JBIG2 image?如果 PDF 文件包含 JBIG2 图像,如何在 Java 中查找?
【发布时间】:2020-10-22 15:21:45
【问题描述】:

我正在使用 Apache PDFBox 读取 PDF 文件并将其转换为 JPEG 图像。

import java.io.ByteArrayInputStream;
import java.awt.image.BufferedImage;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
...

byte[] fileBytes;
...
PDDocument pdDocument = PDDocument.load(new ByteArrayInputStream(fileBytes));
BufferedImage image = new PDFRenderer(pdDocument).renderImage(0);
pdDocument.close();

有时 PDF 文档包含 JBIG2 图像。我正在使用JBIG2 ImageIO Plugin for PDFBox 来正确处理此类 PDF 文档。这工作正常。但是我想知道转换后的原始PDF文档是否包含JBIG2图像。

我查看了PDDocument Javadoc,但我无法回答这个看似简单的问题:给定的 PDF 文档是否包含至少一个 JBIG2 图像?

由于我已经在使用 PDFBox,因此首选使用 PDFBox 的解决方案,但也非常感谢其他建议。

【问题讨论】:

    标签: java pdf pdfbox jbig2


    【解决方案1】:

    从源代码下载或从here获取ExtractImages.java的源代码。在write2file方法中搜索这一行:

    String suffix = pdImage.getSuffix();
    

    现在添加一些类似的代码

    if ("jb2".equals(suffix))
    {
        // do your stuff here, i.e. remember that it is JBIG2
    }
    

    然后从该方法中删除所有其余部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-23
      • 2020-12-06
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多