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

基于PDFJS提取PDF文本:旧代码失效求新版可用代码

新版PDF.js 文本提取可用实现代码

我刚好有在PDF.js v4.x及以上版本中验证过的可用文本提取代码,分享给你:

// 先确保引入PDF.js库,比如通过CDN加载:
// <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379/pdf.min.js"></script>

async function extractTextFromPDF(pdfSource) {
  try {
    // 根据传入的资源类型初始化PDF文档(支持URL或本地文件ArrayBuffer)
    const pdfConfig = typeof pdfSource === 'string' 
      ? { url: pdfSource } 
      : { data: pdfSource };
    const pdf = await pdfjsLib.getDocument(pdfConfig).promise;
    
    let fullExtractedText = '';

    // 遍历PDF的每一页提取文本
    for (let pageNumber = 1; pageNumber <= pdf.numPages; pageNumber++) {
      const page = await pdf.getPage(pageNumber);
      const textContent = await page.getTextContent();
      
      // 拼接当前页的所有文本片段
      const pageText = textContent.items.map(item => item.str).join(' ');
      fullExtractedText += `${pageText}\n\n`;
    }

    return fullExtractedText;
  } catch (error) {
    console.error('提取PDF文本时发生错误:', error);
    throw error;
  }
}

// 【使用示例1:提取在线PDF文本】
extractTextFromPDF('https://example.com/your-document.pdf')
  .then(text => {
    console.log('提取到的完整文本:', text);
    // 这里可以将文本渲染到页面元素中,比如 document.getElementById('text-output').textContent = text;
  })
  .catch(err => console.error(err));

// 【使用示例2:提取本地上传的PDF文本】
document.getElementById('pdf-upload-input').addEventListener('change', async (e) => {
  const selectedFile = e.target.files[0];
  if (selectedFile && selectedFile.type === 'application/pdf') {
    const fileBuffer = await selectedFile.arrayBuffer();
    const extractedText = await extractTextFromPDF(fileBuffer);
    console.log('本地PDF提取结果:', extractedText);
  }
});

和旧版代码的核心差异说明:

  • 新版PDF.js废弃了旧的回调式API,改用promise结合async/await的异步写法,代码更简洁易维护
  • getDocument返回的对象需要通过.promise属性获取文档实例,这是新版API的强制要求
  • 页面文本提取通过getTextContent()完成,返回的textContent.items中每个元素的str属性直接对应文本内容,无需处理旧版中复杂的字体映射逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:33:17