在节点上使用 PDF-LIB 加载 PDF 文档给出“未找到 PDF 标题”

Dan*_*lle 8 javascript node.js

我正在加载一个 PDF 文档,我必须使用 PDF-lib 即时修改。

const { PDFDocument } = require('pdf-lib');
Run Code Online (Sandbox Code Playgroud)

该 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")
Run Code Online (Sandbox Code Playgroud)

但无论我如何设置文件所在的路径,我都会收到此错误:

(节点:15196)UnhandledPromiseRejectionWarning:错误:无法解析PDF文档(行:4列:2偏移= 27):找不到PDF标题

我检查了 PDF-lib 文档,他们只声明以下内容来加载文件:

const pdfDoc = await PDFDocument.load("...")
Run Code Online (Sandbox Code Playgroud)

我不认为问题出在 PDF 文件上,因为即使我输入一个不存在的文件,我也会收到相同的错误:

const pdfDoc = await PDFDocument.load("blablabla.pdf")
Run Code Online (Sandbox Code Playgroud)

谢谢。

Cod*_*ing 9

根据文档,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);
Run Code Online (Sandbox Code Playgroud)

  • @pvg1975 为什么不问一个新问题。通常人们使用“axios”,但这取决于你所说的下载是什么意思。 (2认同)