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

使用pdf.js加载PDF时出现PDFJS is not defined错误的技术求助

解决「PDFJS is not defined」错误的方案

兄弟,我之前刚踩过这个坑!问题出在pdf.js的版本更新上——现在的新版pdf.js(v2.0及以后)已经废弃了PDFJS这个全局对象,改用pdfjsLib作为全局入口了,这就是你找不到它的核心原因。

下面给你一步步解决的方法:

1. 确认正确引入pdf.js库

首先要确保你引入了正确的库文件,推荐用官方稳定的CDN或者本地安装:

<!-- 引入pdf.js核心库 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379/pdf.min.js"></script>
<!-- 单独引入worker脚本(也可以通过代码配置指定路径) -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379/pdf.worker.min.js"></script>

2. 替换代码中的PDFJS为pdfjsLib

把你原有代码里所有的PDFJS都改成pdfjsLib,比如原来的:

PDFJS.getDocument(url).then(pdf => {
  // 处理PDF逻辑
});

要改成:

pdfjsLib.getDocument(url).then(pdf => {
  // 处理PDF逻辑
});

3. 配置Worker路径(关键!)

新版pdf.js依赖worker进程解析PDF,必须指定worker的路径才能正常运行。你可以在代码开头加上配置:

pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379/pdf.worker.min.js';

如果是本地部署的文件,就换成对应的本地路径,比如'/static/js/pdf.worker.min.js'。

完整的最简测试示例

给你一个可以直接运行的示例,你可以对比自己的代码排查问题:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>PDF.js测试</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379/pdf.min.js"></script>
</head>
<body>
  <div id="pdf-container"></div>

  <script>
    // 配置Worker路径
    pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379/pdf.worker.min.js';

    // 测试用PDF地址(可替换为你自己的文件)
    const pdfUrl = 'https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf';

    // 加载并渲染PDF
    pdfjsLib.getDocument(pdfUrl).promise.then(pdf => {
      console.log('PDF加载成功!总页数:', pdf.numPages);
      // 加载第一页示例
      return pdf.getPage(1);
    }).then(page => {
      const scale = 1.5;
      const viewport = page.getViewport({ scale: scale });
      const canvas = document.createElement('canvas');
      const context = canvas.getContext('2d');
      canvas.height = viewport.height;
      canvas.width = viewport.width;
      document.getElementById('pdf-container').appendChild(canvas);
      // 渲染页面到canvas
      return page.render({ canvasContext: context, viewport: viewport }).promise;
    }).catch(error => {
      console.error('PDF加载失败:', error);
    });
  </script>
</body>
</html>

额外排查点

  • 检查脚本引入顺序:必须先引入pdf.js,再执行你的业务代码,不能反过来
  • 打开浏览器控制台的「网络」标签,确认pdf.js和worker脚本都加载成功(没有404错误)
  • 如果用了jQuery的$(document).ready(),确保你的PDF操作代码完全包裹在这个回调里,保证DOM加载完成后再执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:17:25