2009-02-26 103 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。