如何将PDF转换为图像?

Dee*_*nky 465 pdf convert software-recommendation

我需要将 PDF 页面转换为图像。我的文件中有一个带有一些文本的背景图像,当我将其另存为图像时,只有背景图像会被保存。

是否有任何可用的软件可以将完整的页面转换为图像?

enz*_*tib 616

您可以使用pdftoppm将 PDF 转换为 PNG:

pdftoppm input.pdf outputname -png
Run Code Online (Sandbox Code Playgroud)

这将使用格式输出 PDF 中的每个页面outputname-01.png01作为页面的索引。

转换 PDF 的单页

pdftoppm input.pdf outputname -png -f {page} -singlefile
Run Code Online (Sandbox Code Playgroud)

更改{page}为页码。它的索引为 1,因此-f 1将是第一页。

指定转换图像的分辨率

此命令的默认分辨率为 150 DPI。增加它会导致更大的文件大小和更多的细节。

要提高转换后的 PDF 的分辨率,请添加选项-rx {resolution}-ry {resolution}. 例如:

pdftoppm input.pdf outputname -png -rx 300 -ry 300
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢。质量比使用 imagemagick 或 graphicsmagick 好得多! (32认同)
  • 这很好!但是当您想将 x 和 y 分辨率设置为相同的值时,编写 `-r 300` 比单独指定 x 和 y 分辨率要容易一些。 (31认同)
  • pdftoppm 比转换快得多 (13认同)
  • 这真的比 imagemagick 好得多。在我的情况下,Imagemagick 实际上以一种意想不到的方式改变了颜色! (7认同)
  • 我使用 pdftoppm 比使用 imagemagick 取得了更大的成功。 (5认同)
  • 工作正常。要获得此软件,您可以在 macos 上使用 `brew install poppler`。 (3认同)

Bin*_*ife 337

  1. 安装imagemagick

  2. 使用 PDF 所在的终端:

据此:

  • 可以选择 PNG、JPG 或(几乎)任何其他图像格式。

  • -density xxx将 DPI 设置为xxx(通常为 150 和 300)。

  • -quality xxx将压缩设置xxx为 PNG、JPG 和 MIFF 文件格式(100 表示不压缩)。

  • [666]将仅将第 667 页转换为 PNG(从零开始编号[0],第一页也是如此)。

  • 所有其他选项(如修剪、灰度等)都可以在Image Magic网站上查看

  • 这个答案质量更高 http://askubuntu.com/a/50180/11929 (51认同)
  • 已禁用在 imagemagick 中解析 PDF - https://bugs.archlinux.org/task/59778 - 可以通过编辑 `/etc/ImageMagick-7/policy.xml` 文件并从 `< 中删除 `PDF` 来手动启用它policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />` (9认同)
  • 您可以通过添加“-密度 300”参数来更改密度 (6认同)
  • 那么有人可以确认指定密度使其与此处的其他答案“一样好”吗?同样作为对追随者的注意,ImageMagick 调用“ghostscript”来实际从 pdf 转换为 png 例如:`gs -q NOPROMPT ...-sDEVICE=pngalpha -r150x150 -sOutputFile=/var/tmp/Yf%d -f /var/tmp/L -f/var/tmp/Fic1` 并且如果你得到 `convert: no images defined output.png` 这意味着你没有安装 ghostscript... (4认同)
  • 原样的答案确实有效,但分辨率很差。因此,目前不是有用的答案。也许如果 convert 有一些可以指定的参数,这可能会改变。 (2认同)
  • 我得到 `convert-im6.q16: no images defined `output.png' @ error/convert.c/ConvertImageCommand/3258`。我知道@rogerdpack 已经提到过,但我已经安装了 ghostscript,我可以使用 `gs` (2认同)
  • 您可能需要添加“-background white -alpha off”来删除透明度。 (2认同)

小智 30

IIRC GIMP 能够使用 PDF,即将它们转换为图像。因此,如果您想立即编辑图像 - GIMP 是您的朋友。


Anm*_*ggi 17

当前接受的答案可以完成这项工作,但会导致输出尺寸更大遭受质量损失。

此处给出的答案中的方法产生的输出与输入的大小相当,并且不会受到质量损失的影响。

TLDR - 使用pdfimagespdfimages -j input.pdf output

引用链接的答案:

不清楚您所说的“质量损失”是什么意思。这可能意味着很多不同的事情。你能贴一些样本来说明吗?也许从质量差和质量好的版本中删除相同的部分(作为 PNG 以避免进一步的质量损失)。

也许您需要使用-density以更高的 dpi 进行转换:

convert -density 300 file.pdf page_%04d.jpg
Run Code Online (Sandbox Code Playgroud)

(您可以预先添加-units PixelsPerInch-units PixelsPerCentimeter在必要时。我的副本默认为 ppi。)

更新: 正如您所指出的,gscan2pdf(您使用它的方式)只是pdfimages(来自poppler的包装器)。 pdfimages 不会做与convert给定 PDF 作为输入时相同的事情。

convert 获取 PDF,以某种分辨率呈现它,并将生成的位图用作源图像。

pdfimages查看嵌入位图图像的 PDF 并将每个图像导出到一个文件。它只是忽略 PDF 中的任何文本或矢量绘图命令。

因此,如果您拥有的 PDF 只是一系列位图的包装器,pdfimages那么在提取它们时会做得更好,因为它会为您提供原始大小的原始数据。您可能还想使用-j选项pdfimages,因为 PDF 可以包含原始 JPEG 数据。默认情况下,pdfimages将所有内容转换为 PNM 格式,并且转换 JPEG > PPM > JPEG 是一个有损过程。

所以,试试

pdfimages -j file.pdf page
Run Code Online (Sandbox Code Playgroud)

您可能需要也可能不需要使用convertto.jpg步骤(取决于 PDF 使用的位图格式)。

我在用一系列 JPEG 图像制作的 PDF 上尝试了这个命令。提取的 JPEG 与源图像逐字节相同。你无法获得比这更高的质量。

  • 如果 PDF 是由 Illustrator 或 Acrobat 之类的工具创建的可打印 PDF,这是 OPs 问题的不正确解决方案,因为 pdfimages 仅从 PDF 中提取*图像*,但不会展平每个整个页面并将整个页面导出到图片。 (4认同)

Vit*_*hKa 11

如果您的 pdf 已扫描,则图像已作为 pdf 的一部分存储。您只需要使用以下命令提取它们pdfimages

pdfimages my-file.pdf prefix 
Run Code Online (Sandbox Code Playgroud)

  • 这是扫描 pdf 的完美解决方案,因为您可以使用一个命令提取原始 jpg,而无需进一步重新压缩。 (5认同)
  • 如果 PDF 是由 Illustrator 或 Acrobat 之类的工具创建的可打印 PDF,这是 OPs 问题的不正确解决方案,因为 pdfimages 仅从 PDF 中提取*图像*,但不会展平每个整个页面并将整个页面导出到图片。 (2认同)

IQA*_*eas 5

如果您只想将 PDF 的特定页面转换为 PNG,您可以像这样pdftk通过管道convert如上所述):

pdftk document.pdf cat 12 output - | convert - document-page-12.png
Run Code Online (Sandbox Code Playgroud)