有关的:

有关的:

在开始使用 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允许您以以下格式输出图像:

  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
    
  2. 与 1 相同,但将所有输出文件放在名为图片

    mkdir -p images && pdftoppm mypdf.pdf images/pg
    
  3. [我的最爱] 将图像输出到“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
    
  4. 将图像输出到“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
    
  5. 输出未压缩.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 秒。

有关的:

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

答案4

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

对我们有用的软件是主PDF编辑器

以下是流程

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

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

相关内容