NodeJS 在节点上加载带有PDF-LIB的PDF文档时显示“未找到PDF标题”

m528fe3b  于 2023-06-22  发布在  Node.js
关注(0)|答案(2)|浏览(237)

我正在加载一个PDF文档,我必须用PDF-lib动态修改。

const { PDFDocument } = require('pdf-lib');

PDF文件是用Acrobat构建的,其名称为dental_insurance. pdf。
我尝试用以下方法加载文件:

const pdfDoc = await PDFDocument.load("/documents/cards/dental_insurance.pdf")

const pdfDoc = await PDFDocument.load("C:/Website/test/desk_routes/documents/cards/dental_insurance.pdf")

const pdfDoc = await PDFDocument.load("./documents/cards/dental_insurance.pdf")

const pdfDoc = await PDFDocument.load("../documents/cards/dental_insurance.pdf")

但无论我如何设置文件所在的路由,都会得到这个错误:
(node:15196)UnhandledPromiseRejectionWarning:错误:解析PDF文档失败(行:4 col:2 offset=27):未找到PDF页眉
我检查了PDF-lib文档,他们只声明了以下内容来加载文件:

const pdfDoc = await PDFDocument.load("...")

我不相信问题是在PDF文件,因为我得到了非常相同的错误,即使我输入一个不存在的文件:

const pdfDoc = await PDFDocument.load("blablabla.pdf")

谢谢

k4emjkb1

k4emjkb11#

根据文档,PDFDocument.load()接受的字符串是pdf文件的 * 内容 *,而不是名称。

const fs = require('fs/promises'); //note fs/promises, not fs here

const pdfData = await fs.readFile('./documents/cards/dental_insurance.pdf');

const pdfDoc = await PDFDocument.load(pdfData);
gt0wga4j

gt0wga4j2#

已解决-在节点版本>= 18时需要 readFileSync

import fs from "fs";
    

const buffer = await fs.readFileSync("./documents/cards/dental_insurance.pdf");
const document = await PDFDocument.load(buffer);

相关问题