使用ImageMagick和/或GhostScript将多页PDF转换为多个JPG

时间:2012-06-12 18:55:06

标签: pdf imagemagick jpeg ghostscript

我正在尝试将多页PDF文件转换为一堆JPEG,一个用于PDF中的每个页面。我花了几个小时看着如何做到这一点,最后我发现我需要安装Ghostscript。所以我这样做了(来自这个网站:http://downloads.ghostscript.com/public/我使用了2012年2月8日最新的链接“ghostscript-9.05.tar.gz”。

然而,即使已安装/下载,我仍然无法做我想要的。我应该将此保存在特殊的地方,例如与ImageMagick在同一文件夹中吗?

到目前为止我所知道的是:

  • 在命令提示符中,我将工作目录更改为保存它的ImageMagick文件夹。

  • 然后我输入

    convert "<full file path to pdf>" "<full file path to jpg>"
    

接下来是一大堆错误。它始于:

    Unrecoverable error: rangecheck in.setuserparams
    Operand stack:

随后出现了一些难以理解的数字和大写字母。它结束于:

    While reading gs_lev2.ps:
    %%[ Error: invalidaccess; OffendingCommand: put ]%%

毋庸置疑,经过数小时和数小时的审议后,我认为我没有更接近于将这个PDF转换为JPG的看似简单的任务。

我想要的是如何使这项工作一步一步的说明。不要遗漏任何东西,无论它看起来多么“明显”(尤其是涉及ghostscript的任何东西)。几个月来,这一直困扰着我和我的主管。

为了进一步说明,我们使用的是Windows XP操作系统。最终的目的是在R(统计语言)中调用这些命令行,并在脚本中运行它。此外,我已经能够成功地将JPG转换为PNG格式,反之亦然,但PDF只是不起作用。

帮助!!!

2 个答案:

答案 0 :(得分:12)

你不需要ImageMagick,Ghostscript可以独自完成。 (如果您使用ImageMagick,它本身无法进行转换, HAS 将Ghostscript用作'委托'。)

试试这个直接使用Ghostscript:

 c:\path\to\gswin32c.exe ^
   -o page_%03d.jpg ^
   -sDEVICE=jpeg ^
    d:/path/to/input.pdf

这将为每个页面创建一个新的JPEG,文件名将增加为 page_001.jpg page_002.jpg ,...

注意,这也会创建使用jpeg设备的所有默认设置的JPEG(其中一个最重要的设置是分辨率为72dpi)。

如果您的图片需要更高(或更低的分辨率),您可以添加其他选项:

 gswin32c.exe ^
   -o page_%03d.jpg ^
   -sDEVICE=jpeg ^
   -r300 ^
   -dJPEGQ=100 ^
    d:/path/to/input.pdf

-r300将分辨率设置为300dpi,-dJPEGQ=100设置最高的JPEG质量级别(Ghostscript的默认值为75)。

还请注意: JPEG不适合用于表现具有锐边和高对比度且高质量的形状(例如,您通常会看到黑白色带有小字符的文字页面。

(有损)JPEG压缩方法 针对连续色调 图片+照片进行了优化,而不是针对线条图形。因此,对于主要包含文本的PostScript或PDF输入页面,它是次优的。这里,即使输入非常好,JPEG格式的有损压缩也会导致较差的输出质量。有关此主题的更多详细信息,另请参阅the JPEG FAQ

通过选择PNG作为输出格式(PNG使用无损压缩),您可以获得更好的图像输出:

 gswin32c.exe ^
   -o page_%03d.png ^
   -sDEVICE=png16m ^
   -r150 ^
    d:/path/to/input.pdf

png16m设备产生24位RGB颜色。您可以将此交换为pnggray(用于纯灰度输出),png256(用于8位颜色),png16(4位颜色),pngmono(黑色和仅限白色)或pngmonod(替代黑白模块)。

答案 1 :(得分:-3)

有许多SaaS服务也会为您做到这一点。想到了HyPDF和Blitline。