转换jpg到pdf时发生错误。

每次我想用这个命令将 jpg 文件转换为 pdf 文件。
convert *.jpg pictures.pdf

我有这个错误信息:
convert: not authorized `pictures.pdf' @ error/constitute.c/WriteImage/1028.

1将*.jpg图片转换为pdf格式,会将所有pdf文件覆盖成一个名为pictures.pdf的文件吗? - Vijay
这个来自StackOverflow的解决方案对我有用:https://stackoverflow.com/questions/42928765/convertnot-authorized-aaaa-error-constitute-c-readimage-453 - Mike
4个回答


1我再次仔细研究了一下,几乎可以确定安全修复与https://www.kb.cert.org/vuls/id/332928有关(该网页记录了各种绕过ghostscript中的-dSAFER选项的方法)。 - YoungFrog
3这确实像广告中所说的那样有效。我只是将pdf行注释掉(实际上是删除了)。知道副作用会是什么就好了!配置文件中的policymap注释说这是用于"禁用Ghostscript格式类型"的。 - Marten Koetsier
1另请参阅:https://cromwell-intl.com/open-source/pdf-not-authorized.html - Falko Menge
3我曾经犹豫是否要更改安全设置。作为对ImageMagick的替代,我使用了"pdftoppm -jpeg input.pdf output.jpg"命令(来自名为poppler-utils的软件包)。这个替代方法是在https://bugs.launchpad.net/ubuntu/+source/imagemagick/+bug/1796563中发布的。 - Vahid Pazirandeh
分别更改目标文件格式策略:<policy domain="coder" rights="read|write" pattern="PDF" />。通常它们会在最后。谢谢。 - yunus
或者您可以直接编辑: /etc/ImageMagick-6/policy.xml 并使用<!--和-->进行注释该行: <policy domain="coder" rights="none" pattern="PDF" /> 变成以下形式:<!-- <policy domain="coder" rights="none" pattern="PDF" /> --> - engine9pw
在我身上表现出色 - Manmeet Singh

在我的Ubuntu 16.04.6 LTS和18.04.6 LTS上,我按照接受的答案进行了修复。
创建了一个简单的sed一行命令来更快地解决这个问题:
sudo sed -i 's#<policy domain="coder" rights="none" pattern="PDF" />#<policy domain="coder" rights="read|write" pattern="PDF" />#' /etc/ImageMagick-6/policy.xml
以编程方式实现。


禁用安全限制是一个不好的习惯。ImageMagick的作者们可能有他们的原因。除非你确切知道自己在做什么,否则你应该尊重这一点。对于大多数查看这些答案的人来说,这似乎是不太可能的。
在这种情况下,正确的做法是使用其他被作者们认为安全的软件。
这里的`img2pdf`符合要求:
img2pdf --output out.pdf in.jpg

1打乱正常的“转换”命令如何提高计算机的安全性? - ar2015
这个回答并没有解答问题。问题是要将转换为 PDF。 - Reinier Post
@ReinierPost 注意到了,谢谢!回答已经更正。 - Sqerstet
@Sqerstet:谢谢!我刚刚尝试了一下,它完全符合我的需求(它可以同时创建未调整大小的版本和用于打印的调整大小的版本)。 - Reinier Post
@ReinierPost,别再说谢谢了,直接给我一个点赞吧 :) - Sqerstet
1这个功能似乎能够正确地调整分辨率,而且没有任何额外的选项。 - Moondoggy