pdfbox 和 itext 无法提取图像

pdfbox and itext not able to extract image

我正在尝试从 pdf 中提取图像。 pdfbox 能够从大多数 pdf 中提取图像,但有些 pdf 的图像未被 pdfbox 提取。

为了提取图像,我使用以下代码:

您可以从这个 link 下载关于这个问题的示例 pdf: http://myslams.com/test/2.pdf

他们的代码有问题吗,也许是我忘记处理的东西,或者他们的 pdf 一起有问题吗?

由于 OP 尚未将他陈旧的样本 PDF link 替换为可用的样本,因此只能笼统地回答这个问题。

OP 引用的代码(在@Tilman 的回答中进行了更正)迭代每个页面的直接图像资源并存储相应的文件。

因此,代码可能会存储太多 图像,因为页面的图像资源可能不一定在相关页面上使用:

  1. 一方面,它可能根本不会在文件中使用,或者至少在任何地方都不可见,而只是之前某个 PDF 编辑会话的遗留物。
  2. 另一方面,多个页面可能有一个共享资源字典,其中包含所有这些页面上的所有图像;在这种情况下,OP 的代码导出了许多重复项。

而且代码可能存储太少张图片,因为还有其他地方可以放图片:

  1. 图像数据可能直接包含在页面内容流中,也称为内联图像。
  2. 从页面内容中使用自己的资源(表单 xobjects、模式、Type 3 字体字形)构造可以提供自己的图像资源或内联图像。
  3. 注释,例如AcroForm 表单字段可能也有自己的外观流和自己的资源,因此也可能提供自己的图像资源或内联图像。
  4. XFA 表单也可以提供自己的图像。

一旦 OP 提供了具有代表性的示例文件,就可以确定他遗漏的图像类型,并可以概述具体的解决方案。

编辑

根据 OP 的评论,他的图像提取问题已通过使用来自 to his question 的信息得到解决。特别是指出适用于 OP sems 使用的 PDFBox 版本 1.8.8 的示例代码非常重要。

因此,任何类型的错误输出也可能由于软件编排问题而发生。