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.

推荐答案

在修复Ghostscript之后,ImageMagick的更改被保留下来,因为应用程序(尤其是web应用程序)经常将用户提供的任意文件提供给ImageMagick,并不总是正确地执行格式限制,而且,由于Postscript(PDF使用的)是一种运行在沙箱中的图灵完整编程语言,沙箱里总有另一个洞的可能.

最好让ImageMagick不处理需要运行程序的文件,而是在希望允许Postscript渲染时直接调用Ghostscript.

这将由如下的Ghostscript命令完成:

gs -dSAFER -r600 -sDEVICE=pngalpha -o foo.png myfile.pdf

是的,这是GhostScript命令ImageMagic调用的变体.(参见ImageMagick的delegates.xml.-o-dBATCH -dNOPAUSE -sOutputFile=的缩写)

重要的是,ImageMagick保持锁定状态,不需要调用中间程序,并且可以更好地控制渲染参数.(例如,-r600是要渲染的DPI,更改-sDEVICE=pngalpha可以直接渲染到所需的格式)

Linux相关问答推荐

为什么Read()和cin.get()对输出缓冲区的影响不同?

AWK打印到文件正在追加,而不是覆盖

从另一个文件中的大文件中查找行的最快方法

将特定列转换为行

使用 sed 从文本文件中删除特定字符串

sed 根据文件中的条件进行多次替换

使用 awk 将 csv 拆分为带有标题的多个文件

Stripping linux 共享库

如何将执行的shell命令的结果存储在python的变量中?

在使用文件时截断文件 (Linux)

-zxvf 在 tar -zxvf <文件名> 中是什么意思?

如何获取WiFi网络接口的MAC地址?

在 VIM 中搜索和替换导致尾随字符

execv() 和 fork() 的时间浪费

比较linux中两个未排序的列表,列出第二个文件中的唯一性

如何搜索文件并将它们压缩到一个 zip 文件中

以原子方式移动目录

使用 C++ 代码在 Linux 中清除终端

区分 Windows 和类 Unix 系统的 Makefile

区分 Java 线程和 OS 线程?