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

使用ImageMagick和/或GhostScript将多页PDF转换为多个JPG,pdf,imagemagick,jpeg,ghostscript,Pdf,Imagemagick,Jpeg,Ghostscript,我正在尝试将一个多页的PDF文件转换成一组JPEG,PDF中的每一页对应一个。我花了好几个小时寻找如何做到这一点,最终我发现我需要安装Ghostscript。所以我这样做了(从这个网站上:我使用了2012年2月8日最新的链接“ghostscript-9.05.tar.gz”) 然而,即使安装/下载了此文件,我仍然无法完成我想要的任务。我应该把它保存在某个特别的地方,比如和ImageMagick放在同一个文件夹中吗 到目前为止,我发现的是: 在命令提示符下,我将工作目录更改为ImageMagic

我正在尝试将一个多页的PDF文件转换成一组JPEG,PDF中的每一页对应一个。我花了好几个小时寻找如何做到这一点,最终我发现我需要安装Ghostscript。所以我这样做了(从这个网站上:我使用了2012年2月8日最新的链接“ghostscript-9.05.tar.gz”)

然而,即使安装/下载了此文件,我仍然无法完成我想要的任务。我应该把它保存在某个特别的地方,比如和ImageMagick放在同一个文件夹中吗

到目前为止,我发现的是:

  • 在命令提示符下,我将工作目录更改为ImageMagick文件夹,并将其保存在该文件夹中

  • 然后我打字

    convert "<full file path to pdf>" "<full file path to jpg>"
    
    接着是一些不可读的数字和大写字母。最后是:

        While reading gs_lev2.ps:
        %%[ Error: invalidaccess; OffendingCommand: put ]%%
    
    不用说,经过数小时的深思熟虑,我认为我再也无法完成将PDF转换成JPG这一看似简单的任务了

    我想要的是一些关于如何使这项工作一步一步的指示。不要漏掉任何东西,不管它看起来多么“明显”(尤其是任何涉及鬼魂脚本的东西)。这几个月来一直困扰着我和我的主管

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


    救命啊

    这不需要ImageMagick,Ghostscript可以单独完成。(如果使用ImageMagick,它本身无法进行转换,它必须使用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格式的有损压缩将导致输出质量较差,即使输入非常好。有关此主题的更多详细信息,请参见

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


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

    也有许多SaaS服务可以为您提供此功能。我想到了海波和闪电线

    (删除了R标记;您甚至还不能在命令行中执行。)您的路径上是否有
    convert
    可执行文件?我查阅了GS文档,发现了关于如何使用它进行转换的完全不同的说明。它适用于单页PDF吗?如果安装pdftk,可以键入
    pdftk input.pdf burst
    来创建
    input_0001.pdf
    input_0002.pdf
    ,等等。然后,您可以尝试为每个页面调用
    convert input_0001.pdf input_0001.jpg
    。这仍然给出相同的错误信息吗?这个答案正确吗?DWin,我有一个convert可执行文件。它在我的ImageMagick文件夹中。使用它,我可以在JPG/PNG之间进行转换。但我根本不能从PDF进行任何转换(甚至连一个页面都不能,但我可以从JPG转换为PDF,只是不能从PDF)。从我读过的其他地方来看,我觉得我应该使用GhostScript,但我不知道如何实现它。我先安装GS,然后Imagemagick在测试前重新启动电脑,它就工作了。你能用Imagemagick做其他事情来证明它是有效的吗?谢谢你的回复!当我尝试键入您给我的命令提示符时,它会显示“gswin32.exe-o不被识别为内部或外部命令、可操作或批处理文件”。我是否应该在命令提示符中键入?或者我应该有一个不同的目录吗?您似乎缺少一个空格:
    gswin32.exe-o…
    ,而不是
    .exe-o
    @Stephan Robert Kuban:不,您没有键入我给您的内容。我的示例在
    .exe
    之后,在
    -o
    之前有一个空格--此外,每行末尾的
    ^
    意味着您可以将所有行(包括
    ^
    )作为一个块复制到命令提示符中并执行它。它是“DOS提示符”和批处理文件的行延续符号。或者,您可以在一行中键入所有内容(但请跳过所有
    ^
    字符!)。当然,我假设您知道如何从命令提示符运行命令并正确设置PATH环境变量(您的PATH中安装了
    gswin32c.exe
    )。否则,只需使用如下完整路径:
    e:\path\to\gswin32c.exe
    …非常感谢。我终于让它工作了。我真的很感谢你的帮助。非常感谢你。
     gswin32c.exe ^
       -o page_%03d.jpg ^
       -sDEVICE=jpeg ^
       -r300 ^
       -dJPEGQ=100 ^
        d:/path/to/input.pdf
    
     gswin32c.exe ^
       -o page_%03d.png ^
       -sDEVICE=png16m ^
       -r150 ^
        d:/path/to/input.pdf