ImageMagick/Imagick convert PDF to JPG using native PHP API
Solution 1
Finally figured this out. The GhostScript executable (gs
) wasn't in Apache's environment path. It was in /usr/local/bin
. Though I tried several ways to add /usr/local/bin
to the path, I did not succeed. I ended up putting a symlink for gs
in the /usr/bin directory
. Now everything works perfectly.
Solution 2
I don't have the "reputation" on Stackoverflow to add a comment inline above, but there is an extra step I had to perform to get this working on my Mac with the latest Sierra update.
When you enter the command:
sudo ln -s /usr/local/bin/gs /usr/bin/gs
On the Mac, you may get the error, "Operation not Permitted".
Apparently Apple made a change that the "bin" directory is not editable, unless you disable SIP (System Integrity Protection).
So here are the steps to do that:
- Reboot your Mac into Recorvery Mode by restarting your computer and holding down "Command + R" until the Apple logo appears on your screen.
- Click Utilities > Terminal
- In the Terminal window, type in
crutil disable
and press "Enter" - Restart your Mac.
I just went through these steps and now my Ghostscript works great and I successfully converted a PDF to JPG.
matt
Updated on July 05, 2022Comments
-
matt almost 2 years
I’m attempting to convert PDF files into PNGs. It works great from the command line (I do have GhostScript 8.64 installed). But from PHP I’m having a problem:
code:
$im = new Imagick($pdf_file); // this is where it throws the exception below
output:
Fatal error: Uncaught exception ‘ImagickException’ with message ‘Postscript delegate failed `23_1235606503.pdf’: No such file or directory @ pdf.c/ReadPDFImage/612′ in get_thumbnail.php:93 Stack trace: \#0 get_thumbnail.php(93): Imagick->__construct(’…’)
etc. etc.
I'm not sure what I'm doing wrong here, but I suspect it has something to do with my server configuration somewhere. I'm running: Apache 2.2.11 PHP 5.2.8 ImageMagick 6.4.8-9 GhostScript 8.64
-
Arnold Roa almost 11 yearsHow to know what is the apache environment path?
-
Ondrej Rafaj over 10 yearsExcellent! just to add, create the symlink like this: sudo ln -s /usr/local/bin/gs /usr/bin/gs
-
Andrew Ensley almost 10 years@CarlosBarbosa,
convert.exe
is a binary included with the windows version of ImageMagick (justconvert
on *nix OSes). While I agree this isn't the best answer, it is a way to work around the problem the OP was having. -
Anriëtte Myburgh almost 9 yearsKept on getting
Cannot read file error
and this fixed it. Thanks bro. -
Steve Piercy almost 8 yearsWhen using ImageMagick to convert a page of a PDF to JPEG through Apache and a programming language, I received the error message
convert: no images defined ...
even though the images existed and permissions were wide open. After uninstalling both GhostScript and ImageMagick, then reinstalling GS and IM with GS, adding the symlink finally resolved this issue. See also github.com/delphian/drupal-convert-file/wiki/… -
Jacco van der Post over 6 yearsAfterwards I enabled System Integrity Protection again and Ghostscript still works.