2016-12-15 31 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的最佳方式是在您打算使用的机器上从源代码构建它,如果您打算将它放在具有不同配置的多台机器上,则尤其如此。