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

如何使用JavaScript提取PDF内容?pdf.js调用报错求助

解决PDF内容提取及pdf.js调用报错问题

问题描述

尝试多种方法提取PDF内容均失败,使用pdf.js时出现报错,调用代码如下:

var loadingTask = window.pdfjsLib.getDocument('dummy.pdf');
loadingTask.promise.then(function(pdf) {
 console.log(pdf)
});

控制台报错:Can not read property of undefined 'getDocument'

解决pdf.js报错及提取内容的方法

1. 修复pdf.js的加载问题

报错核心是window.pdfjsLib未定义,说明pdf.js库没正确加载,按以下步骤排查:

  • 确保正确引入库文件:如果是浏览器环境,需先引入pdf.js和对应的worker脚本,注意文件路径要正确,比如:
    <script src="./pdf.js"></script>
    <script src="./pdf.worker.js"></script>
    
    若用模块化开发(比如Webpack/Vite),需先安装依赖:
    npm install pdfjs-dist
    
    然后通过import引入并配置worker路径:
    import * as pdfjsLib from 'pdfjs-dist';
    pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdf.worker.js';
    
  • 确保代码在库加载后执行:浏览器环境下,把代码放在脚本引入之后,或者包裹在DOMContentLoaded事件里,避免库未加载就执行代码:
    document.addEventListener('DOMContentLoaded', function() {
      var loadingTask = window.pdfjsLib.getDocument('dummy.pdf');
      loadingTask.promise.then(function(pdf) {
        console.log('PDF加载成功:', pdf);
      });
    });
    

2. 用pdf.js提取PDF文本的完整示例

加载PDF后,遍历页面提取文本:

document.addEventListener('DOMContentLoaded', async function() {
  try {
    const pdf = await window.pdfjsLib.getDocument('dummy.pdf').promise;
    let fullText = '';
    // 遍历所有页面
    for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {
      const page = await pdf.getPage(pageNum);
      const textContent = await page.getTextContent();
      // 拼接每页文本
      const pageText = textContent.items.map(item => item.str).join(' ');
      fullText += pageText + '\n';
    }
    console.log('提取的PDF文本:', fullText);
  } catch (error) {
    console.error('提取失败:', error);
  }
});

其他可行的PDF内容提取方法

如果前端方法受限,也可以用后端工具:

Python 方案(PyPDF2)

安装依赖:

pip install PyPDF2

提取代码:

from PyPDF2 import PdfReader

reader = PdfReader('dummy.pdf')
full_text = ''
for page in reader.pages:
    full_text += page.extract_text() + '\n'
print(full_text)

Node.js 方案(pdf-parse)

安装依赖:

npm install pdf-parse

提取代码:

const fs = require('fs');
const pdfParse = require('pdf-parse');

fs.readFile('dummy.pdf', async (err, data) => {
  if (err) throw err;
  const pdfData = await pdfParse(data);
  console.log(pdfData.text);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 10:25:11