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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:36:24