You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pdfjs-dist获取PDF第4页内容失败,可能的原因是什么?

pdfjs-dist提取PDF内容失败排查方案

以下是你遇到的问题的常见原因和修复方案:

  • 异步结果未正确接收
    getContent是异步函数,执行后返回的是Promise对象,直接console.log只能看到Promise实例,无法获取实际文本内容,需要通过await或者.then()方法获取执行结果。
  • 本地文件读取方式错误
    Node环境下pdfjs-dist无法直接识别本地文件的相对路径,需要先将本地PDF文件读取为Uint8Array格式再传入getDocument方法。
  • 未配置worker源
    新版本pdfjs-dist要求手动指定worker文件路径,未配置的话会触发worker加载失败的报错,Node环境可以直接引入对应worker模块进行配置。
  • 页码超出PDF实际页数
    getPage的参数从1开始计数,需要确认你读取的PDF文件总页数≥4,否则会触发页码不存在的报错。
  • 模块引入路径错误
    如果是通过npm官方安装的pdfjs-dist包,不需要修改为pdfjs/es5/build/pdf的引入路径,错误的路径会导致模块导出方法不匹配。

修复后可运行的完整代码

const pdfjs = require('pdfjs-dist');
const pdfjsWorker = require('pdfjs-dist/build/pdf.worker.entry');
const fs = require('fs/promises');

// 配置worker
pdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker;

async function getContent(src) {
    // 读取本地PDF为Uint8Array
    const pdfData = await fs.readFile(src);
    const doc = await pdfjs.getDocument({ data: new Uint8Array(pdfData) }).promise;
    // 可先打印总页数确认页码范围
    // console.log('PDF总页数:', doc.numPages);
    const page = await doc.getPage(4);
    const textContent = await page.getTextContent();
    // 拼接提取到的文本
    return textContent.items.map(item => item.str).join(' ');
}

// 正确接收异步结果
getContent('pdfs/Quantum.pdf').then(content => {
    console.log('第4页内容:', content);
}).catch(err => {
    console.error('提取失败:', err);
});

内容的提问来源于stack exchange,提问作者Vakindu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:42:02