convert /home/bill/TempScan/*.png myfile.pdf
给出错误信息:
convert-im6.q16: not authorized `myfile.pdf' @ error/constitute.c/WriteImage/1037.
任何帮助,将不胜感激!
convert /home/bill/TempScan/*.png myfile.pdf
给出错误信息:
convert-im6.q16: not authorized `myfile.pdf' @ error/constitute.c/WriteImage/1037.
任何帮助,将不胜感激!
convert
是一个强大的命令行工具来转换图形。它对 PDF 的支持由 Ghostscript 提供。由于版本 9.24 之前的 Ghostscript 存在重大安全漏洞,convert
因此作为权宜之计已阻止对 PDF 文件的使用。自 Ghostscript 9.24 版以来,该问题已得到修复。虽然 Ghostscript 版本在所有受支持的 Ubuntu 版本中都更新为安全版本(此时从 Ubuntu 16.04 开始),但使用限制可能仍然存在。策略文件是
/etc/ImageMagick-6/policy.xml
. 您可以以 root 用户身份编辑该文件以更改策略。消除所有使用限制
对于不运行网络服务器的桌面用户,简单地消除这些限制可能就足够了。为此,可以删除文件,但最好通过重命名“将文件移出”。使用此命令,您正在重命名文件。结果,所有策略都被取消,但您仍然可以在需要时恢复:
sudo mv /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xmlout
要恢复到原来的情况,只需重命名回原来的名称:
sudo mv /etc/ImageMagick-6/policy.xmlout /etc/ImageMagick-6/policy.xml
请注意,将策略文件移出会降低系统安全性。
仅消除合并成 PDF 的限制
对于您的具体情况,gene_wood 在评论中指出可以通过注释掉一行来选择性地放宽处理 PDF 文件的政策:
<policy domain="coder" rights="none" pattern="PDF" />
编辑文件,并在此行周围放置注释标记以禁用此规则:
<!-- <policy domain="coder" rights="none" pattern="PDF" /> -->
如果您不想消除所有安全策略,这就是要走的路。
正如钒发布的那样,您必须更改 ImageMagick 政策。
并更换线路
和
如果您只想允许写入,而不允许读取,您也可以擦除
read|
上面一行中的部分。顺便说一句,对于那些对 ImageMagick 漏洞感兴趣的人,这里有 2 个信息链接:
我不会重新放松 ImageMagick 的安全限制,而是使用img2pdf。
它是专门为这种用例设计的。
这应该是等效的命令:
如果由于某种原因您不能这样做(例如,无法安装新软件包),另一种无损转换的潜在途径是将
convert
您的图像转换为多页 TIFF 文件,然后tiff2pdf
从 libtiff 工具中使用。abu_bua 的解决方案对我来说真的很有效。为方便起见,在一个命令行中使用
sed
:这是一种更方便的方法,可以自动获取 policy.xml 文件的位置并对其全部执行搜索/替换: