2009-02-26 181 views
12

我试图将PDF文件转换为PNG文件。它从命令行很好(我的GhostScript 8.64已经安装)。但是,从PHP我有一个问题:ImageMagick/Imagick使用原生PHP API将PDF转换为JPG

代码:

$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(’…’) 

等等,等等

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

回答

18

终于想通了这一点。 GhostScript可执行文件(gs)不在Apache的环境路径中。它在/usr/local/bin。尽管我尝试了几种方法将/usr/local/bin添加到路径中,但我没有成功。我结束了在/usr/bin directorygs的符号链接。现在一切正常。

+2

如何知道apache环境路径是什么? – 2013-06-19 15:53:02

+2

非常好!只需要添加,像这样创建符号链接:sudo ln -s/usr/local/bin/gs/usr/bin/gs – Ondrej 2014-02-07 17:47:28

+0

保持获取`无法读取文件错误`并且解决了这个问题。多谢兄弟。 – 2015-06-02 22:10:06

-4

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

//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 "); 
5

我没有#2“信誉”添加直列上述评论,但有一个额外的步骤,我不得不执行得到这个工作我的Mac上使用最新的塞拉利昂更新。

当你输入命令:

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

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

显然,苹果公司做出了一项修改,即“bin”目录不可编辑,除非您禁用SIP(系统完整性保护)。

所以这里是做到这一点的步骤:

  1. 重新启动你的Mac变成Recorvery模式重新启动计算机,并按住“命令+ R”,直到屏幕上出现苹果标志。
  2. 单击实用程序>终端
  3. 在终端窗口,在crutil disable按类型“输入”
  4. 重新启动Mac。

我刚刚经历了这些步骤,现在我的Ghostscript效果很好,我成功地将PDF转换为JPG。