imagemagick-不允许转换

imagemagick-不允许转换

我有多张*.jpeg图片想要合并成一个*.pdf文件,如下所示:

convert Blatt1.jpg Blatt2.jpg Blatt3.jpg Blatt4.jpg out.pdf

我被提示以下异常:

convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408

是什么原因导致了这个问题?我该如何解决它?我做了一些研究,但没有找到有关这个特定问题的任何信息。

答案1

ImageMagick 有一些安全策略,出于安全原因禁用某些权限。请参阅此答案底部的原因。
您必须编辑配置文件才能重新启用所需的操作。

使用您喜欢的文本编辑器打开/etc/ImageMagick-6/policy.xml,找到该行<policy domain="coder" rights="none" pattern="PDF" />并替换"none""read|write"

# Open the file 
sudo nano /etc/ImageMagick-6/policy.xml

# find and edit the line
<policy domain="coder" rights="none" pattern="PDF" />
# to :
<policy domain="coder" rights="read|write" pattern="PDF" />

关于 ImageMagick 安全策略
制定限制政策是为了防止来自第三方软件的未知漏洞,例如这里用于 PDF 文件的 Ghostscript。请务必更新 Ghostscript。

答案2

由于已知有安全隐患的错误,ImageMagick 中禁用 pdf 转换convert

我建议你解决这个问题,

  • 任何一个
    • 将图片导入LibreOfffice并保存文档。
    • 导出为 pdf来自 LibreOffice。
  • 或者
    • 安装img2pdf来自存储库“universe”

      sudo apt install img2pdf
      

      并运行以下命令行来创建一个pdf文件,其中包含与问题相对应的几张图片或其他类似情况的图片,

      img2pdf --out out.pdf Blatt1.jpg Blatt2.jpg Blatt3.jpg Blatt4.jpg
      
    • 手册中有关于微调的详细信息man img2pdf


编辑:现在有一个解决方案,ghostscript 在我的计算机中已经足够新了,而且我认为在大多数最新的 Linux 操作系统中:

附加信息:请确保您已安装 GhostScript >= 9.26。之后,您可以尝试使用 policy.xml https://suse.com/support/kb/doc/?id=000019384

因此,我们可以在接受的答案中进行编辑,然后再次开始使用 ghostscript 通过 ImageMagick 转换为 pdf convert

相关内容