今天一个偶然的情况,想把一页pdf转换为jpg图片,上传到网页。于是就用来自ImageMagick工具的convert命令,然后意外的是这次竟然出错了——无法转换。之前都是好好的呀!百般查询之下,终于找到解决方案,遂整理如下。

操作系统:elementary OS 0.4.1 Loki(64-bit)。
Shell:Bash / Zsh。
软件:ImageMagick (具体是convert命令)。
软件:Vim。
问题出现
在Terminal(终端)中输入命令,报错,如下图所示,
conver xxxxxx.pdf xxxxxx.jpg
convert: not authorized `xxxxxx.pdf' @ error/constitute.c/ReadImage/412.
convert: no images defined `xxxxxx.jpg' @ error/convert.c/ConvertImageCommand/3210.

刚刚才upgrade过的,应该不是软件版本滞后的问题吧!
看了一下convert的版本,就是下图这样的,

于是上网查查怎么回事。
在度娘里,用「linux转换pdf为jpg」搜出来的,都是如何安装ImageMagick和输入convert命令的结果;
换用「convert: not authorized `10.pdf' @ error/constitute.c/ReadImage/412.」搜出来的,第一个就是了,stackoverflow上面的一个提问和回答帖(<--点左边蓝字链接可直达原帖)。
OK!看了一下,是要修改ImageMagick里的policy.xml文件。
看起来并不难,动手照着做吧!
修改「/etc/ImageMagick-6/policy.xml」文件
在zsh里,输入「/etc/Image」之后,按一下tab,后面的目录名称就自动补全了。在修改policy.xml之前,还是先看看里面什么内容吧,别到时候进了文本编辑器一时手贱改错了东西,改不回来反而费事。


嗯,对于我这个小白程度的linux用户来说,基本上还是能瞎改改的嘛!(信心满满!)
因为已经试过一次用普通用户的身份去打开这个文件,提示只读,所以下面就直接叙述使用sudo的完整权限的命令了。
sudo vim policy.xml
接着输入密码,敲下回车键,清脆的声音响起,进入Vim的世界了。
按照stackover原帖上的方法,有几个小步骤:
- 「1」增加一行:
<!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
- 「2」修改一行:
改
<policy domain="coder" rights="none" pattern="PDF" />
为
<policy domain="coder" rights="read|write" pattern="PDF" />
- 「3」增加一行:
<policy domain="coder" rights="read|write" pattern="LABEL" />
保存文件,退出Vim。
重启系统。
附上我改的文件的样子:


成功转换
系统重启后,再来试试convert能不能把pdf转换为jpg。
然后,默认的分辨率太低,转换出来的jpg图片一片模糊,没法看。
把宽高分辨率参数-density调到150的时候比较清晰了,再调到200就很清晰了。

整理完毕,收工!
砚湖@飘香生活馆
二〇一九年一月四日
ElementaryOS/Linux使我快乐!
网友评论