从 PDF 中提取嵌入的图像

1kb*_*1kb 211 pdf software-recommendation

在开始使用 Ubuntu 之前,我使用 Nitro PDF 阅读器自动从 PDF 文件中提取图像。是否有适用于 Linux 的 PDF 阅读器可以执行此操作?

我希望能够比拍摄快照更快/更容易地提取图像。

pl1*_*1nk 245

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
Run Code Online (Sandbox Code Playgroud)

示例 2:以下从 PDF 文件中提取所有图像,并将它们保存为 JPEG 格式。

pdfimages -j in.pdf /tmp/out
Run Code Online (Sandbox Code Playgroud)

将 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.
Run Code Online (Sandbox Code Playgroud)

  • @Christian 来自手册页`-all 以原始格式写入 JPEG、JPEG2000、JBIG2 和 CCITT 图像。CMYK 文件被写入为 TIFF 文件。所有其他图像都写为 PNG 文件。这相当于指定选项 -png -tiff -j -jp2 -jbig2 -ccitt。` (38认同)
  • 有一个以原始格式提取图像的解决方案会很好。重新编码 JPEG 并不是很理想。 (12认同)
  • 请注意,`-all` 开关仅在最近的 poppler-utils 修订版中受支持。例如,如果您仍然使用 12.04,您将无法访问此选项 (2认同)
  • @Christian,使用`$ pdfimages -list &lt;PDF-file&gt;` 检查“enc”列中的原始格式,因此您不必将图像重新编码为另一种格式。 (2认同)

Gre*_*lin 33

为此,我经常使用 Inkscape。加载页面,并删除所有其他内容。优点是您可以在 SVG 中获取矢量图像并根据您的选择对其进行修改。

  • 某些 PDF 只能通过 Inkscape 内部导入正确导入(poppler/cairo 导入或 pdfimage 无法正确解析)。导入后,将图像复制并粘贴到新文件并调整页面大小以选择 https://graphicdesign.stackexchange.com/a/21638/95041 (2认同)

Gab*_*les 8

请注意,此问题专门询问“从 PDF 中提取嵌入的图像”。关键字是提取!这意味着:我有一个 PDF;它有一些嵌入其中的图像;我怎么把它们弄出来!?如果这是您的问题,请pdfimages用作@pl1nk states主要答案

如何将 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
Run Code Online (Sandbox Code Playgroud)

阅读手册页man pdftoppm以查看其所有有用的功能。

支持的输出图像格式:

