Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ImageMagick/Imagick convert PDF to JPG using native PHP API

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

like image 727
matt Avatar asked Feb 26 '09 02:02

matt


People also ask

Does ImageMagick use Ghostscript?

The ghostscript interpreter is used by ImageMagick and GraphicsMagick to convert Postscript and similar formats into images.

Can ImageMagick convert PDF?

ImageMagick is a great customizable tool for converting PDF files to individual image files with a single command.


2 Answers

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.

like image 196
matt Avatar answered Sep 17 '22 16:09

matt


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:

  1. Reboot your Mac into Recorvery Mode by restarting your computer and holding down "Command + R" until the Apple logo appears on your screen.
  2. Click Utilities > Terminal
  3. In the Terminal window, type in crutil disable and press "Enter"
  4. Restart your Mac.

I just went through these steps and now my Ghostscript works great and I successfully converted a PDF to JPG.

like image 42
user3071502 Avatar answered Sep 18 '22 16:09

user3071502