pdfbox和itext无法提取图像

时间:2015-01-25 20:53:49

标签: java itext pdfbox

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

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

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

是他们的错误,代码可能是我忘记处理的事情,或者他们的错误与pdf一起出现了什么?

1 个答案:

答案 0 :(得分:1)

由于OP还没有用工作版替换他陈旧的PDF样本链接,因此问题只能用一般术语来解答。

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

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

  1. 一方面,它可能根本没有在文件中使用,或者至少在任何地方都看不到,只是从之前的一些PDF编辑会话中遗留下来。
  2. 另一方面,多个页面可能有一个共享资源字典,其中包含所有这些页面上的所有图像;在这种情况下,OP的代码会导出许多重复项。
  3. 代码可能存储太少图片,因为还有其他可放置图片的地方:

    1. 图像数据可以直接包含在页面内容流中,也就是内联图像。
    2. 使用从页面内容中使用的自己的资源(表单xobjects,模式,类型3字体字形)构造可以提供自己的图像资源或内联图像。
    3. 注释,例如AcroForm表单字段,也可能有自己的外观流和自己的资源,因此,也可能提供自己的图像资源或内联图像。
    4. XFA表单也可以提供自己的图像。
    5. 只要OP提供代表性样本文件,就可以确定他错过的图像类型,并概述特定的解决方案。

      修改

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

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