Imagemagick将PDF转换为JPEG:FailedToExecuteCommand“”gswin32c.exe“/ PDFDelegateFailed

时间:2015-09-08 19:50:52

标签: imagemagick image-conversion

我有需要转换为图片的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.

更新:
在SO社区帮我解决了这个问题之后,我整理了一个小工具来批量转换图像。希望它对某人有帮助。 https://github.com/MattDolan/ImageConverter

5 个答案:

答案 0 :(得分:35)

您需要安装Ghostscript才能使用ImageMagick栅格化矢量文件(PDF,EPS,PS等)。在进行这些操作时,IM会向Ghostscript发出声明(如果在IM调用中使用 -verbose 标记,则可以看到它)。您也可以单独使用Ghostscript来栅格化矢量文件。

答案 1 :(得分:23)

由于您实际上必须安装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

答案 2 :(得分:2)

现在在文档中。 https://github.com/dlemstra/Magick.NET/blob/master/Documentation/ConvertPDF.md

  

您需要先安装最新版本的GhostScript,然后才能使用Magick.NET转换pdf。

     

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

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

答案 3 :(得分:0)

从此处安装GhostScript GNU Affero通用公共许可证。

答案 4 :(得分:0)

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