【问题标题】:Extract TIFF from PDF with PDFBox v2使用 PDFBox v2 从 PDF 中提取 TIFF
【发布时间】:2016-06-09 22:39:34
【问题描述】:

可以使用 PDFBox v1.x 提取包括 TIFF 格式的图像。仍然可以使用 2.0.1 版本提取某些格式,但它似乎不适用于 TIFF 格式。

for (COSName c : page.getResources().getXObjectNames()) {
    PDXObject o = resources.getXObject(c);
    if (o instanceof PDImageXObject) {
        PDImageXObject image = (PDImageXObject) o;
        try (ByteArrayOutputStream bout = new ByteArrayOutputStream()) {
            ImageIO.write(image.getImage(), image.getSuffix(), bout);
            System.out.println("Image Bytes: " + bout.size());
        }
    }
}

上面代码中的 ByteArrayOutputStream 有 PNG 和 JPEG 的字节,但没有 TIFF 的字节。有什么建议吗?

谢谢。

【问题讨论】:

  • 我首先想到的问题是:ImageIO 是否支持 TIFF?尝试将 image.getSuffix() 替换为“png”,以便尝试将其保存为 png。如果它确实有效,那么您的 ImageIO 只是不支持写入 TIFF 文件。
  • “但它似乎不起作用”不是很具体。当图像在 pdf 文件中以 ccitt 格式编码时,image.getSuffix() 返回“tiff”。您没有链接到特定的 PDF 文件。只有当 jai_imageio.jar 在您的类路径中时,ImageIO.write() 才能正常工作。 1:查看ImageIO.write()的返回值。 2:使用ImageIOUtils,这将检查lib是否存在。 3:读取依赖:pdfbox.apache.org/2.0/dependencies.html 4:使用最新版本,即2.0.2。 (仅从昨天开始:-))
  • 我已经尝试了 2.0.2 版本,但结果是一样的。 JAI 的 imageio、编解码器和核心位于类路径中,并且“ImageIOUtils.writeImage”产生的结果类似于“ImageIO.write”。但是将 TIFF 视为 PNG(如@user254948 所建议)是有效的,即我能够将 TIFF 保存为 PNG,对其进行编辑并将其保存为 PDF。感谢您的建议。

标签: java pdfbox tiff


【解决方案1】:

要将 PDF 提取为 TIFF 格式,您需要在类路径中包含 jai_imageio 库。

我使用了 geotoolkit 存储库中的分发包,这是我的 pom.xml 提取:

<repositories>
    <repository>
        <id>Geotoolkit</id>
        <name>Geotoolkit</name>
        <url>http://maven.geotoolkit.org/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.3</version>
    </dependency>

    <!--required by PDFBox to create tiff images-->
    <dependency>
        <groupId>javax.media</groupId>
        <artifactId>jai_imageio</artifactId>
        <version>1.1.1</version>
    </dependency>
</dependencies>

【讨论】:

    猜你喜欢
    • 2012-02-01
    • 1970-01-01
    • 2012-12-30
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 2013-11-15
    相关资源
    最近更新 更多