ImageMagick、Ghostscript 和 PDF

ImageMagick、Ghostscript 和 PDF

我在使用 ImageMagick 和 Ghostscript 将 PDF 转换为 JPG 时遇到了问题。有时我会遇到可怕的

convert multipage.pdf multipage.jpg    
convert: no images defined `multipage.jpg' @ error/convert.c/ConvertImageCommand/3210.
  • 它只适用于某些 PDF,似乎仅适用于 PDF1.3,不确定。
  • 据我所知,ImageMagick-delegate 对于 Ghostscript 来说是正确的(否则它根本不起作用)。
  • Ghostscript 似乎有效。我运行并获得了例外的输出

    gs -dNOPAUSE -dBATCH -sDEVICE=jpeg -r96 -sOutputFile='page-%00d.jpg' multipage.pdf
    

从 ImageMagick 调用 Ghostscript 有问题吗?有日志吗?我的 Ubuntu 安装是否缺少字体或其他东西?

已尝试多次重新安装 Ghostscript 和 ImageMagick。

运行 Ubuntu 16.04

任何提示都值得赞赏!

答案1

我不确定您是否找到了解决方案,并且也意识到这是一篇非常古老的帖子,并且可能还有其他人需要对此有所了解,因此我想分享一个可能的解决方案。

假设一下。您似乎正在尝试处理包含多页的文档。不清楚该命令处理的其他 PDF 是否是单页。

但仅基于假设,只是想澄清一下,我猜你的命令的唯一问题是没有指定你打算将 PDF 文档的哪一页转换为图像。正如网络上的许多教程一样,你必须做这样的事情:

convert "multipage.pdf[0]" multipage.jpg

该命令指定将第一页呈现为图像,然后转换为 JPEG 文件。

现在还要注意,新安装的 ImageMagick 禁止处理 PostScript 文件。如果您收到如下错误:

attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408

您需要打开policy.xml位于/etc/ImageMagick-6根据安装的版本的文件,并注释以下语句:

<!-- disable ghostscript format types -->
<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" />

但请注意,这是一个非常重要的说明,如果您安装了旧版本的 GhostScript,则不建议这样做,因为旧版本存在严重的安全漏洞。我建议始终保持 GhostScript 和 ImageMagick 为最新版本,并相应地修复您的代码。

相关内容