Как установить, протестировать, конвертировать, изменить размер PDF с помощью ImageMagick, Ghostscript, Windows Vista / 7 x64

У меня возникли проблемы с тем, чтобы ImageMagick и Ghostscript работали вместе - все кажется сложным, от установки, до тестирования, до фактического использования программного обеспечения. У кого-нибудь есть советы?

2 ответов


Я только что провел последние три часа, получая 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 из любого места. Он должен указывать на каталог IM. Протестируйте установку с помощью этой строки в cmd: convert test.gif test.jpg (если у вас есть test.gif). Работает нормально.

протестировать преобразование PDF (convert test.pdf test.jpg). Вы должны получить (длинное) сообщение о "gswin32c.exe" и "делегат Postscript не удалось" и "отсутствует имя файла изображения". Это означает, что я не могу найти 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 страниц полу-полезных подсказок.


Стив уже предоставил руководство по запуску командная строка версия ImageMagick из PHP. После того, как аналогичный опыт установки расширение версия ImageMagick, я хотел бы подробнее рассказать о том, как различные компоненты работают вместе.

Imagick (расширение PHP)

сначала вам понадобится расширение PHP. Это в основном адаптер между PHP и ImageMagick функции.

  • выберите версию из http://windows.php.net/downloads/pecl/releases/imagick/
  • загрузите расширение, соответствующее вашей версии PHP в архитектуре (возможно, 32bit), потокобезопасности и компиляторе (VC9 или VC11), см. phpinfo
  • скопировать php_imagick.dll из расширения ZIP в каталог расширения PHP

однако этого недостаточно. The php_imagick.dll не содержит никаких функций ImageMagick и CORE_RL_... DLL, которые поставляются в комплекте с расширением, не завершены. Вам понадобится еще несколько библиотек DLL из выпуска ImageMagick.

теоретически версия не должна точно соответствовать, но, по-видимому, где-то между ImageMagick 6.8.1 и 6.8.8 функция MagickGetImageMatte был удален из DLL, поэтому самый безопасный способ-найти тот же самый выпуск ImageMagick, для которого было построено расширение Imagick:

  • в Проводнике Windows, см. Свойства → сведения о комплекте CORE_RL_wand_.dll, чтобы найти версию ImageMagick, для которой это расширение сделано. (Вы также сможете найти эту информацию в phpinfo.)
  • загрузите эту точную версию ImageMagick, например, из http://windows.php.net/downloads/pecl/deps/ (спасибо этот парень за ссылку)
  • скопируйте все библиотеки DLL из ImageMagick ZIP в тот же каталог, где php5 (n)ts.dll (движок PHP для Apache) is

не надо установить ImageMagick. На самом деле, если у вас есть несовместимый ImageMagick в вашем пути, расширение PHP может потерпеть неудачу.

Ghostscript

это относится как к версии командной строки ImageMagick (convert) и расширение PHP, описанное выше.

для чтения файлов семейства Postscript Ghostscript необходимый.

ImageMagick найдет Ghostscript следующие шаги:

  • если есть GS_DLL запись в реестре, указывающая путь gswin32.dll, он будет использовать этот и полностью игнорировать делегатов.
  • в противном случае он будет консультироваться с "делегатами". Кажется, есть жестко закодированный резерв, но вы можете переопределить его, поставив delegates.xml рядом с php5(n)ts.dll или convert.exe соответственно и в ~\.magick.
  • если он находит строку @PS_Delegate@ в делегате он заменит его на gswin32c.exe а затем продолжайте искать этот EXE в пути. Вы можете заменить эту строку с полным путем к gswin32c.exe или даже gswin64c.exe этот ImageMagick должен позвонить.