【问题标题】:How to convert a PDF document to JPG using ImageMagick and Perl如何使用 ImageMagick 和 Perl 将 PDF 文档转换为 JPG
【发布时间】:2019-07-19 05:49:06
【问题描述】:

我正在尝试将 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"; 

我通过命令行进行了测试并且工作正常,但从文件中无法正常工作。

【问题讨论】:

  • 如果您只在系统命令行中使用文件$pdfname,为什么要打开它?
  • 你试过system()?的列表形式吗? system(qw(C:\\Program Files\\ImageMagick-6.6.2-Q16\\convert.exe), $pdfname, qw(-quality 60 -resize 256x335), $filename) 您还应该向system() 添加错误检查。

标签: perl image-processing imagemagick


【解决方案1】:

一些事情......

首先,删除以下行 - 它们不是必需的:

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

其次,您的 ImageMagick 版本是古老的 - 它必须是 7 年以上。考虑更新它 - 它是免费的。


第三,ImageMagick 使用 ghostscript 读取 PDF 文件 - 从技术上讲,它“委托”ghostscript。为了完成这项工作,它需要能够找到 ghostscript,我想这就是问题所在。在 Command Prompt 中,您可能将 PATH 设置为包含包含 ghostscript 的目录,但 Perl 的 system() 命令可能设置了不同的 PATH包括那个目录,所以找不到它。

有几个选项,但我在 Windows 上不是那么好,所以你可能需要与我或其他人合作才能让它们正常工作...

最简单的可能是找到ghostscript的安装位置,然后备份并在你的ImageMagick目录中编辑名为delegates.xml的文件并找到如下所示的行:

<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; ...

另一个选项是在 Perl 中更改 system() 调用,因此在运行 ImageMagick 之前将 PATH 设置为包含 ghostscript。我不知道你会如何引用它,但你会想运行:

system("set PATH=C:\path\to\ghostscript\dir;C:\path\to\ImageMagick\dir;%PATH%  && convert.exe YOURDOC.PDF -quality -resize widthxheight OUTPUT.PDF")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 2013-02-20
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多