pdfimages
pdfimages
是一种PDF图像提取工具,它将PDF文件中的图像以PPM、PBM、JPEG或JPEG 2000文件格式保存。
它是poppler-utils
软件包的一部分,您需要安装该软件包。
用法:pdfimages [选项] <PDF文件> <图像根目录>
-all
将以原始格式提取图像。-j
将图像提取为.jpg文件(注意:图像将被转换,通常大小比原始图像更大)示例1:以下代码从PDF文件中提取所有图像,并以它们的原始格式保存。
pdfimages -all in.pdf /tmp/out
示例2:下面的代码从PDF文件中提取所有的图片,并以JPEG格式保存它们。
pdfimages -j in.pdf /tmp/out
将从PDF文件in.pdf
中保存图像到文件/tmp/out-000.jpg
(或/tmp/out-000.pbm
;请参见下文),/tmp/out-001.jpg
等。
-j: Normally, all images are written as PBM (for monochrome images) or PPM for
non-monochrome images) files. With this option, images in DCT format are
saved as JPEG files. All non-DCT images are saved in PBM/PPM format as usual.
-all
选项将以原生格式写入JPEG、JPEG2000、JBIG2和CCITT图像。CMYK文件将被写入为TIFF文件。所有其他图像将被写入为PNG文件。这相当于指定了选项-png -tiff -j -jp2 -jbig2 -ccitt
。 - William-all
开关仅在最新的poppler-utils修订版中受支持。例如,如果您仍在使用12.04版本,您将无法访问此选项。 - Glutanimate-all
,可以选择PNM格式。它们是无损的,你可以对图像进行后处理,比如转换为PNG格式。 - Tomasz Gandor-all
开关(以及其他新的图像格式开关)是在poppler版本0.25.0(2013-12-11)中引入的 - 在Ubuntu中,自14.10(Utopic)开始可用。 - pabouk - Ukraine stay strongpdfimages
在处理矢量图像方面表现如何? - Léo Léopold Hertz 준영mkdir imgs && pdfimages -j mypdf.pdf imgs/pg
生成的是.pbm
格式的图像,而不是.jpg
格式的图像,并且它们的颜色都是反转的!背景是黑色,文字是白色,而不是白色背景黑色文字!你知道这是怎么回事吗?出错有两个方面:1)当我告诉它输出jpg格式时,它没有输出;2)它的颜色是反转的!pdfimages -v
显示版本号为v0.62.0。 - Gabriel Staplesbrew install poppler
命令安装poppler软件包时,将会安装pdfimages命令和其他精彩的poppler软件包组件。 - taiyodayo<image-root>
必须是一个绝对路径前缀(在此基础上会添加类似 -001.jpg
的内容以获取文件名)。如果您提供了一个相对的目录名、.
等,它将会静默退出而不执行任何操作。 - Tgrpdfimages
时遇到这个错误,它意味着什么?语法错误:无法获取字段数组<0a>
- Gabriel Staplespdftoppm
。使用pdftoppm -v
命令检查您的版本:
$ pdftoppm -v
pdftoppm version 0.62.0
Copyright 2005-2017 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLC
阅读使用 man pdftoppm
命令来查看其众多有用的功能。
如 man 页面所示,pdftoppm
允许你使用以下格式输出图像:
-png
参数)-jpeg
参数)-tiff
参数)它还允许你指定输出为单色图像(-mono
参数)或灰度图像(-gray
参数)(默认是彩色),指定页码,将输出图像放入文件夹中,裁剪和调整大小,指定分辨率,指定 JPEG 质量(介于0和100之间),指定 TIFF 压缩,仅处理偶数或奇数页等。它表现极佳,非常实用!
pdftoppm
将 PDF 转换为一组图像文件的一些示例:将ppm文件输出为pg-1.ppm、pg-2.ppm、pg-3.ppm等,默认分辨率为150 DPI的x和y:
pdftoppm mypdf.pdf pg
与第一种方式相同,只是将所有输出文件放在名为images的文件夹中:
mkdir -p images && pdftoppm mypdf.pdf images/pg
[我最喜欢的方式] 将图像以jpeg格式输出到名为"images"的文件夹中,分辨率为300 DPI的x和y,而不是默认的150 DPI。请注意,输出的图像采用了某个默认的jpeg压缩级别,每个文件占用大约0.1~1 MB的空间,假设使用标准的8.5" x 11" PDF页面。
mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg
将图像以jpeg格式输出到名为"images"的文件夹中,分辨率为300 DPI的x和y,并且使用最高质量的jpeg级别!quality
值可以从0到100。请参阅man页面。将质量设置为100,分辨率设置为300 DPI时,每个jpeg文件的存储空间预计会是上述方式的两倍,大小范围在~0.2~2MB之间,具体取决于内容,并假设使用8.5" x 11" PDF页面。
mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
以未压缩的.tif*格式输出300 DPI的x和y分辨率的图像。对于300 DPI和8.5" x 11" PDF页面,输出文件的大小约为25 MB。
mkdir -p images && pdftoppm -tiff -r 300 mypdf.pdf images/pg
pdftoppm
部分前加上time
命令。例如,这是一个将包含3页的PDF文件转换的输出结果:
$ mkdir -p images && time pdftoppm -tiff -r 300 testpdf.pdf images/pg
real 1m47.572s
user 1m45.675s
sys 0m1.536s
这意味着总实际时钟时间为1分47.572秒,或60 + ~48 = 108秒,即每页108/3 = 36秒。
pdfimages -all
一样。 - loved.by.Jesus结果质量非常高,但该软件并非免费。有一个演示版本,"允许您尝试所有功能",但会在输出文件上添加水印。坦率地说,我没有注意到生成的PDF中有任何水印。
pdfmod
(如To Do所建议的)提取带有图像的页面。
然后使用pdfcrop
,通过试错法来正确设置边距进行裁剪:
pdfcrop --margins "-15 -50 0 -140" extracted_page.pdf
LibreOffice Draw -> 右键单击图像 -> 保存
这样做很方便:
pdfimages
需要您浏览 1.png、2.png 等文件来找到所需的图片这种方法有效是因为 LibreOffice Draw 可以处理 PDF,如下所述:如何编辑 PDF?
您可以使用以下命令轻松从命令行界面打开 PDF:
libreoffice doc.pdf
在Ubuntu 22.04上测试过。