Imagemagick将PDF转换为JPEG:无法执行命令“gswin32c.exe”/ PDFDelegateFailed

71

我有一些PDF文件需要转换成图片。我已经安装了Imagemagick。我有一个名为a.pdf的PDF文件,可以在C:\Convert\文件夹中打开(它并未损坏)。

我正在尝试从命令行中运行以下命令:

C:\Convert>convert a.pdf a.jpg

而我正在收到这个错误。

convert.exe: FailedToExecuteCommand `"gswin32c.exe" -q -dQUIET -dSAFER -dBATCH -
dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEV
ICE=pamcmyk32" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72" -dUseCIEColor
"-sOutputFile=C:/Users/MNALDO~1.COR/AppData/Local/Temp/magick-3704HYGOqqIK5rhI%d
" "-fC:/Users//MNALDO~1.COR/AppData/Local/Temp/magick-3704vK6aHo7Ju9WO" "-fC:/Use
rs//MNALDO~1.COR/AppData/Local/Temp/magick-3704GQSF9kK8WAw6"' (The system cannot
find the file specified.
) @ error/delegate.c/ExternalDelegateCommand/480.
convert.exe: PDFDelegateFailed `The system cannot find the file specified.
' @ error/pdf.c/ReadPDFImage/797.
convert.exe: no images defined `a.jpg' @ error/convert.c/ConvertImageCommand/323
0.

更新:
在 Stack Overflow 的社区帮助下,我制作了一个小工具来批量转换图像。希望能对某些人有所帮助。 https://github.com/MattDolan/ImageConverter


2
您需要安装Ghostscript才能使用Imagemagick将矢量文件(如PDF,EPS,PS等)转换为光栅化图像。 - WWW
imagemagick convert命令是要求安装该软件还是有其他替代软件可以用来进行此转换? - MatthewD
1
两者都需要。Imagemagick需要它来进行矢量文件光栅化,但实际上它基本上是通过外壳调用Ghostscript来完成的。事实上,整个Ghostscript命令行在您的问题中列出(从“gswin32c.exe”开始,直到“(The system cannot”之前结束)。 - WWW
5个回答

94

要使用ImageMagick将矢量文件(PDF、EPS、PS等)转换为点阵图像,需要安装Ghostscript。在进行这些操作时,IM会调用Ghostscript(如果您在IM命令中使用-verbose标记,则可以看到它)。您也可以单独使用Ghostscript将矢量文件转换为点阵图像。


1
我安装了Ghostscript,它完美地运行了。此外,在这里找到了convert命令的所有选项示例。https://dev59.com/sWw15IYBdhLWcg3wcrZC - MatthewD
2
有没有一种可移植的安装Ghostscript的方法?我在闪存驱动器上有一个便携式的ImageMagick安装程序,我也想有一种将PDF转换为JPG的便携方式。 - 9a3eedi
1
在Windows上,它只是一个.dll文件,所以应该是可行的。只需确保您的文件存在于$PATH中,并确保文件名为“gs.exe”,而不是诸如“gswin64.exe”之类的名称。 - John

44

既然您必须安装Ghostscript才能执行此操作,为什么不完全放弃ImageMagick呢?它只是将命令转发到Ghostscript,没有添加任何价值,只会花费更长的时间处理(并在此过程中将所有内容加载到RAM中)。

安装GhostScript并运行以下命令:

gswin64c.exe -dNOPAUSE -sDEVICE=jpeg -r200 -dJPEGQ=60 -sOutputFile=foo-%03d.jpg foo.pdf -dBATCH

这与运行以下代码相同且更快:

convert -quality 60 -density 200 foo.pdf foo-%03d.jpg

1
请注意,Ghostscript 是根据 AGPL 而不是 LGPL 许可证授权的。Ghostscript 公司(Artifex Inc)有律师认为通过命令行调用 Ghostscript 构成衍生作品... 在使用 Ghostscript 于任何产品或服务前,请咨询您公司的法律团队! - Dai
坚持使用ImageMagick的一个原因是,使用一行命令可以轻松进行批量转换。GS不支持批处理模式,所以现在你必须编写一个批处理脚本文件。 - Joel Wigton

3

现在文档中已经有了。 https://github.com/dlemstra/Magick.NET/blob/main/docs/ConvertPDF.md

在使用Magick.NET转换pdf之前,您需要安装最新版本的GhostScript。

确保您只安装与平台相同的GhostScript版本。如果您使用64位版本的Magick.NET,则还应安装64位版本的GhostScript。您可以将32位版本与64位版本一起使用,但如果保持平台相同,则会获得更好的性能。

这是一个包装器:https://archive.codeplex.com/?p=ghostscriptnet


两个链接都无法访问了 :-( - Jan

1
我发现我已经安装了GhostScript,但是GhostScript无法执行,因为它需要额外的库。通过在命令行上输入“gs”,我可以看到缺少哪些库。

0

从这里安装GhostScript GNU Affero通用公共许可证。


1
你的链接已经失效。 - CarLaTeX
我修复了链接,现在它又可以使用了。(暂时的) - undefined

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