Последние три часа я потратил на то, чтобы ImageMagick прекрасно играл с PHP для конвертации PDF в JPG. Вместо того, чтобы документировать это самому на месте, я решил написать здесь, со всеми модными словами и вещами, которые я облажался, так что следующий нуб может сэкономить время.
Протестировано на двух ОС: Windows 7 x64 и Vista x64, с PHP 5.2.8 и Apache 2.2.11.
Вам понадобятся Ghostscript и ImageMagick. Я получил gs871w64.exe
и ImageMagick-6.6.3-0-Q16-windows-x64-dll.exe
.
Сделайте базовую установку ImageMagick (сейчас я назову ее IM). Дважды проверьте системную переменную пути, чтобы убедиться, что вы можете отправлять мгновенные сообщения из любого места. Он должен указывать на каталог IM. Проверьте установку с помощью этой строки в cmd
: convert test.gif test.jpg
(при условии, что у вас test.gif
). Работает нормально.
Проверка преобразования PDF (convert test.pdf test.jpg
). Вы должны получить (длинное) сообщение о «gswin32c.exe» и «Сбой делегата Postscript» и «отсутствует имя файла изображения». Это означает, что IM не может найти «переводчик» в формате PDF. Вам нужен Ghostscript.
Установите Ghostscript (сейчас я назову его GS). Мне пришлось сделать это дважды по какой-то причине, прежде чем это потребовалось. Добавьте адрес «bin» в папке GS в системную переменную. Проверьте установку с помощью gswin32 test.pdf
, и вы должны увидеть всплывающий файл в программе просмотра GS. Важное примечание: gs не работает в Windows ('gs' is not recognized as an internal or external command, operable program, or batch file.
). Вам нужно использовать gswin32 .
Возвращаемся к тесту IM: convert test.pdf test.jpg
должно работать.
Теперь перейдем к PHP - напишите этот скрипт:
$out = shell_exec("convert blah.pdf blah2.jpg 2>&1");
echo $out;
2>&1
переместит все ошибки в стандартный вывод , чтобы вы могли лучше диагностировать вещи :). Теперь ваш PHP-скрипт может запускаться в командной строке cmd, но ничего не происходит, когда вы запускаете его в браузере. Ударьте себя по лбу и перезапустите Apache.
штаны Исчерпывающий и, вероятно, элементарный, я знаю. Но, надеюсь, полезное резюме примерно из 20 страниц полуполезных подсказок.