Как конвертировать PDF документ в JPG, используя ImageMagick и Perl - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь преобразовать PDF в JPG, но я получаю сообщение об ошибке, и я не знаю, что я делаю неправильно.

form.pm:

 my $filename = "C:\\inetpub\\wwwroot\\students.jpg";
  my $pdfname = "C:\\inetpub\\wwwroot\\students.pdf";

  open(my $fh, '<', $pdfname);
  binmode($fh); 

  system('"C:\\Program Files\\ImageMagick-6.6.2-Q16\\convert.exe" "' . $pdfname . '" -quality 60 -resize 256x335 "' . $filename . '"');
  return "success"; 

Я сделал тест через командную строку и работает нормально, но из файла не работают.

1 Ответ

0 голосов
/ 25 февраля 2019

Несколько вещей ...

Во-первых, удалите следующие строки - они не нужны:

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="&quot;gs&quot;  ...

и вводит полный путь перед частью gs, в результате чего получается что-то вроде:

<delegate decode="pdf" encode="eps" mode="bi" command="&quot;/full/path/to/gs&quot; ...

Другой вариант:чтобы изменить ваш 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")
...