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.

当前回答

为斯特凡·赛德尔的答案补充一点。

好吧,至少在Ubuntu 20.04.2 LTS或其他版本中,你不能以GUI方式直接编辑policy.xml文件。这里有一个终端的方式来编辑它。

在终端中输入“-”打开policy.xml文件 sudo nano /etc/ imagemagick -6/policy.xml 现在,直接在终端编辑文件,查找 <policy domain="coder" rights="none" pattern="PDF" /> 如图所示,将none替换为read|write。按“Ctrl+X”退出。

其他回答

对于Arch Linux的我来说,我不得不这样评论:

  <policy domain="delegate" rights="none" pattern="gs" />

适用于Ubuntu 20.04

在<policymap>中添加这一行

<policy domain="module" rights="read|write" pattern="{PS,PDF,XPS}" />

注释这些行:

  <!--
  <policy domain="coder" rights="none" pattern="PS" />
  <policy domain="coder" rights="none" pattern="PS2" />
  <policy domain="coder" rights="none" pattern="PS3" />
  <policy domain="coder" rights="none" pattern="EPS" />
  <policy domain="coder" rights="none" pattern="PDF" />
  <policy domain="coder" rights="none" pattern="XPS" />
   -->

在我的情况下,我使用ubuntu 20.10和Imagick-7。

在我的/etc/ imagemagick -6/policy.xml文件中,我删除了以下几行, 重启我的机器,我就搞定了。

  <policy domain="coder" rights="none" pattern="PS" />
  <policy domain="coder" rights="none" pattern="PS2" />
  <policy domain="coder" rights="none" pattern="PS3" />
  <policy domain="coder" rights="none" pattern="EPS" />
  <policy domain="coder" rights="none" pattern="PDF" />
  <policy domain="coder" rights="none" pattern="XPS" />

作为@Richard Kiefer的一个非常活跃的评论,一个简单的修复是这样的

$ sudo sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xml

对于我的系统来说,Ubuntu 20.04不能工作,但是对于我的windows 10工作得很好。

我的主要工作是为视频添加字幕并生成输出mp4。

在玩弄了policy.xml文件之后,我发现了一个“潜在的”糟糕的解决方案。也就是删除policy。xml的所有内容,这对我来说很有效,我可以在视频中添加字幕。

请注意,这可能是一个临时的修复,直到你没有找到更好的解决方案。