使用linux命令行将PDF转换为(单个)JPEG的快速可靠方法是什么?
答案 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
。
因此,这是我最喜欢的命令:
[每pg产生约1MB大小的文件]以 .jpg 格式以 300 DPI 输出:
pg
[每pg产生约2MB大小的文件]以 .jpg 格式以最高质量(最低压缩)输出,并且仍为 300 DPI :
mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg
如果需要更高的分辨率,可以尝试600 DPI:
mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
...或1200 DPI:
mkdir -p images && pdftoppm -jpeg -r 600 mypdf.pdf images/pg
有关更多详细信息和选项,请参见下面的参考。
答案 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倍,并且需要一半的内存。