由于“未定义图像”错误,无法将 PDF 转换为图像

ken*_*orb 98 pdf command-line imagemagick conversion macos

我有以下 PDF 文件:http : //www.fmwconcepts.com/misc_tests/pdf_tests/test.pdf

但是当我尝试通过以下方式转换它时:

$ convert test.pdf test.png
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

convert: no images defined `test.png' @ error/convert.c/ConvertImageCommand/3187.
Run Code Online (Sandbox Code Playgroud)

我有以下版本:

$ brew info libpng
libpng: stable 1.6.13 (bottled)

$ brew info libjpeg
jpeg: stable 8d (bottled)

$ brew info imagemagick
imagemagick: stable 6.8.9-7 (bottled), HEAD
http://www.imagemagick.org
/usr/local/Cellar/imagemagick/6.8.9-1 (1432 files, 22M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/imagemagick.rb
==> Dependencies
Build: xz ?, pkg-config ?
Required: libtool ?
Recommended: jpeg ?, libpng ?, freetype ?
Optional: fontconfig ?, libtiff ?, little-cms ?, little-cms2 ?, libwmf ?, librsvg ?, liblqr ?, openexr ?, ghostscript ?, webp ?
Run Code Online (Sandbox Code Playgroud)

我有以下调试日志:

$ convert test.pdf test.png -debug all
2014-10-01T15:29:39+01:00 0:00.000 0.000u 6.8.9 Configure convert[58320]: utility.c/ExpandFilenames/944/Configure
  Command line: convert {test.pdf} {test.png} {-debug} {all}
2014-10-01T15:29:39+01:00 0:00.000 0.000u 6.8.9 Configure convert[58320]: configure.c/GetConfigureOptions/679/Configure
  Searching for configure file: "/usr/local/Cellar/imagemagick/6.8.9-1/share/ImageMagick-6/coder.xml"
...
2014-10-01T15:29:39+01:00 0:00.020 0.010u 6.8.9 Module convert[58320]: module.c/OpenModule/1268/Module
  Searching for module "PNG" using filename "png.la"
2014-10-01T15:29:39+01:00 0:00.020 0.010u 6.8.9 Module convert[58320]: module.c/GetMagickModulePath/554/Module
  Searching for coder module file "png.la" ...
2014-10-01T15:29:39+01:00 0:00.020 0.010u 6.8.9 Module convert[58320]: module.c/OpenModule/1277/Module
  Opening module at path "/usr/local/Cellar/imagemagick/6.8.9-1/lib/ImageMagick//modules-Q16/coders/png.la"
2014-10-01T15:29:39+01:00 0:00.020 0.010u 6.8.9 Module convert[58320]: module.c/OpenModule/1304/Module
  Method "RegisterPNGImage" in module "PNG" at address 0x10a9fdb60
2014-10-01T15:29:39+01:00 0:00.020 0.010u 6.8.9 Module convert[58320]: module.c/OpenModule/1318/Module
  Method "UnregisterPNGImage" in module "PNG" at address 0x10aa0785d
2014-10-01T15:29:39+01:00 0:00.020 0.010u 6.8.9 Policy convert[58320]: policy.c/IsRightsAuthorized/574/Policy
  Domain: Path; rights=Read; pattern="test.png" ...
...
2014-10-01T15:29:39+01:00 0:00.020 0.010u 6.8.9 Configure convert[58320]: locale.c/LoadLocaleCache/1186/Configure
  Loading locale configure file "/usr/local/Cellar/imagemagick/6.8.9-1/share/ImageMagick-6/english.xml" ...
2014-10-01T15:29:39+01:00 0:00.020 0.020u 6.8.9 Exception convert[58320]: blob.c/OpenBlob/2657/Exception
  unable to open image `test.png': No such file or directory
2014-10-01T15:29:39+01:00 0:00.020 0.020u 6.8.9 Cache convert[58320]: cache.c/DestroyPixelCache/962/Cache
  destroy 
2014-10-01T15:29:39+01:00 0:00.020 0.020u 6.8.9 Policy convert[58320]: policy.c/IsRightsAuthorized/574/Policy
  Domain: Coder; rights=Read; pattern="PNG" ...
2014-10-01T15:29:39+01:00 0:00.030 0.020u 6.8.9 Coder convert[58320]: png.c/ReadPNGImage/4015/Coder
  Enter ReadPNGImage()
2014-10-01T15:29:39+01:00 0:00.030 0.020u 6.8.9 Policy convert[58320]: policy.c/IsRightsAuthorized/574/Policy
  Domain: Path; rights=Read; pattern="test.png" ...
2014-10-01T15:29:39+01:00 0:00.030 0.020u 6.8.9 Exception convert[58320]: blob.c/OpenBlob/2657/Exception
  unable to open image `test.png': No such file or directory
2014-10-01T15:29:39+01:00 0:00.030 0.020u 6.8.9 Exception convert[58320]: png.c/ReadPNGImage/4021/Exception
  unable to open file `test.png'
Run Code Online (Sandbox Code Playgroud)

但没有显示任何明显的东西。似乎这个调试日志的行为与没有 完全不同-debug,因为原始错误不存在。查看完整日志

http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=22466也有类似的问题,但我不太明白解决方案是什么。

dle*_*tra 106

您缺少可选的 Ghostscript 依赖项gs- 如果您想转换 PDF 文件,这不是可选的。

如果which gs没有解析为 ghostscript 二进制文件(例如,您有一个同名的别名),请在 .gitignore 中编辑 Ghostscript 的路径delegates.xml

  • 在我的例子中,我安装了 Ghostscript,但是我为 `git status` 编写的脚本隐藏了 `gs` 命令。有没有办法为 ImageMagick 提供 `gs` 二进制文件的完整路径,这样我就不必删除我的脚本(或别名)? (2认同)
  • 您将需要编辑文件 delegates.xml 并指定替代位置。 (2认同)

小智 81

您也可以尝试执行以下操作:

  1. brew uninstall ghostscript
  2. brew install ghostscript

那为我修好了。