ImageMagick/Imagick使用本机PHP API将PDF转换为JPG

mat*_*att 12 php pdf pdf-generation image ghostscript

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

码:

$im = new Imagick($pdf_file); // this is where it throws the exception below
Run Code Online (Sandbox Code Playgroud)

输出:

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(’…’)
Run Code Online (Sandbox Code Playgroud)

等等

我不确定我在这里做错了什么,但我怀疑它与某处的服务器配置有关.我正在运行:Apache 2.2.11 PHP 5.2.8 ImageMagick 6.4.8-9 GhostScript 8.64

mat*_*att 18

终于搞清楚了.GhostScript可执行文件(gs)不在Apache的环境路径中.它在/usr/local/bin.虽然我尝试了几种方法来添加/usr/local/bin路径,但我没有成功.我最终把一个符号链接gs放在了/usr/bin directory.现在一切都很完美.

  • 如何知道apache环境路径是什么? (2认同)
  • 优秀!只需添加,创建如下符号链接:sudo ln -s/usr/local/bin/gs/usr/bin/gs (2认同)

小智 5

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

输入命令时:

sudo ln -s /usr/local/bin/gs /usr/bin/gs
Run Code Online (Sandbox Code Playgroud)

在Mac上,您可能会收到错误"操作未被允许".

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

所以这是执行此操作的步骤:

  1. 通过重新启动计算机并按住"Command + R"重新启动Mac进入Recorvery Mode,直到屏幕上出现Apple徽标.
  2. 单击实用工具>终端
  3. 在终端窗口中,输入crutil disable并按"Enter"
  4. 重启你的Mac.

我刚刚完成了这些步骤,现在我的Ghostscript工作得很好,我成功地将PDF转换为JPG.