Nie można przekonwertować pliku PDF na obraz z powodu błędu „brak zdefiniowanych obrazów”

83

Mam następujący plik PDF: http://www.fmwconcepts.com/misc_tests/pdf_tests/test.pdf

Ale kiedy próbuję przekonwertować to przez:

$ convert test.pdf test.png

Mam następujący błąd:

convert: no images defined `test.png' @ error/convert.c/ConvertImageCommand/3187.

Mam następujące wersje:

$ 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 ✘

Mam następujący dziennik debugowania:

$ 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'

Ale nie pokazuje niczego oczywistego. I wygląda na to, że ten dziennik debugowania zachowuje się zupełnie inaczej niż bez -debug, ponieważ nie ma oryginalnego błędu. Zobacz pełny dziennik .

Podobny problem występuje na stronie http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=22466 , ale nie do końca rozumiem, jakie jest rozwiązanie.

kenorb
źródło

Odpowiedzi:

91

Brakuje opcjonalnej zależności Ghostscript gs- która nie jest opcjonalna, jeśli chcesz przekonwertować plik PDF.

Jeśli which gsnie rozpoznaje pliku binarnego ghostscript (np. Masz alias o tej samej nazwie), edytuj ścieżkę do Ghostscript w delegates.xml.

dlemstra
źródło
1
W moim przypadku zainstalowałem Ghostscript, ale gspolecenie zostało ukryte przez skrypt, dla którego napisałem git status. Czy istnieje sposób na przekazanie ImageMagick pełnej ścieżki pliku gsbinarnego, aby nie musiałem usuwać skryptu (lub aliasu)?
Sridhar Sarnobat
2
Konieczna będzie edycja pliku delegates.xml i określenie alternatywnej lokalizacji.
dlemstra
debian / ubuntu: apt-get install ghostscript
Nadir
69

Możesz także spróbować:

  1. brew uninstall ghostscript
  2. brew install ghostscript

To naprawiło to dla mnie.

hotmeteor
źródło
To załatwiło sprawę!
line-o
-1

Miałem podobny problem. Powyższe poprawki nic nie zrobiły dla mnie, ale wygląda na to, że ImageMagick używał html2pswewnętrznie.

Rozwiązaniem było to zainstalować. Nie korzystam z systemu OS X, więc dla mnie rozwiązaniem było:

apt install html2ps

Mam nadzieję, że to komuś pomoże.

mlissner
źródło
aptczy apt-get?
kenorb
1
apt jeśli masz. To zamiennik apt-get.
mlissner,
ImageMagick używał html2ps wewnętrznie do konwersji z pdf na png tutaj?
rogerdpack