在Linux上快速PDF到JPG转换想要

我目前使用Imagemagick将PDF转换为JPEG光栅图像。 这是痛苦的缓慢,耗尽了大量的内存。

我使用的命令是:

convert -geometry 1024x768 -density 200 -colorspace RGB foo.pdf bar%02d.jpg 

我猜这是慢的,因为它使用ghostscript。 但是在Linux上必须有一个更快的方法来做到这一点。

有没有人find更好的解决scheme?

欢呼垫子

    直接使用Ghostscript(而不是使用ImageMagick的间接调用Ghostscript的convert命令)确实更快。 它可以让您更好地控制转换参数。 尝试

     gs \ -sDEVICE=jpeg \ -o bar_%03d.jpg \ -dJPEGQ=95 \ -r600x600 \ -g4960x7016 \ foo.pdf 

    哪里

    • -o :确定输出path+文件名(并保存-dBATCH -dNOPAUSE
    • -dJPEGQ :将JPEG质量设置为95%
    • -r :将分辨率设置为600dpi
    • -g :将图像大小设置为4960x7016px
    • -sDEVICE :将输出设置为JPEG

    这个命令可能还是会让你放慢速度,并且创build大于预期的文件。 对于较小的文件大小和更快的执行尝试这(这可能接近你的convert命令行的输出质量):

     gs \ -sDEVICE=jpeg \ -o bar_%03d_200dpi_q80.jpg \ -dJPEGQ=80 \ -r200x200 \ -g1653x2339 \ foo.pdf 

    甚至

     gs \ -sDEVICE=jpeg \ -o bar_%03d_default_a4.jpg \ -sPAPERSIZE=a4 \ foo.pdf 

    (它可以提供72dpi的分辨率,对于大多数屏幕和大多数networking应用程序而言,通常都足够了)。

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

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

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

     convert -list delegate 

    (在我的系统上有32个不同的命令列表。)现在看看哪些命令用于转换为PNG,使用这个:

     convert -list delegate | grep -i png 

    好的,这是针对Linux的。 如果你在Windows上,试试这个:

     convert -list delegate | findstr /i png 

    你会发现IM只能从PS或EPSinput中产生PNG。 那么IM如何从你的PDF中获得(E)PS? 简单:

     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将以72dpi分辨率输出图像。 这就是为什么有时候这里的人会build议添加-density 600作为convert参数,告诉Ghostscript使用600 dpi的分辨率来处理图像输出。
    2. 即时消息调用Ghostscript两次转换首先PDF => PS然后PS => PNG是一个真正的错误。 因为你从来没有赢得过,而且在第一步保持质量,但是经常放松一些。 原因:
      • PDF可以处理透明胶片,PostScript不能。
      • PDF可以embeddedTrueType字体,PostScript不能。 etc.pp.
        (转换方向相反, PS => PDF ,因此不是那么重要….)

    这就是为什么我build议你直接使用Ghostscript将你的PDF转换成PNG(或JPEG)。 并使用Ghostscript的最新版本8.71 (即将发布:9.00)…

    poppler软件包中的程序pdftoppm也可以创buildJPEG,对于我来说,它大约是上述使用gs两倍。

     pdftoppm -jpeg -r 300 foo.pdf foo.jpg 

    根据我的经验, MuPDF比Ghostscript快很多。 这是一个更新的项目,没有太多的遗憾。 尝试,如果它适合你的用例!

    mudraw -w 1024 -h 768 -r 200 -c rgb -o bar%d.png foo.pdf

    如果你有一个较老的linux发行版,并且从版本库中安装了mupdf-tools,那么mudraw可能仍然被称为pdfdraw

    然后你必须使用例如imagemagick将png转换为jpeg。 但它仍然会比Ghostscript更快。