在开始使用 Ubuntu 之前,我使用 Nitro PDF 阅读器自动从 PDF 文件中提取图像。有没有可以做到这一点的 Linux PDF 阅读器?
我希望能够比拍摄快照更快/更轻松地提取图像。
答案1
使用pdfimages
pdfimages
是一个 PDF 图像提取工具,它将 PDF 文件中的图像保存为 PPM、PBM、JPEG 或 JPEG 2000 文件格式。
它是软件包的一部分poppler-utils
,您需要安装它。
用法: pdfimages [options] <PDF-file> <image-root>
- 选项
-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
等等。
pdfimages手册页解释:
-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.
答案2
我经常使用 Inkscape 来实现这一点。加载页面,然后删除所有其他内容。优点是您可以获取 SVG 中的矢量图像并根据需要对其进行修改。
答案3
请注意,这个问题专门询问“从 PDF 中提取嵌入图像”。关键字是提取!这意味着:我有一个 PDF;它有一些图像嵌入其中;我该如何把它们弄出来!?如果这是你的问题,请pdfimages
使用@pl1nk 的主要回答指出。
如何将 PDF 转换为一堆图像:
然而,许多人在谷歌上搜索并找到了这个问题(包括我自己),他们正在寻找一个略有不同的问题,即直到几个小时后才意识到差异。所以,如果你正在寻找“如何转变将 PDF 转换成一堆图像”相反,这与“如何从 PDF 中提取图像”不同,方法如下:使用pdftoppm
。这里的“PPM”是图像格式,所以这只是意味着“PDF 转图像”。它有效非常好,尽管对于现代多核系统来说速度较慢,因为它是一个单线程应用程序,没有利用多核的处理能力。
Ubuntu 18.04 附带pdftoppm
版本 0.62.0。使用以下命令检查您的版本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
了解其所有有用的功能。
支持的输出图像格式:
如手册页所示,pdftoppm
允许您以以下格式输出图像:
- PPM(默认)
- PNG(带有
-png
) - JPEG(带
-jpeg
) - TIFF(带
-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
与 1 相同,但将所有输出文件放在名为图片:
mkdir -p images && pdftoppm mypdf.pdf images/pg
[我的最爱] 将图像输出到“images”文件夹中JPEG格式格式为300DPI x 和 y 分辨率,而不是默认的 150 DPI。请注意,输出图像处于某个默认的 jpeg 压缩级别,对于 300 DPI 分辨率,每个文件将占用大约 0.1~1 MB 的空间,并假设标准 8.5" x 11" PDF 页面。
mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg
将图像输出到“images”文件夹中JPEG格式格式为300DPI x 和 y 分辨率,最好的质量jpeg 级别可能!
quality
值的范围为 0 到 100。请参阅手册页。将质量设置为 100,将分辨率设置为 300 DPI,预计每个 jpeg 文件将占用存储量为上述的 2 倍,大小根据内容不同,从~0.2~2MB 不等,假设 PDF 页面为 8.5" x 11"。mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
输出未压缩.tif* 图像包含 **300DPI x 和 y 分辨率。300 DPI 和 8.5" x 11" PDF 页面的输出文件大小约为 25 MB。
mkdir -p images && pdftoppm -tiff -r 300 mypdf.pdf images/pg
请注意,在我的慢速计算机上,以 300 DPI 输出上述每页需要 15~45 秒,这意味着 100 pg 的 PDF 可能需要 100 x 45/60 =75分钟例如,对于 300 DPI jpeg 图像来说大约如此。
要计算该过程在计算机上需要多长时间,只需将命令time
放在上述任何命令部分的前面即可pdftoppm
。例如:这是转换包含 3 页的 PDF 的输出:
$ mkdir -p images && time pdftoppm -tiff -r 300 testpdf.pdf images/pg
real 1m47.572s
user 1m45.675s
sys 0m1.536s
这意味着它实际耗时 1m47.572s,即 60 + ~48 = 108 秒,也就是 108/3 =每页 36 秒。
有关的:
- [如何将 PDF 转换为可搜索的 PDF
pdf2searchablepdf
]如何将 pdf 转换为可进行文本搜索的 pdf? - 如何将 pdf 转换为可进行文本搜索的 pdf?
- 如何将 PDF 转换为图像?
- https://stackoverflow.com/questions/6605006/convert-pdf-to-image-with-high-resolution/58795684#58795684
- https://www.linuxuprising.com/2019/03/how-to-convert-pdf-to-image-png-jpeg.html
- 如何以编程方式确定 PDF 文件中图像的 DPI?
答案4
我有一个双列 PDF 文件,其中嵌入了使用 LaTeX 创建的图像,原始图像以 EPS 格式提供。我尝试了基于 的建议解决方案pdfimages
,但不幸的是,它没有返回任何图像。然后我尝试使用 Inkscape,但它生成的 SVG 图像被扭曲了,我也无法将它们导出为 EPS。
对我们有用的软件是主PDF编辑器。
以下是流程
- 使用 Master PDF Editor 打开文件
- 使用编辑工具(Alt+1)选择需要提取的图像
- 复制图形(Ctrl+C)
- 单击图像周围的虚线框,查看右侧边栏(对象检查器),然后单击“几何”。在那里,您可以看到选择的大小
- 创建一个新文件(Ctrl+N)。它会提示你提供页面大小。提供图像的准确尺寸并创建新文件
- 现在有点棘手:粘贴图像(Ctrl+V)。图像可能不会显示在新文件中。使用箭头移动它,直到您能够跟踪它。
- 使用箭头将图像置于新页面的中心
- 另存为 PDF
输出结果质量非常高,但该软件并非免费。有一个演示版本“允许您试用所有功能”,但附带“在输出文件上添加水印”。坦率地说,我没有在生成的 PDF 中看到任何水印。