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

时间:2017-03-29 06:25:59

标签: linux pdf converter jpeg

使用linux命令行将PDF转换为(单个)JPEG的快速可靠方法是什么?

4 个答案:

答案 0 :(得分:11)

在我的生命中,过去5年里,我无法让 imagemagick 为我持续工作(如果有的话),而且我不知道为什么人们会不断推荐它,并且再次。我今天刚刚在Google上搜索了如何将PDF转换为JPEG,找到了答案,并尝试了convert,但对我来说根本不起作用:

$ 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.

然后,我记得我使用并编写了另一种工具,因此我用Google搜索“ linux convert pdf to jpg Gabriel Staples”,单击了第一个匹配项,然后向下滚动到我的答案。这是最适合我的东西。这是基本的命令格式:

pdftoppm -jpeg -r 300 input.pdf output 

-jpeg将输出图像格式设置为JPG,-r 300将输出图像分辨率设置为300 DPI,单词output将成为图像所有页面的前缀。将被编号并放置在您当前使用的当前目录中。但是,我认为更好的方法是先使用mkdir -p images创建一个“ images”目录,然后将输出设置为{{1} },以便将所有输出图像干净地放置在您刚创建的images/pg目录中,并在每个数字的前面加上文件前缀images

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

  1. [每pg产生约1MB大小的文件]以 .jpg 格式以 300 DPI 输出:

    pg
  2. [每pg产生约2MB大小的文件]以 .jpg 格式以最高质量(最低压缩)输出,并且仍为 300 DPI

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

     mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
    
  4. ...或1200 DPI:

     mkdir -p images && pdftoppm -jpeg -r 600 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

答案 1 :(得分:9)

您可以尝试imagemagick存储库,然后尝试convert实用程序:

$ sudo apt-get install imagemagick
$ convert input.pdf output.jpg

另外,其他语法依赖于linux发行版。

答案 2 :(得分:3)

imagemagick转换似乎做得很好:

convert file.pdf test.jpg

如果生成了多个文件:

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

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

答案 3 :(得分:3)

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倍,并且需要一半的内存。