gpt4 book ai didi

node.js - 在 Node.js 和 CentOS 中使用 pdf2image

转载 作者:行者123 更新时间:2023-12-04 19:31:33 24 4
gpt4 key购买 nike

我正在使用 pdf2image 构建一个将 PDF 文件转换为 PNG 的 Node.js 应用程序。
正如 official 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.52GraphicsMagick 1.3.35 2020-02-23 Q16)。但是,上面提到的代码片段将不再起作用,并返回一个空缓冲区。
经过一番调试,我注意到 pageOutput.base64 是空的,这意味着可能没有正确安装 Ghostscript 和 GraphicsMagick(因为我在 Windows 中测试了没有依赖关系的代码,并且也给了我空的 pageOutput.base64)。
我通过输入 gs --version 再次检查了 Ghostscript 是否安装在 Centos 中,它给出了 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 中的依赖项安装有问题吗?
谢谢。

最佳答案

我最终使用了 pdf-to-png-converter , 它需要 0 个外部依赖,并且在 Windows 和 CentOS 中都能完美运行。
这是我的做法:

const pdfToPng = require('pdf-to-png-converter').pdfToPng;

convertPdfToImg = async (buffer) => {
const pngPage = await pdfToPng(buffer, {
disableFontFace: false,
useSystemFonts: false,
pagesToProcess: [1],
viewportScale: 2.0
});
return pngPage[0].content;
}
我希望我早点知道这个很棒的实用程序。

关于node.js - 在 Node.js 和 CentOS 中使用 pdf2image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72407394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com