如何使用ImageMagick和Perl将PDF文档转换为JPG

时间:2019-02-25 18:40:59

标签: perl image-processing imagemagick

我正在尝试将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 :(得分:2)

几件事...

首先,删除以下几行-不需要它们:

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

第二,您的ImageMagick版本是古代-它必须存在7年以上。考虑更新它-它是免费的。


第三, ImageMagick 使用 ghostscript 读取PDF文件-从技术上讲,它是“代理” ghostscript 。为了完成这项工作,它需要能够找到 ghostscript ,我想这就是问题所在。在命令提示符中,您可能将PATH设置为包含包含 ghostscript 的目录,但是Perl的system()命令可能会设置不同的{{1 }}不包含该目录,因此找不到该目录。

有两种选择,但是我在Windows上不太好,因此您可能需要与我或其他人合作才能使它们工作...

最简单的方法可能是找到PATH的安装位置,然后备份并在 ImageMagick ghostscript的文件>目录并找到如下所示的行:

delegates.xml

并在<delegate decode="pdf" encode="eps" mode="bi" command="&quot;gs&quot; ... 部分的前面引入完整路径,最后得到如下内容:

gs

另一种选择是在Perl中更改您的<delegate decode="pdf" encode="eps" mode="bi" command="&quot;/full/path/to/gs&quot; ... 调用,因此您在运行 ImageMagick 之前将PATH设置为包括ghostscript。我不知道您如何引用它,但您想运行:

system()