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.
在 Ghostscript 修复后,ImageMagick 的更改被保留,因为应用程序(尤其是 Web 应用程序)经常将任意用户提供的文件提供给 ImageMagick,并不总是正确地强制执行格式限制,并且由于 Postscript(PDF 使用)是一个图灵完备的编程在沙箱中运行的语言,总是有可能在沙箱中出现另一个漏洞。
最好保留配置,以便 ImageMagick 拒绝处理需要运行程序的文件,而是在您 有意 允许 Postscript 渲染时直接调用 Ghostscript。
这将通过这样的 Ghostscript 命令来完成:
gs -dSAFER -r600 -sDEVICE=pngalpha -o foo.png myfile.pdf
是的,这是 ImageMagic 调用的 GhostScript 命令的变体。(参见 ImageMagick 的delegates.xml.-o是 的简写-dBATCH -dNOPAUSE -sOutputFile=)
delegates.xml
-o
-dBATCH -dNOPAUSE -sOutputFile=
重要的是 ImageMagick 保持锁定状态,您无需调用中间程序,并且您可以更好地控制渲染参数。(例如-r600,要渲染的 DPI 是否-sDEVICE=pngalpha允许您直接渲染为所需的格式)
-r600
-sDEVICE=pngalpha