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
是一个强大的命令行工具,用于转换图形。它通过Ghostscript提供对PDF的支持。由于Ghostscript在9.24版本之前存在一个重大的安全漏洞,因此使用convert
处理PDF文件时被阻止。该问题已在Ghostscript 9.24版本中修复。尽管Ghostscript版本在所有支持的Ubuntu版本(从Ubuntu 16.04开始)都已更新为安全版本,但使用限制可能仍然存在。
策略文件位于/etc/ImageMagick-6/policy.xml
。您可以以root用户身份编辑该文件以更改策略。
消除所有使用限制
对于不运行Web服务器的桌面用户来说,简单地消除这些限制可能已经足够了。为此,您可以删除该文件,但最好的做法是将其“移出”而不是直接删除。使用以下命令,您可以重命名该文件。结果是解除了所有策略限制,但如果需要,您仍然可以恢复:
sudo mv /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xmlout
<policy domain="coder" rights="none" pattern="PDF" />
<!-- <policy domain="coder" rights="none" pattern="PDF" /> -->
policy.xml
文件,并找到了防止我将png
文件组合成pdf
的行,并将其注释掉。如果您想保留其他规则但允许使用pdf
工作,则该行为<policy domain="coder" rights="none" pattern="PDF" />
。 - gene_woodsudo vim /etc/ImageMagick-6/policy.xml
并替换该行
<policy domain="coder" rights="none" pattern="PDF" />
使用
<policy domain="coder" rights="read|write" pattern="PDF" />
如果你只想允许写入,而不是阅读,你也可以删除上面一行中的 read|
部分。
img2pdf --out myfile.pdf /home/bill/TempScan/*.png
sed
来实现:sudo sed -i 's/rights="none" pattern="PDF"/rights="read|write" pattern="PDF"/g' /etc/ImageMagick-6/policy.xml
for file in `convert -list policy | grep "Path:" | grep -v built | sed 's/Path: \(.*\)/\1/g'`; do sed -i 's/domain="coder" rights="none" pattern="PDF"/domain="coder" rights="read|write" pattern="PDF"/g' $file; done
-write
命令。请在imagemagick论坛的https://legacy.imagemagick.org/discourse-server/viewtopic.php?t=36460中查看详细信息。 - Avatar