如何以原始格式从PDF中提取图像

Web*_*net 5 php pdf xpdf

我正在使用pdfimages -j bar.pdf /tmp/image从PDF中提取图像.我的目标是让它们在添加时处于原始状态.所以如果它是.tif我想得到一个.tif,如果它是一个jpg我想得到一个.jpg.我提取的所有东西都不断增加.ppm.

是否有可能以原始格式获取图像或者ppm是我唯一的选择?

更新:我想要这样做的主要目的是检查文档中包含的所有图像的DPI,或者检查它们是否是矢量.

pli*_*nth 7

通过查看PDF中的图像,您无法(可靠地)了解源图像文件格式.例如,TIFF图像可以压缩(在我的头顶)无,RLE,CCITT(耦合变化),LZW,Flate,Jpeg.如果使用DCT(jpeg)压缩PDF中的图像,您如何确定源是TIFF还是Jpeg?如果用Flate压缩,你如何区分TIFF和PNG?此外,它是生成决定压缩的PDF的软件,因此我可以使用Flate压缩的TIFF图像并使用JPEG2000或CCITT压缩图像将其编码为PDF并使用Jbig2或jpeg图像对其进行压缩,将其缩小为8位调色板图像并使用Flate进行压缩.

TL; DR你不知道.

  • PDF图像本身没有分辨率.图像由具有宽度和高度的2D样本集定义.有效的分辨率是特定图像在任何给定页面上的放置方式以及该页面如何呈现给用户.所以我可以在一个1英寸的正方形中放置一个96乘96的图像并具有96 dpi,或者我可以将它放在一个2英寸的正方形中,它将是48 dpi. (3认同)
  • 您可以根据要打印的尺寸来获取图像的尺寸和猜测. (2认同)

Kur*_*fle 7

首先,PDF用语称为'图像',根据定义,它总是一个光栅图像.没有"矢量图像"这样的东西.即使转换为PDF的原始文件包含矢量图形,转换器程序也可以决定将它们包含为光栅图像.如果你提取它,你将不会得到你的矢量图形,而是一个光栅图像.保存在PDF内的光栅图形无法通过提取pdfimages.

其次,您不需要使用实际提取图像pdfimages.如果您使用的是'Poppler'分支的当前版本(晚于v0.20.2),pdfimages您可以使用该-list参数获取特定PDF页面范围内所有图像的列表:

pdfimages -list -f 7 -l 8  ct-magazin-14-2012.pdf

  page   num  type   width height color comp bpc  enc interp  object ID
  ---------------------------------------------------------------------
     7     0 image     581   838  rgb     3   8  jpeg   no        39  0
     7     1 image       4     4  rgb     3   8  image  no        40  0
     7     2 image     314   332  rgb     3   8  jpx    no        44  0
     7     3 image     358   430  rgb     3   8  jpx    no        45  0
     7     4 image       4     4  rgb     3   8  image  no        46  0
     7     5 image       4     4  rgb     3   8  image  no        47  0
     7     6 image       4     6  rgb     3   8  image  no        48  0
     7     7 image     596   462  rgb     3   8  jpx    no        49  0
     7     8 image       4     6  rgb     3   8  image  no        50  0
     7     9 image       4     4  rgb     3   8  image  no        51  0
     7    10 image       8    10  rgb     3   8  image  no        41  0
     7    11 image       6     6  rgb     3   8  image  no        42  0
     7    12 image     113    27  rgb     3   8  jpx    no        43  0
     8    13 image     582   839  gray    1   8  jpeg   no      2080  0
     8    14 image     344   364  gray    1   8  jpx    no      2079  0

注意再次:这个版本pdfimages是poppler的一个(从XPDF的一个人没有(还)支持这一新功能?).

如您所见,它列出了图像的相应宽度和高度.然而,这还没有给你任何有关DPI的线索.如果将大型光栅图像挤压到PDF页面上的小空间中,则DPI值将非常高.(这是plinth对自己答案的评论也强调......)

为了计算DPI,您必须测量图像在页面上显示的宽度/高度(您可以使用Acrobat/Reader中的某个工具执行此操作),然后使用相应的信息来自以上输出来计算DPI.