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

使用pdfjs-dist提取PDF文本报错:pdfjs.getDocument不是函数

问题原因及解决方法

1. 导入方式与Worker配置缺失

pdfjs-dist在浏览器环境下必须配置Worker才能正常运行,这是核心问题所在:

  • 先确保已正确安装依赖:
npm install pdfjs-dist
  • 修正代码并补充Worker配置:
import * as pdfjsLib from 'pdfjs-dist';
import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry';

// 全局配置Worker路径,这一步是必须的
pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker;

public async testing(pdfUrl: string) {  
    try {
        const loadingTask = pdfjsLib.getDocument(pdfUrl);  
        const doc = await loadingTask.promise;  
        const page = await doc.getPage(1);  

        const textContent = await page.getTextContent();
        // 可选:提取纯文本返回,根据需求调整
        return textContent.items.map((item: any) => item.str).join('\n');
    } catch (error) {
        console.error('PDF处理错误:', error);
        throw error;
    }
}

2. 版本兼容性问题

如果使用pdfjs-dist v3.x及以上版本,必须显式配置Worker;若用v2.x旧版本,需调整Worker路径的设置方式:

// v2.x版本示例
import pdfjsLib from 'pdfjs-dist';
// 可以使用CDN地址或本地打包后的Worker文件路径
pdfjsLib.GlobalWorkerOptions.workerSrc = '//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.worker.min.js';

3. 打包工具配置问题

若使用Vite、Webpack等工具,需确保Worker代码被正确处理:

  • Vite:直接导入pdf.worker.entry即可,无需额外配置
  • Webpack:需启用内置Worker支持或配置worker-loader,避免Worker代码被错误打包

4. 额外注意:跨域问题

如果PDF URL来自跨域地址,需确保目标服务器配置了CORS允许访问,否则会导致PDF加载失败,也可能间接引发类似报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:28:09