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不能工作,但是对于我的windows 10工作得很好。

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

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

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

其他回答

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

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

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

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

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

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

我使用nextcloud时遇到了这个问题,它无法为pdf文件创建缩略图。

然而,这些建议的步骤都不能解决我的问题。

最终我找到了原因:接受的答案确实有效,但我必须在编辑policy.xml文件后重新启动php-fpm:

 sudo systemctl restart php7.2-fpm.service

正如某些评论中指出的,您需要在/etc/ImageMagick-7/policy.xml中编辑ImageMagick的策略。更具体地说,在撰写本文时(05/01/2019),在ArchLinux中,以下一行是未注释的:

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

只要在<!——和——>来注释它,PDF转换应该再次工作。

谢谢@tanius和其他人的详细回答!

我只想补充以下几点。

策略文件policy.xml的路径可能会随着ImageMagick的版本而改变,如/etc/ImageMagick-6/policy.xml或/etc/ImageMagick-7/policy.xml等。所以要相应地更新它。 由于防止或允许某些文件类型转换的策略是一种安全措施,您可能希望在任务完成后重置对policy.xml的更改,以便如果攻击者可以访问系统,则不存在相应攻击的可能性!

快乐的快速文件转换同时!