我正在使用pdf2image
构建一个Node.js应用程序,该应用程序将PDF文件转换为PNG。正如官方repo的自述文件所述,pdf2image
需要两个外部依赖项:Ghostscript和GraphicsMagick。这两个都安装在我的本地Windows机器上。
现在我能够转换一个缓冲区的PDF文件到一个缓冲区的PNG图像与以下代码:
const fromBuffer = require('pdf2pic').fromBuffer;
convertPdfToImg = async (pdfBuffer) => {
const pdf2picOptions = {
format: 'png',
width: 4000,
height: 5176,
density: 330,
savePath: './output',
};
const convert = fromBuffer(pdfBuffer, pdf2picOptions);
const pageOutput = await convert(1, true);
const pngBuffer = Buffer.from(pageOutput.base64, 'base64');
return pngBuffer;
};
一切都很好,每个人都很高兴!(目前)
现在的问题是,我需要在Linux环境(CentOS Stream)中将应用程序部署到生产环境中,因此我在服务器上安装了依赖项,确保使用与本地Windows机器上安装的版本相同的版本(Ghostscript 9.52
和GraphicsMagick 1.3.35 2020-02-23 Q16
)。然而,上面提到的代码片段不再工作,并返回一个空缓冲区。
经过一些调试后,我注意到pageOutput.base64
是空的,这意味着可能Ghostscript和GraphicsMagick没有正确安装(因为我在Windows中测试了没有依赖项的代码,并且也得到了空的pageOutput.base64
)。
我再次通过输入gs --version
检查Centos中是否安装了Ghostscript,它将9.52
作为输出。
此外,我通过输入gm version
检查了GraphicsMagick,得到了以下输出:
GraphicsMagick 1.3.35 2020-02-23 Q16 http://www.GraphicsMagick.org/
Copyright (C) 2002-2020 GraphicsMagick Group.
Additional copyrights and licenses apply to this software.
See http://www.GraphicsMagick.org/www/Copyright.html for details.
Feature Support:
Native Thread Safe yes
Large Files (> 32 bit) yes
Large Memory (> 32 bit) yes
BZIP no
DPS no
FlashPix no
FreeType no
Ghostscript (Library) no
JBIG no
JPEG-2000 no
JPEG no
Little CMS no
Loadable Modules no
Solaris mtmalloc no
Google perftools tcmalloc no
OpenMP yes (201511 "4.5")
PNG no
TIFF no
TRIO no
Solaris umem no
WebP no
WMF no
X11 no
XML yes
ZLIB yes
Host type: x86_64-pc-linux-gnu
Configured using the command:
./configure '--with-quantum-depth=16'
Final Build Parameters:
CC = gcc
CFLAGS = -fopenmp -g -O2 -Wall -pthread
CPPFLAGS = -I/usr/include/libxml2
CXX = g++
CXXFLAGS = -pthread
LDFLAGS =
LIBS = -llzma -lxml2 -lz -lm -lpthread
请注意,这两个依赖项直接从源安装。
所以我的问题是:如何使pdf2image
与部署在linux系统(特别是CentOS Stream)上的Node.js一起工作?我在CentOS中的依赖项安装有什么问题吗?
- 谢谢-谢谢
1条答案
按热度按时间nkhmeac61#
我最终使用了pdf-to-png-converter,它需要0外部依赖项,在Windows和CentOS中都能完美工作。
我是这样做的:
我希望我能早点知道这个很棒的实用程序。