无需解码即可从 PDF 中提取 TIFF 图像

问题描述 投票:0回答:2

在 iText 5 的帮助下,我想从给定的 PDF 文件中提取所有 TIFF 图像并将它们保存为 TIFF 文件。 示例和其他帖子(12)使用以下方法:

  1. 从 PDF 流创建
    PdfImageObject
    ,它在 line 189 解码图像流(如果存在相应的过滤器实现)。
  2. 调用
    PdfImageObject#getImageAsBytes()
    返回 JPEG(原始)、PNG(重新编码)或 TIFF(在每像素 8 位的情况下)。

结果 1 位色深的 TIFF 图像被转换为 PNG,这不是我需要的。

另一种方法是调用

PdfImageObject#getBufferedImage()
,它将在步骤 (2) 中将图像解码为光栅,然后使用
ImageIO.write(bufferedImage, "tiff", file)
再次将其编码为 TIFF。

可以看出这是没有效率的。 这篇文章 中显示的另一个解决方案演示了如何通过在其前面添加 TIFF 标头来将编码的 TIFF 图像流保存到文件中——这就是我正在寻找的解决方案。

iText 可以提供帮助吗?

java image pdf itext tiff
2个回答
1
投票

到目前为止,最简单的方法是从任何最近的 poppler utils 包中取出操作系统并使用 pdfimages

对于 Windows,它们位于 https://github.com/oschwartz10612/poppler-windows
其他版本可能有不同的输出能力。

poppler/bin>

pdfimages -tiff in.pdf out

这将(/应该)使用

out-000.tif etc
等名称将所有图像提取为 colour.tif 或 mono.tif,但请注意,单色蒙版看起来颠倒是正常的,因为这通常是它们存储在 PDF 中的方式,

此外,单声道 tiff 将按照相对密度的要求进行处理,因此纸上标称 300 dpi 分辨率的源将导出为单声道未压缩 tiff,PDF 密度为 72dpi。相同数量的像素,因此看起来规模更大


-1
投票

PDF 图像是not TIFF 图像。

PDF 但是可以包含使用压缩技术的图像, 在 TIFF 中使用,例如Flate、CCITT、LZW、JPEG.

© www.soinside.com 2019 - 2024. All rights reserved.