如何使用ImageMagick将多页PDF文件的第一页转换为JPEG?

79

如果我想从多页PDF的第一页中执行ImageMagick的convert并获得JPEG格式,应该怎么做?

4个回答

122

如果您正在使用convert命令行,您可以使用以下参数执行它:

convert  source.pdf[0]  output.jpeg
请注意,ImageMagick的页面计数是从0开始的。因此,[0]表示“第1页”。要选择第4页,您需要使用[3]
这种语法不仅适用于PDF输入,还适用于其他多页或多帧格式,例如多页TIFF或动画多帧GIF和PNG。

感谢 Kurt 的编辑。不过,我的 ImageMagick 版本从 1 开始计数 :) 不过可能是遗留问题。 - Arkadiusz 'flies' Rzadkowolski
13
顺便提一下,你也可以选择“范围”,例如使用 source.pdf[0-3]。提示:ranges 在此处指的是一段连续的页码序列。 - caw
对我来说,如果我使用[1],那么ImageMagick和GraphicsMagick会在第二页,因此它从0开始计数。 ImageMagick版本为7.0.7-33,GraphicsMagick版本为1.3.29。 - Golar Ramblar
也可以选择多个页面 -- [3,2,4] -- 参考文献: https://imagemagick.org/script/command-line-processing.php#input 中的“选择帧”部分。 - user202729
使用ImageMagick 7.0.10-62版本时,如果不在源文件周围添加引号,则无法正常工作:convert 'source.pdf[0]' output.jpeg - Denis Bitouzé

16

不要使用ImageMagick,使用Ghostscript。ImageMagick最终还是会调用Ghostscript来完成工作...

gs -sDEVICE=jpeg -sOutputFile=<output-filename> -dLastPage=1 <input filename>

你还可以将设备更改为jpegcmyk(用于CMYK输出)或jpeggray(用于灰度输出),你可以使用-r更改分辨率,使用-dFirstPage-dLastPage提取连续范围的页面等。


1
要导出为PNG,请使用以下命令:-sDEVICE=png16m -r300 -dDownScaleFactor=4 - OrangeSalty
2
提前阻止其他人的错误:如果你选择使用ghostscript,它在缩放图像时无法保持纵横比。因此,如果你想制作PDF的缩略图...这是行不通的。 - mlissner
1
Ghostscript完全能够保持宽高比。但是,如果您使用-g开关(指定像素)FitPage选项,则它会将页面适合指定数量的像素。显然,这不会保持宽高比。当然,您也可以避免这种情况,但那需要您自己进行一些编程。 - KenS

6
进一步回答@KenS的问题,以下是更详细的内容,特别是针对Windows用户。
您可以在此处下载Windows版本的GhostScript:http://www.ghostscript.com/download/gsdnld.html。可执行文件的默认安装路径为“C:\Program Files\gs\gs910\bin\gswin64c.exe”。
上述命令行参数在Windows中也是正确的,但以下是我发现有用的其他一些参数:
gswin64c.exe -dNOPAUSE -dBATCH -r96 -sDEVICE=jpeg -sOutputFile="<out-file.jpg>"
             -dFirstPage=1 -dLastPage=1 "<input-file.pdf>"

我还创建了一个批处理文件,将其包装得很好,并将其发布到我的 GitHub 帐户上。它可以更轻松地为多个 .pdf 文件创建缩略图。请查看pdf2jpg.bat


我并不是一个Windows Shell脚本专家,所以也许我在你(非常!)的脚本中错过了这个,但你可以在OutputFile中使用格式说明符。因此,如果您想生成一系列页面,您可以说-sOutputFile=out%d.jpg,然后您将得到多个名为out1.jpg、out2.jpg...的文件。如果您使用%s和分隔设备,则%s将被该版面的油墨名称替换。我不确定这是否有任何帮助。 - KenS
1
这个答案可以通过解释你添加的参数及其作用来改进。 - But those new buttons though..

0
%d和其他一些限定符用于使用Ghostscript对输出进行编号,在最新版本中无法像旧版本那样工作。

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接