【问题标题】:pdfbox and itext not able to extract imagepdfbox 和 itext 无法提取图像
【发布时间】:2015-01-25 20:53:49
【问题描述】:

我正在尝试从 pdf 中提取图像。 pdfbox 能够从大多数 pdf 中提取图像,但它们是一些 pdf,其图像没有被 pdfbox 提取。

为了提取图像,我使用以下代码: Not able to extract images from PDFA1-a format document

您可以从此链接下载一个包含此问题的示例 pdf: http://myslams.com/test/2.pdf

是他们的代码有问题,可能是我忘记处理的代码,还是他们的 pdf 有问题?

【问题讨论】:

  • 为了提取我使用以下代码的图像 - 你的意思是来自其他问题的代码还是根据@Tilman 的答案改编的代码。
  • @mkl 代码根据 tilman 改编
  • 我得到 在此服务器上找不到请求的 URL /test/2.pdf。 就像您提到的 URL 上没有 PDF 一样,可能没有图片在你提到的地方。也许您正在尝试提取一个表单 XObject,假设它是一个图像 XObject。在人眼看来可能是图像,实际上可能是一堆线条和形状,而不是实际图像。
  • 我也收到 404,在此服务器上找不到请求的 URL /test/2.pdf。 @sameersingh 请检查您的链接
  • 由于机密性,我不得不删除 pdf 文件。抱歉...明天将放入示例 PDF 文件

标签: java itext pdfbox


【解决方案1】:

由于 OP 尚未将其陈旧的示例 PDF 链接替换为有效的链接,因此只能笼统地回答这个问题。

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

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

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

并且代码可能存储太少图像,因为还有其他地方可以放置图像:

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

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

编辑

根据 OP 的评论,他的图像提取问题已通过使用从this answer 到他的问题"pdfbox and itext extracting image with incorrect dpi" 的信息解决。特别指出适用于 OP sem 使用的 PDFBox 1.8.8 版的示例代码很重要。

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

【讨论】:

  • 您的回答stackoverflow.com/questions/28140311/… 解决了我的问题。我可以在上面编辑您的答案并将其标记为答案吗?
  • @sameersingh 我希望我的编辑正确地传达了解决的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
相关资源
最近更新 更多