簡體   English   中英

ImageMagick/Imagick 使用原生 PHP API 將 PDF 轉換為 JPG

[英]ImageMagick/Imagick convert PDF to JPG using native PHP API

我正在嘗試將 PDF 文件轉換為 PNG。 它在命令行中運行良好(我確實安裝了 GhostScript 8.64)。 但是從 PHP 我遇到了一個問題:

代碼:

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

output:

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 86。

終於想通了。 GhostScript 可執行文件 ( gs ) 不在 Apache 的環境路徑中。 它在/usr/local/bin中。 雖然我嘗試了幾種方法將/usr/local/bin添加到路徑中,但我沒有成功。 我最終在/usr/bin directory中放置了gs的符號鏈接。 現在一切正常。

我在 Stackoverflow 上沒有“聲譽”來添加上面的內聯評論,但我必須執行一個額外的步驟才能在我的 Mac 上使用最新的 Sierra 更新。

當你輸入命令時:

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

在 Mac 上,您可能會收到錯誤消息“不允許操作”。

顯然,Apple 更改了“bin”目錄不可編輯,除非您禁用 SIP(系統完整性保護)。

因此,以下是執行此操作的步驟:

  1. 通過重新啟動計算機並按住“Command + R”直到屏幕上出現 Apple 標志,將 Mac 重新啟動到恢復模式。
  2. 單擊實用程序 > 終端
  3. 在終端 window 中,輸入crutil disable並按“Enter”
  4. 重新啟動您的 Mac。

我剛剛完成了這些步驟,現在我的 Ghostscript 運行良好,我成功地將 PDF 轉換為 JPG。

我成功地做到了這一點。 這是我用來進行轉換的代碼。 我們正在商業上使用這個解決方案。 我知道這個問題已經存在了一段時間,但它仍然可以幫助你。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM