ImageMagick/Imagick convert PDF to JPG using native PHP API

25,526

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:

  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.

Share:
25,526
matt
Author by

matt

Updated on July 05, 2022

Comments

  • matt
    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
    Arnold Roa almost 11 years
    How to know what is the apache environment path?
  • Ondrej Rafaj
    Ondrej Rafaj over 10 years
    Excellent! just to add, create the symlink like this: sudo ln -s /usr/local/bin/gs /usr/bin/gs
  • Andrew Ensley
    Andrew Ensley almost 10 years
    @CarlosBarbosa, convert.exe is a binary included with the windows version of ImageMagick (just convert 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
    Anriëtte Myburgh almost 9 years
    Kept on getting Cannot read file error and this fixed it. Thanks bro.
  • Steve Piercy
    Steve Piercy almost 8 years
    When 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
    Jacco van der Post over 6 years
    Afterwards I enabled System Integrity Protection again and Ghostscript still works.