我正在使用pdfimages -j bar.pdf /tmp/image从PDF中提取图像.我的目标是让它们在添加时处于原始状态.所以如果它是.tif我想得到一个.tif,如果它是一个jpg我想得到一个.jpg.我提取的所有东西都不断增加.ppm.
是否有可能以原始格式获取图像或者ppm是我唯一的选择?
更新:我想要这样做的主要目的是检查文档中包含的所有图像的DPI,或者检查它们是否是矢量.
通过查看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用语称为'图像',根据定义,它总是一个光栅图像.没有"矢量图像"这样的东西.即使转换为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.