JavaScript中如何将pdfreader读取的PDF文本项存储到数组中
实现方案
在解析逻辑外提前声明用于存储文本的数组,每识别到有效文本段就将内容推入数组;parseFileItems的回调接收到null值时代表整个PDF解析完成,此时数组内已经存好了所有提取到的文本,就可以执行后续调用逻辑。
修改后的可运行代码如下:
const PdfReader = require("pdfreader").PdfReader; // 初始化存储PDF文本的数组 const pdfTextArr = []; new PdfReader().parseFileItems("sample.pdf", function (err, item) { // 优先处理解析异常 if (err) { console.error("PDF解析失败:", err); return; } // 匹配到文本内容就存入数组 if (item && item.text) { pdfTextArr.push(item.text); } // 解析完成标记:item为null if (item === null) { // 所有依赖pdfTextArr的后续逻辑都写在这里 console.log("文本提取完成,共提取到文本段数量:", pdfTextArr.length); // 例如可以打印全量文本、做关键词匹配、内容转存等操作 } });
注意事项
- 不要在解析回调的外部同步读取
pdfTextArr:PDF解析是异步IO操作,同步执行的代码运行时解析流程还没结束,此时访问数组只会拿到空值。所有需要用到提取结果的逻辑,要么放在item === null的判断分支内,要么封装成函数在该分支内调用。 - 如果需要把跨页的同段落文本拼接成完整字符串,可以在推入数组前根据item携带的坐标、页码信息做拼接处理,不需要额外改存储逻辑。
内容的提问来源于stack exchange,提问作者agreppi
相关产品推荐
相关产品推荐

