使用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
相关产品推荐
相关产品推荐

