2016-12-15 57 views
0

我使用nodejs包將pdf轉換爲圖像:https://www.npmjs.com/package/pdf2images-multipleGhostScript是否需要GPU?

這可以在兩臺不同的本地計算機(它們都具有圖形卡)的docker上成功運行。但是,當我嘗試在Google Cloud(其中沒有GPU)的服務器上運行此操作時。對於具有特定的圖形的PDF頁面會出現以下錯誤:

error: message=Failed to convert page to image, killed=false, code=1, signal=null, cmd=gm convert -density 150 -quality 100 -sharpen 0x1.0 -trim '/usr/src/app/1161115-30-1kabyqq.2bteimgqfr.pdf[7]' '/usr/src/app/pdfimages1161115-30-10uod6h.siy6pyzaor/1161115-30-1kabyqq-7.png', stdout=, stderr=gm convert: "gs" "-q" "-dBATCH" "-dMaxBitmap=50000000" "-dNOPAUSE" "-sDEVICE=pnmraw" "-dTextAlphaBits=4" "-dGraphicsAlphaBits=4" "-r150x150" "-dFirstPage=8" "-dLastPage=8" "-sOutputFile=/usr/src/app/gmxHC5iw" "--" "/usr/src/app/gm0tibSq" "-c" "quit" (child process quit due to signal 11). gm convert: Postscript delegate failed (/usr/src/app/1161115-30-1kabyqq.2bteimgqfr.pdf).

我創建了一個AWS實例與GPU並不會出現此錯誤。看看是否有一個環境變量能夠跳過GhostScript中的GPU變體,至少在Google Cloud獲得GPU或者我在這裏沒有看到的替代方案之前。

名爲GraphicsMagick的錯誤消息中的命令有文檔說明它不使用任何GPU技術。 http://www.graphicsmagick.org/FAQ.html#are-there-any-plans-to-use-opencl-or-cuda-to-use-a-gpu

+0

我不會認爲GhostScript需要GPU。無論如何,我注意到「由於信號11而導致孩子進程退出」說孩子,我想'gm',因爲段錯誤而崩潰。我不願意認爲這與缺少GPU有關,但我沒有足夠的信息來排除這一點。 –

回答

0

Ghostscript不需要,也確實無法使用GPU(超越使用X來顯示位圖)。有一些SIMD代碼,但你可以編譯沒有,顯然我不知道你使用的Ghostscript是如何編譯的。

對於Linux來說,將二進制從一個盒子移動到另一個盒子通常是不可能的,因爲ABI在兩個系統之間就C運行時而言是不同的。此外,如果可執行文件已使用共享庫進行編譯(許多發行版堅持這樣做),那麼不同版本的共享庫可能會導致問題。

我的猜測是,谷歌雲Linux和AWS Linux之間存在一些顯着的差異,而不是存在或不存在GPU。

在Linux上部署Ghostscript的最佳方式是在您打算使用的機器上從源代碼構建它,如果您打算將它放在具有不同配置的多臺機器上,則尤其如此。