如手册页所示,pdftoppm允许您以以下格式输出图像:

  1. PPM(默认)
  2. PNG(带-png
  3. JPEG(带-jpeg
  4. TIFF(带-tiff

它还允许您指定单色 ( -mono) 或灰度 ( -gray) 输出(默认为彩色)、指定页码、将输出图像放入文件夹、裁剪和调整大小、指定分辨率、指定 jpeg 质量(0 到 100 )、指定 TIFF 压缩、仅处理偶数页或奇数页等。它工作得非常好,非常有用!

以下是如何使用pdftoppm将 PDF 转换为一堆图像文件的一些示例:

  1. 将 ppm 文件输出为pg-1.ppmpg-2.ppmpg-3.ppm等,默认为 150 DPI x 和 y 分辨率:

    pdftoppm mypdf.pdf pg
    
    Run Code Online (Sandbox Code Playgroud)
  2. 与 1 相同,除了将所有输出文件放在名为images的文件夹中:

    mkdir -p images && pdftoppm mypdf.pdf images/pg
    
    Run Code Online (Sandbox Code Playgroud)
  3. [我的最爱]以300 DPI x & y 分辨率而不是默认的 150 DPI 将图像以jpeg格式输出到“图像”文件夹中。请注意,输出图像采用某些默认 jpeg 压缩级别,对于 300 DPI 分辨率并假设标准 8.5" x 11" PDF 页面,每个文件将占用大约 0.1~1 MB 的空间。

    mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将图像以jpeg格式输出到“images”文件夹中,分辨率为300 DPI x & y,尽可能以最高质量的jpeg 级别!quality值的范围可以从 0 到 100。请参阅手册页。质量设置为 100,分辨率设置为 300 DPI,预计每个 jpeg 文件占用2 倍的存储空间,大小范围为 ~0.2~2MB,具体取决于内容,并假设为 8.5" x 11" PDF 页面。

    mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
    
    Run Code Online (Sandbox Code Playgroud)
  5. 以 **300 DPI x & y 分辨率输出未压缩的.tif* 图像。对于 300 DPI 和 8.5" x 11" PDF 页面,输出文件大小约为 25 MB。

    mkdir -p images && pdftoppm -tiff -r 300 mypdf.pdf images/pg
    
    Run Code Online (Sandbox Code Playgroud)

请注意,在我的慢速计算机上以 300 DPI 输出上述每个页面需要 15~45 秒,这意味着例如,对于 300 DPI jpeg 图像,100 pg PDF 可能需要长达 100 x 45/60 = 75 分钟左右的时间。

要计算该过程在您的计算机上花费的时间,只需将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
Run Code Online (Sandbox Code Playgroud)

这意味着它在现实生活中的总时钟时间为 1m47.572s,或 60 + ~48 = 108 秒,即每页 108/3 = 36 秒。

有关的:

  1. [如何将 PDF 转换为可搜索的 PDF w/ pdf2searchablepdf]如何将 pdf 转换为文本可搜索的 pdf?
  2. 如何将pdf转换为文本可搜索的pdf?
  3. 如何将PDF转换为图像?
  4. /sf/ask/462350451/#58795684
  5. https://www.linuxuprising.com/2019/03/how-to-convert-pdf-to-image-png-jpeg.html
  6. 如何以编程方式确定 PDF 文件中图像的 DPI?


To *_* Do 6

你也可以试试pdfmod。它是一个 GUI(图形界面),可以提取图像并进行其他基本的 pdf 操作。


Pan*_*kis 5

我有一个双列 PDF 文件,其中包含使用 LaTeX 创建的嵌入图像,其中原始图像作为 EPS 提供。我尝试了基于 的建议解决方案pdfimages,但不幸的是,它没有返回任何图像。然后我尝试使用 Inkscape,但它生成的 SVG 图像失真,我也没有运气将它们导出为 EPS。

为我们工作的软件是MasterPdfEditor

这是程序

  • 使用 Master PDF Editor 打开您的文件
  • 使用编辑工具(Alt+1)选择需要提取的图片
  • 复制图窗 (Ctrl+C)
  • 单击图像周围的虚线框并查看右侧边栏(对象检查器)并单击“Geomerty”。在那里你可以看到你选择的大小
  • 创建一个新文件 (Ctrl+N)。它会提示您提供页面大小。提供图像的确切大小并创建新文件
  • 现在有点棘手:粘贴图像(Ctrl + V)。图像可能不会显示在新文件中。使用箭头移动它,直到您能够追踪它。
  • 使用箭头在新页面中居中图像
  • 另存为 PDF

结果质量非常高,但该软件不是免费的。有一个演示版本“允许您尝试所有功能”,但带有“在输出文件上添加水印”。坦率地说,我没有注意到生成的 PDF 中有任何水印。

  • @Fabby 感谢您的反馈。我不知道。askubuntu.com上有这样的规定吗?但是,一旦您打开*Ubuntu 软件中心*,您就会收到有关非免费应用程序的建议。 (4认同)
  • 这是 Ask Ubuntu ......我们喜欢这里的开源,而你的解决方案是一个闭源商业解决方案......这比已经投票的答案更好吗?(平均时间-1) (2认同)
  • 它对某些人有效,这已经足够了。不要成为纳粹……我不知道“我们”是谁。你可以只为自己说话。+1为答案 (2认同)