如何识别pdf中图像的格式?

如何识别pdf中图像的格式?

我收到了一些包含图片的 pdf 文件。原始图片已丢失,因此我需要提取它们。我有 Adob​​e Acrobat Pro,因此我使用提取它们Advanced > Document Processing > Export All Images(有四个选项:jpeg、png、tiff、jpeg2000)。但是,我想以原始格式提取它们,而这显然不是 jpeg:我也测试了pdfimages.exe 来自 xpdf,概述如下,这给出了.ppm 文件,而不是 jpeg。

因此我尝试了 ImageMagick 的识别,它给了我以下信息:

identify images-000.ppm
images-000.ppm PPM 870x1181 870x1181+0+0 8-bit sRGB 3.082MB 0.000u 0:00.000

这是否表明它是嵌入的 .bmp?如何判断?我实际上希望 Acrobat 中有一个功能可以识别图像的格式,但我找不到它。

那么,识别 pdf 中图像的图像格式的最佳方法是什么?

(我更喜欢通过 Acrobat 提取,因为它具有批处理功能)。

答案1

据我所知,PDF 中嵌入的 Image XObject 不存储有关原始图像格式的任何信息。最多,如果它是嵌入的 JPEG,则可以按原样提取,但在所有其他情况下,您最终会得到需要转换的 PxM 图像。

答案2

该图片为便携式像素图文件格式。(见维基百科:Netpbm 格式了解详情)。

可以使用 netbmp 工具将这些转换为更现代的 bmp。
语法如下:ppmtobmp images-000.ppm > images-000.bmp

http://netpbm.sourceforge.net/是 netpbm 的主页。

文档中有多张图片吗?或者我们是否可以只在 PDF 中搜索带有 的行identify images-000.ppm,从该位置剪切文件并将其提供给 ppmtobmp?实现自动化应该不难。

答案3

pdfimage --list

pdfimage --list myfile.pdf可以在专栏中阅读恩科原始编码。
以下示例取自扫描仪生成的 PDF 文件,其中包含文本(无颜色)300BPI 分辨率图像,您可能会读到jbig2

page  num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
-------------------------------------------------------------------------------------------
   1    0 image    2340  1654  gray    1   1  jbig2  no        20  0   283   142 39.7K 8.4%
   2    1 image    2340  1654  gray    1   1  jbig2  no        25  0   283   142 41.5K 8.8%
   3    2 image    2340  1654  gray    1   1  jbig2  no        30  0   283   142 43.1K 9.1%
   4    3 image    2340  1654  gray    1   1  jbig2  no        35  0   283   142 46.9K  10%

在这种情况下,格式为jbig2; 您可以从手册(帮助)中阅读

-jbig2
将 JBIG2 格式的图像写入 JBIG2 文件,而不是默认格式。PDF 中的 JBIG2 数据属于嵌入类型。JBIG2 的嵌入类型有一个可选的单独文件,其中包含全局数据。嵌入数据以扩展名 .jb2e 写入,全局数据(如果可用)将以扩展名 .jb2g 写入相同的图像编号。这两个文件的内容与 PDF 中的 JBIG2 数据相同。

您可以使用命令提取它们

pdfimages myfile.pdf -jbig2 A  

笔记。 A是提取图像名称的基础。您将获得文件A-000.jb2eA-001.jb2e...当然,对于其他格式,您应该使用相对选项-png-tiff...

自动提取:-all选项

pdfimages MyFile.pdf -all B

-全部
以原始格式写入 JPEG、JPEG2000、JBIG2 和 CCITT 图像。CMYK 文件将写入 TIFF 文件。所有其他图像将写入 PNG 文件。这相当于指定选项 -png -tiff -j -jp2 -jbig2 -ccitt。

在这种情况下,B这是提取的图像名称的基础。

笔记。但是,您可能需要查看--list输出才能了解哪个 PNG 输出文件最初被编码为 PNG 以及哪个被转换为 PNG。

相关内容