Imagemagick 安全策略似乎不允许我执行从 pdf 到 png 的转换。转换其他扩展似乎正在工作,只是不是来自 pdf。自安装以来,我没有更改任何 imagemagick 设置……如果操作系统很重要,我正在使用 Arch Linux。
user@machine $ convert -density 300 -depth 8 -quality 90 input.pdf output.png
convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert: no images defined `output.png' @ error/convert.c/ConvertImageCommand/3288.
原文由 T. Zack Crawford 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Ghostscript 修复之后,ImageMagick 的更改被保留,因为应用程序(尤其是 Web 应用程序)经常将任意用户提供的文件提供给 ImageMagick,并不总是正确地强制执行格式限制,而且,因为 Postscript(PDF 使用)是一个图灵完备的编程在沙箱中运行的语言,总是有可能在沙箱中出现另一个漏洞。
最好保留配置,以便 ImageMagick 拒绝处理需要运行程序的文件,而是在您 有意 允许 Postscript 渲染时直接调用 Ghostscript。
这将通过这样的 Ghostscript 命令来完成:
是的,这是 ImageMagic 调用的 GhostScript 命令的变体。 (参见 ImageMagick 的
delegates.xml
。-o
是-dBATCH -dNOPAUSE -sOutputFile=
的简写)重要的是 ImageMagick 保持锁定状态,您无需调用中间程序,并且您可以更好地控制渲染参数。 (例如,
-r600
是要渲染的 DPI,并且更改-sDEVICE=pngalpha
允许您直接渲染为所需的格式)