Imagemagick 将 PDF 转换为 JPEG:FailedToExecuteCommand `"gswin32c.exe" / PDFDelegateFailed

Posted

技术标签:

【中文标题】Imagemagick 将 PDF 转换为 JPEG:FailedToExecuteCommand `"gswin32c.exe" / PDFDelegateFailed【英文标题】:Imagemagick Convert PDF to JPEG: FailedToExecuteCommand `"gswin32c.exe" / PDFDelegateFailed 【发布时间】:2015-12-04 15:06:19 【问题描述】:

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

【问题讨论】:

您需要安装 Ghostscript 才能使用 Imagemagick 对矢量文件(如 PDF、EPS、PS 等)进行光栅化。 imagemagick convert 命令是在寻找要安装的,还是用于进行这种转换的替代软件? 两者。 Imagemagick 需要它来进行矢量文件光栅化,但它基本上是由 Ghostscript 来完成的。事实上,整个 Ghostscript 命令行都列在您的问题中(从“gswin32c.exe”开始并在“(系统无法”之前结束。) 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

您的链接已损坏【参考方案3】:

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

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

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

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

【讨论】:

【参考方案4】:

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

【讨论】:

请注意,Ghostscript 是根据 AGPL 而不是 LGPL 获得许可的,并且 Ghostscript 公司 (Artifex Inc) 的律师考虑通过命令行调用 Ghostscript 以构成衍生作品...咨询贵公司的法律团队在任何产品或服务中使用 Ghostscript 之前!【参考方案5】:

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

【讨论】:

我安装了 ghostscript,它运行良好。还在这里找到了转换命令的所有选项的示例。 ***.com/questions/6605006/… 有没有办法便携安装 Ghostscript?我在闪存驱动器上安装了便携式 ImageMagick,我还希望有一种将 PDF 转换为 JPG 的便携式方式。 在 Windows 上它只是一个 .dll 文件,所以应该可以。只是,确保你的文件存在于 $PATH 中,并确保文件名为 gs.exe 而不是 gswin64.exe

以上是关于Imagemagick 将 PDF 转换为 JPEG:FailedToExecuteCommand `"gswin32c.exe" / PDFDelegateFailed的主要内容,如果未能解决你的问题,请参考以下文章

使用 ImageMagick 将 pdf 转换为 png 时出错

Imagick 无法将 PDF 转换为 JPEG,但 ImageMagick 可以

无法使用 ImageMagick 和 GhostScript 将 PDF 转换为 JPG

使用 ImageMagick 将 PNG 文件转换为 PDF 时出现粗糙的边缘

将 ImageMagick 命令转换为 GraphicsMagick

imagemagick 将 RGB PNG 转换为 CMYK PDF