如何在 Linux 中使用命令行将 PDF 转换为 JPG?

How to convert a PDF into JPG with command line in Linux?

在 Linux 上使用命令行将 PDF 转换为(单个)JPEG 的快速可靠方法有哪些?

您可以尝试 ImageMagick 的 convert 实用程序。

在 Ubuntu 上,您可以使用此命令安装它:

$ sudo apt-get install imagemagick

像这样使用convert

$ convert input.pdf output.jpg
# For good quality use these parameters
$ convert -density 300 -quality 100 in.pdf out.jpg

imagemagick 转换似乎做得很好:

convert file.pdf test.jpg

如果生成了多个文件:

convert test-0.jpg --append test-1.jpg ... --append one.jpg

生成单个文件,其中所有页面连接在一起。

对于我来说,在过去的 5 年里,我无法让 imagemagick 始终如一地(如果有的话)为我工作,我不知道为什么人们不断地一次又一次地推荐它。我今天刚刚在谷歌上搜索了如何将 PDF 转换为 JPEG,找到了这个答案,并尝试了 convert,但它对我来说根本不起作用:

损坏的命令(对我不起作用):

# BROKEN cmd
$ convert in.pdf out.jpg
convert-im6.q16: not authorized `in.pdf' @ error/constitute.c/ReadImage/412.
convert-im6.q16: no images defined `out.jpg' @ error/convert.c/ConvertImageCommand/3258.

(2022 年 2 月 24 日更新: so convert will work. See also , and my comments under this answer here。我仍然喜欢下面的 pdftoppm,但是好多了。)

然后,我记得我使用并写过另一个工具,所以我用谷歌搜索“linux convert pdf to jpg Gabriel Staples”,点击第一个匹配项,然后向下滚动到我的答案。这对我来说是完美的。这是基本的命令格式:

好的命令——改用这个:

# GOOD cmd
pdftoppm -jpeg -r 300 input.pdf output 

-jpeg设置输出图片格式为JPG,-r 300设置输出图片分辨率为300DPI,单词output将作为图片所有页面的前缀,它将被编号并放入您当前工作的目录中。但是,在我看来,更好的方法是先使用 mkdir -p images 创建一个“图像”目录,然后将输出设置为 images/pg 这样所有输出图像都将干净地放入您刚刚创建的 images 目录中,每个数字前面都有文件前缀 pg

因此,这是我最喜欢的命令:

  1. [每页生成约 1MB 大小的文件] 在 300 DPI 下以 .jpg 格式输出:

     mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg
    
  2. [每页生成约 2MB 大小的文件] 以 .jpg 格式输出 最高质量(最小压缩) 并且仍然是 300 DPI:

     mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
    
  3. 如果需要更高的分辨率,可以试试600DPI:

     mkdir -p images && pdftoppm -jpeg -r 600 mypdf.pdf images/pg
    
  4. ...或 1200 DPI:

     mkdir -p images && pdftoppm -jpeg -r 1200 mypdf.pdf images/pg
    

有关更多详细信息和选项,请参阅下面的参考资料。

参考文献:

  1. [我的回答]Convert PDF to image with high resolution
  2. [我的回答]https://askubuntu.com/questions/150100/extracting-embedded-images-from-a-pdf/1187844#1187844

关键字:ubuntu linux pdf转图片; pdf转jpeg; ptdf 转 tiff; pdf2图像; pdf2tiff; pdftoppm; pdf转图像; pdftotif; pdftopng; pdf2png

libvips 可以快速转换PDF -> JPEG。大多数 linux 发行版都有它,它在 macOS 上是自制软件,您可以从 libvips 站点下载 windows 二进制文件。

这将以默认 DPI (72) 将 PDF 呈现为 JPG:

vips copy somefile.pdf somefile.jpg

您可以使用 dpi 选项设置一些其他渲染分辨率,例如:

vips copy somefile.pdf[dpi=600] somefile.jpg

您可以这样挑选页面:

vips copy somefile.pdf[dpi=600,page=12] somefile.jpg

或者像这样从第三页开始渲染五个页面:

vips copy somefile.pdf[dpi=600,page=3,n=5] somefile.jpg

docs for pdfload有所有选项。

有了this benchmark image,我看到:

$ /usr/bin/time -f %M:%e convert -density 300 r8.pdf[3] x.jpg
276220:2.17
$ /usr/bin/time -f %M:%e pdftoppm -jpeg -r 300 -f 3 -l 3 r8.pdf x.jpg
91160:1.24
$ /usr/bin/time -f %M:%e vips copy r8.pdf[page=3,dpi=300] x.jpg
149572:0.53

所以 libvips 大约快 4 倍并且需要一半的内存,至少在这个测试中是这样。