首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Linux上快速pdf到jpg转换

在Linux上快速pdf到jpg转换
EN

Server Fault用户
提问于 2010-08-05 21:41:42
回答 4查看 18.6K关注 0票数 11

我目前正在使用ImageMagick转换PDF到JPEG光栅图像。这是痛苦的缓慢和消耗了大量的记忆。

我使用的命令是:

代码语言:javascript
运行
复制
convert -geometry 1024x768 -density 200 -colorspace RGB foo.pdf bar%02d.jpg

我想这很慢,因为它使用了Ghostscript。但是,在Linux机器上必须有更快的方法来做到这一点。

有人找到更好的解决办法了吗?

EN

回答 4

Server Fault用户

回答已采纳

发布于 2010-08-05 23:06:37

直接使用Ghostscript (而不是使用ImageMagick的convert命令间接调用Ghostscript )确实更快。它让你对转换参数有更多的控制。试一试

代码语言:javascript
运行
复制
gs \
   -sDEVICE=jpeg   \
   -o bar_%03d.jpg \
   -dJPEGQ=95      \
   -r600x600       \
   -g4960x7016     \
   foo.pdf

哪里

  • -o:确定输出path+filename (并保存-dBATCH -dNOPAUSE的使用)
  • -dJPEGQ:将JPEG质量设置为95%
  • -r:将分辨率设置为600 sets
  • -g:将图像大小设置为4960x7016px
  • -sDEVICE:将输出设置为JPEG

对于您来说,这个命令可能仍然要慢下来,并创建比预期更大的文件。为了获得更小的文件大小和更快的执行速度,请尝试这样做(这很可能接近convert命令行的输出质量):

代码语言:javascript
运行
复制
gs \
   -sDEVICE=jpeg   \
   -o bar_%03d_200dpi_q80.jpg \
   -dJPEGQ=80      \
   -r200x200       \
   -g1653x2339     \
   foo.pdf

甚至是

代码语言:javascript
运行
复制
gs \
   -sDEVICE=jpeg   \
   -o bar_%03d_default_a4.jpg \
   -sPAPERSIZE=a4 \
   foo.pdf

(这提供了72 web分辨率,通常对大多数屏幕和大多数web应用程序来说都足够好)。

票数 21
EN

Server Fault用户

发布于 2010-09-06 16:14:31

顺便说一下,ImageMagick速度慢得多的原因之一是它两次调用Ghostscript。它不会一次转换PDF => PNG,而是使用两个不同的步骤:

  • 它首先使用Ghostscript进行PDF => PostScript转换;
  • 然后,它使用Ghostscript进行PostScript => PNG转换。

您可以通过键入以下内容来了解ImageMagick的“委托”(ImageMagick使用的外部程序,如Ghostscript)的详细设置

代码语言:javascript
运行
复制
convert -list delegate

(在我的系统中,这是32个不同命令的列表。)现在,要查看将哪些命令转换为PNG,请使用以下命令:

代码语言:javascript
运行
复制
convert -list delegate | grep -i png

好吧,这是给Linux的。如果您在Windows上,请尝试如下:

代码语言:javascript
运行
复制
convert -list delegate | findstr /i png

你会发现IM只从PS或EPS输入产生PNG。那么IM是如何从你的PDF中获得PS的呢?简单:

代码语言:javascript
运行
复制
convert -list delegate | findstr /i PDF
convert -list delegate | grep -i PDF

阿!它使用Ghostscript进行PDF => PS转换,然后再次使用Ghostscript进行PS => PNG转换。可以工作,但如果您知道Ghostscript可以一次执行PDF => PNG,那么这不是最有效的方法。而且更快。质量要好得多。

关于IM通过Ghostscript委托处理PDF到图像的处理,您首先应该知道两件事:

  1. 默认情况下,如果不提供额外的参数,Ghostscript将输出72 don分辨率的图像。这就是为什么这里的人有时建议添加-density 600作为convert参数,该参数告诉Ghostscript使用600 dpi分辨率的图像输出。
  2. IM绕道两次调用Ghostscript来转换第一个PDF => PSPS => PNG是一个真正的错误。因为你从来没有赢过,而且在第一步就保持质量,但往往会失去一些质量。原因:
    • PDF可以处理透明,而PostScript不能。
    • PDF可以嵌入TrueType字体,而PostScript不能。etc.pp. (向相反方向的转换,PS => PDF,因此没有那么关键.)

这就是为什么我建议您一次转换您的PDF到PNG (或JPEG)直接使用Ghostscript。并使用Ghostscript的最新版本8.71 (即将发布: 9.00) .

票数 10
EN

Server Fault用户

发布于 2013-06-14 17:04:36

poppler中的pdftoppm程序也能够创建JPEG,对我来说,它的速度大约是上面描述的使用gs的两倍:

代码语言:javascript
运行
复制
pdftoppm -jpeg -r 300 foo.pdf foo.jpg
票数 6
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/167573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档