Несколько вещей ...
Во-первых, удалите следующие строки - они не нужны:
open(my $fh, '<', $pdfname);
binmode($fh);
Во-вторых, ваша версия ImageMagick древняя - должно быть 7+ лет.Рассмотрите возможность его обновления - это бесплатно.
В-третьих, ImageMagick использует ghostscript для чтения файлов PDF - технически это "делегаты" ghostscript .Для этой работы ему нужно найти ghostscript , и я думаю, что это проблема.В командной строке у вас, вероятно, установлен PATH
для включения каталога, содержащего ghostscript , но команда Perl system()
, вероятно, устанавливает другую PATH
, которая не включает этокаталог, поэтому его нельзя найти.
Есть несколько вариантов, но я не очень хорош в Windows, поэтому вам, возможно, придется поработать со мной или кем-то еще, чтобы заставить их работать ...
Возможно, проще всего найти, где установлен ghostscript
, а затем сделать резервную копию и отредактировать файл с именем delegates.xml
в каталоге ImageMagick и найтистрока, которая выглядит следующим образом:
<delegate decode="pdf" encode="eps" mode="bi" command=""gs" ...
и вводит полный путь перед частью gs
, в результате чего получается что-то вроде:
<delegate decode="pdf" encode="eps" mode="bi" command=""/full/path/to/gs" ...
Другой вариант:чтобы изменить ваш system()
вызов в Perl, вы должны настроить PATH на включение ghostscript перед запуском ImageMagick .Я понятия не имею, как бы вы это процитировали, но вы хотели бы запустить:
system("set PATH=C:\path\to\ghostscript\dir;C:\path\to\ImageMagick\dir;%PATH% && convert.exe YOURDOC.PDF -quality -resize widthxheight OUTPUT.PDF")