ImageMagick/Imagick 使用原生 PHP API 将 PDF 转换为 JPG
Posted
技术标签:
【中文标题】ImageMagick/Imagick 使用原生 PHP API 将 PDF 转换为 JPG【英文标题】:ImageMagick/Imagick convert PDF to JPG using native PHP API 【发布时间】: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
【问题讨论】:
【参考方案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】:
我在 *** 上没有“声誉”来添加上面的内联评论,但我必须执行一个额外的步骤才能在我的 Mac 上使用最新的 Sierra 更新。
当你输入命令时:
sudo ln -s /usr/local/bin/gs /usr/bin/gs
在 Mac 上,您可能会收到错误消息“不允许操作”。
显然,Apple 更改了“bin”目录不可编辑,除非您禁用 SIP(系统完整性保护)。
以下是执行此操作的步骤:
-
通过重新启动计算机并按住“Command + R”直到 Apple 徽标出现在屏幕上,将 Mac 重新启动到恢复模式。
单击实用程序 > 终端
在终端窗口中,输入
crutil disable
并按“Enter”
重新启动您的 Mac。
我刚刚完成了这些步骤,现在我的 Ghostscript 运行良好,我成功地将 PDF 转换为 JPG。
【讨论】:
之后我再次启用了系统完整性保护,Ghostscript 仍然有效。以上是关于ImageMagick/Imagick 使用原生 PHP API 将 PDF 转换为 JPG的主要内容,如果未能解决你的问题,请参考以下文章
中国云原生用户调研报告(2020年):云原生热点技术使用现状全披露