Подтвердить что ты не робот

ImageMagick/Imagick конвертирует PDF в JPG с использованием собственного PHP API

Я пытаюсь преобразовать PDF файлы в PNG. Он отлично работает с командной строкой (у меня установлен GhostScript 8.64). Но из PHP Im возникает проблема:

код:

$im = new Imagick($pdf_file); // this is where it throws the exception below

выход:

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(’…’)

и т.д.. и др.

Я не уверен, что я делаю неправильно здесь, но я подозреваю, что это как-то связано с моей конфигурацией сервера. Я бегу: Apache 2.2.11 PHP 5.2.8 ImageMagick 6.4.8-9 GhostScript 8.64

4b9b3361

Ответ 1

Наконец понял это. Исполняемый файл GhostScript (gs) не был в пути к среде Apache. Это было в /usr/local/bin. Хотя я пробовал несколько способов добавить /usr/local/bin к пути, мне это не удалось. Я положил символическую ссылку для gs в /usr/bin directory. Теперь все работает отлично.

Ответ 2

У меня нет "репутации" в Stackoverflow, чтобы добавить комментарий выше, но есть дополнительный шаг, который мне пришлось выполнить, чтобы заставить это работать на моем Mac с последним обновлением Sierra.

При вводе команды:

sudo ln -s /usr/local/bin/gs /usr/bin/gs

На Mac вы можете получить сообщение об ошибке "Операция не разрешена".

По-видимому, Apple внесла изменения, что каталог "bin" не редактируется, если вы не отключите SIP (System Integrity Protection).

Итак, вот шаги для этого:

  • Перезагрузите Mac в режим Recorvery, перезагрузив компьютер и удерживая "Command + R", пока на вашем экране не появится логотип Apple.
  • Нажмите "Утилиты" > "Терминал"
  • В окне терминала введите crutil disable и нажмите "Enter"
  • Перезагрузите Mac.

Я только что прошел эти шаги, и теперь мой Ghostscript отлично работает, и я успешно конвертировал PDF в JPG.

Ответ 3

Я успешно это делаю. Вот код, который я использую для преобразования. Мы используем это решение коммерчески. Я знаю, что этот вопрос существует некоторое время, но он все равно может помочь вам.

//Convert PDF contract to image using ImageMagik and Ghostscript
// NOTE: This will need to be change if running on Linux
$source = $appDir."\\".$clientID."\\".$clientID.".pdf";
$dest = $appDir."\\".$clientID."\\".$clientID.".jpg";
//print("c:\\IM\\convert.exe $source $dest ");
exec("c:\\IM\\convert.exe $source $dest ");