【问题标题】:ImageMagick/Imagick convert PDF to JPG using native PHP APIImageMagick/Imagick 使用原生 PHP API 将 PDF 转换为 JPG
【发布时间】:2010-10-09 23:44:50
【问题描述】:

我正在尝试将 PDF 文件转换为 PNG。它在命令行中运行良好(我确实安装了 GhostScript 8.64)。但是在 PHP 中我遇到了问题:

代码:

$im = new Imagick($pdf_file); // this is where it throws the exception below

输出:

Fatal error: Uncaught exception ‘ImagickException’ with message ‘Postscript delegate failed `23_1235606503.pdf’: No such file or directory @ pdf.c/ReadPDFImage/612′ in get_thumbnail.php:93
Stack trace:
\#0 get_thumbnail.php(93): Imagick->__construct(’…’)

等等。等等

我不确定我在这里做错了什么,但我怀疑这与我在某处的服务器配置有关。我在跑: 阿帕奇 2.2.11 PHP 5.2.8 ImageMagick 6.4.8-9 GhostScript 8.64

【问题讨论】:

    标签: php image pdf pdf-generation ghostscript


    【解决方案1】:

    终于想通了。 GhostScript 可执行文件 (gs) 不在 Apache 的环境路径中。它位于/usr/local/bin。虽然我尝试了几种方法将/usr/local/bin 添加到路径中,但我没有成功。我最终在/usr/bin directory 中放置了gs 的符号链接。现在一切正常。

    【讨论】:

    • 如何知道apache环境路径是什么?
    • 太棒了!只需添加,像这样创建符号链接:sudo ln -s /usr/local/bin/gs /usr/bin/gs
    • 继续获得Cannot read file error 并修复了它。谢谢兄弟。
    • 在使用 ImageMagick 通过 Apache 和编程语言将 PDF 页面转换为 JPEG 时,即使图像存在并且权限已完全开放,我仍收到错误消息 convert: no images defined ...。卸载 GhostScript 和 ImageMagick 后,用 GS 重新安装 GS 和 IM,添加符号链接终于解决了这个问题。另见github.com/delphian/drupal-convert-file/wiki/…
    【解决方案2】:

    我成功地做到了。这是我用来进行转换的代码。我们正在商业上使用这个解决方案。我知道这个问题已经存在了一段时间,但它仍然可以帮助你。

    //Convert PDF contract to image using ImageMagik and Ghostscript
    // NOTE: This will need to be change if running on Linux
    $source = $appDir."\\".$clientID."\\".$clientID.".pdf";
    $dest = $appDir."\\".$clientID."\\".$clientID.".jpg";
    //print("c:\\IM\\convert.exe $source $dest ");
    exec("c:\\IM\\convert.exe $source $dest ");
    

    【讨论】:

    • @CarlosBarbosa, convert.exe 是 Windows 版本的 ImageMagick 中包含的二进制文件(在 *nix 操作系统上只是 convert)。虽然我同意这不是最佳答案,但它是解决 OP 遇到的问题的一种方法。
    【解决方案3】:

    我在 Stackoverflow 上没有“声誉”来添加上面的内联评论,但我必须执行一个额外的步骤才能在我的 Mac 上使用最新的 Sierra 更新。

    当你输入命令时:

    sudo ln -s /usr/local/bin/gs /usr/bin/gs
    

    在 Mac 上,您可能会收到错误消息“不允许操作”。

    显然,Apple 更改了“bin”目录不可编辑,除非您禁用 SIP(​​系统完整性保护)。

    以下是执行此操作的步骤:

    1. 通过重新启动计算机并按住“Command + R”直到 Apple 徽标出现在屏幕上,将 Mac 重新启动到恢复模式。
    2. 单击实用程序 > 终端
    3. 在终端窗口中,输入crutil disable 并按“Enter”
    4. 重新启动您的 Mac。

    我刚刚完成了这些步骤,现在我的 Ghostscript 运行良好,我成功地将 PDF 转换为 JPG。

    【讨论】:

    • 之后我再次启用了系统完整性保护,Ghostscript 仍然有效。
    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 2011-09-30
    • 2011-05-11
    相关资源
    最近更新 更多