Node.js使用pdfjs-dist提取PDF文本时pdf.getPage不是函数的问题解决
使用pdfjs-dist提取PDF文本时的TypeError问题解决
问题场景
使用Node.js结合pdfjs-dist提取PDF文本,编写以下代码后运行报错:
import pdfjs from 'pdfjs-dist/build/pdf.js'; import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry.js'; pdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker; const pdf = await pdfjs.getDocument('testdoc.pdf'); const page = await pdf.getPage(1);
错误信息:
const page = await pdf.getPage(1); ^ TypeError: pdf.getPage is not a function
错误原因
pdfjs.getDocument() 返回的是PDFLoadingTask对象,而非直接的PDF文档实例。该对象本身不包含getPage方法,必须先通过其内部的promise属性获取到真正的PDFDocument实例,才能调用文档操作相关方法。
解决方法
修改代码,通过pdfjs.getDocument().promise获取PDFDocument实例,完整示例如下:
import pdfjs from 'pdfjs-dist/build/pdf.js'; import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry.js'; pdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker; // 先通过promise属性拿到真正的PDF文档实例 const pdf = await pdfjs.getDocument('testdoc.pdf').promise; const page = await pdf.getPage(1); // 提取当前页面文本的示例 const textContent = await page.getTextContent(); const pageText = textContent.items.map(item => item.str).join(' '); console.log(pageText);
内容的提问来源于stack exchange,提问作者me.at.coding
相关产品推荐
相关产品推荐

