我正在尝试将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";
我通过命令行进行了测试,并且工作正常,但是从文件无法正常工作。
答案 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=""gs" ...
部分的前面引入完整路径,最后得到如下内容:
gs
另一种选择是在Perl中更改您的<delegate decode="pdf" encode="eps" mode="bi" command=""/full/path/to/gs" ...
调用,因此您在运行 ImageMagick 之前将PATH设置为包括ghostscript。我不知道您如何引用它,但您想运行:
system()