gm.exe 转换:此图像格式没有解码委托 (input.pdf)

gm.exe convert: No decode delegate for this image format (input.pdf)

尝试在 windows 服务器中使用图形魔术版本 1.3.36 时

magick.exe -density 168x168 -quality 76 -compress JPEG "input.pdf" "output.png"

在 GM 中,我还安装了 GhostScript 并使用了以下内容:

gm.exe convert "input.pdf" -density 168X168 -quality 76 -compress JPEG "output.jpeg"

收到错误 gm.exe convert: No decode delegate for this image format (input.pdf)

我哪里出错了?

正如其中一位维护者所述here

This is a result of a problem with the procedure that I used to build GraphicsMagick 1.3.36 for Windows. I should have re-configured the project from scratch but instead I used existing project files

我回滚到版本 1.3.35,它现在可以正常工作了。

gm.exe convert: No decode delegate for this image format (input.pdf)

这通常意味着 Imagemagick 无法找到 Ghostscript。 添加 GhostScript 二进制文件-“gswin64c.exe”应该可以。 但是,另一种方法是修改 delegates.mgk 文件以包含 PSDelegate 的二进制文件。

默认情况下,Delegates.mgk 条目看起来有点像这样-

<delegate decode="pdf" encode="eps" mode="bi" command='"@PSDelegate@" -q -dBATCH -dSAFER -dMaxBitmap=50000000 -dNOPAUSE -sDEVICE=@GSEPSDevice@ "-sOutputFile=%o" -- "%i" -c quit' />

注意命令中的@PSDelegate@环境变量, 只需找到所有 @PSDelegate@ 并将其替换为路径 gswin64c.

注意:Ghostscript bin 目录应该存在于系统路径中才能正常工作。 瞧!

我刚刚花了 4.5 个小时来解决这个问题。我正在使用依赖于 graphicsmagick 的 npm 模块 pdf2pic。我能够通过使用 graphicsmagick 版本 1.3.35 和 ghostscript 版本 9.52 来让它工作。我曾尝试使用这两个程序的更高版本的各种组合,但收到“没有此图像格式的解码委托”错误。还需要将 graphicsmagick 添加到“路径”,但不需要使用 ghostscript