如何运行pdf.js的Node示例?解决模块找不到错误
解决pdf.js Node示例运行失败的问题及相关疑问解答
一、让Node示例正常运行的方法
方法1:调整运行目录
你当前进入examples/node目录后运行node getinfo.js,但脚本里的模块引用路径是相对于项目根目录的。回到项目根目录执行命令即可:
cd C:\Repositories\pdf.js node examples/node/getinfo.js
方法2:修改脚本的模块引用路径
如果想在examples/node目录下运行,修改getinfo.js里的require路径为相对当前文件的路径:
// 原路径 const pdfjsLib = require('pdfjs-dist/legacy/build/pdf.js'); // 修改为 const pdfjsLib = require('../../pdfjs-dist/legacy/build/pdf.js');
修改后再在examples/node目录下运行node getinfo.js即可。
二、关于legacy路径的疑问
为什么用legacy路径?
pdfjs-dist/legacy下的版本是为兼容旧运行环境(比如不支持ES模块的Node版本、老旧浏览器)而提供的,采用CommonJS模块规范,适配传统Node项目的require语法。现代版本(pdfjs-dist/build)则使用ES模块,更贴合当前前端/Node的模块化趋势。能否更新到当前版本?
可以。只需修改模块引用路径为现代版本入口:
// 替换legacy路径为现代版本路径 const pdfjsLib = require('pdfjs-dist/build/pdf.js');
如果你的Node版本(v18+已支持)兼容ES模块,也可改用import语法,同时给项目的package.json添加"type": "module"配置:
import * as pdfjsLib from 'pdfjs-dist/build/pdf.js';
三、最新入门示例
推荐通过npm安装pdfjs-dist搭建项目,步骤更简洁且能使用最新版本:
- 创建新目录并初始化项目:
mkdir pdfjs-node-demo cd pdfjs-node-demo npm init -y npm install pdfjs-dist
- 创建
getinfo.js脚本:
const fs = require('fs'); const pdfjsLib = require('pdfjs-dist'); async function extractPdfInfo(pdfFilePath) { // 读取本地PDF文件 const pdfData = new Uint8Array(fs.readFileSync(pdfFilePath)); // 加载PDF文档 const pdfDoc = await pdfjsLib.getDocument(pdfData).promise; // 输出文档信息 console.log('文档标题:', pdfDoc.info.Title || '无标题'); console.log('作者:', pdfDoc.info.Author || '未知作者'); console.log('总页数:', pdfDoc.numPages); // 关闭文档 await pdfDoc.destroy(); } // 替换为你的PDF文件路径 extractPdfInfo('./test.pdf');
- 运行脚本:
node getinfo.js
内容的提问来源于stack exchange,提问作者me.at.coding
相关产品推荐
相关产品推荐

