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

Node.js中如何将Buffer格式的PDF解析为文本?

解决方案

问题根源

你遇到的问题核心有两点:

  1. Express 默认不解析 multipart/form-data 类型请求,request.body 里的是整个表单的原始二进制数据(包含表单分隔符等无关内容),并非单独的PDF文件Buffer。
  2. 前端手动设置 Content-Type: multipart/form-data,覆盖了FormData自动生成的带boundary的正确请求头,导致后端无法正确识别文件。

具体修复步骤

1. 修正前端代码

移除手动设置的 Content-Type 头,FormData会自动生成符合规范的请求头:

export const fetchPDF = (value) => {
  console.log("The value>>>", value);
  const formData = new FormData();
  formData.append('pdfFile', value);
  console.log(Object.fromEntries(formData.entries()))

  return fetch(`${baseURL}/submitPDF`, {
    method: 'POST',
    // 删除手动设置的Content-Type
    body: formData
  })
    .then((response) => {
      if (response.ok) {
        console.log("The response is ok");
        return response;
      } else {
        console.log("the response is not ok", response);
        throw new Error(`Error: ${response.status} - ${response.statusText}`);
      }
    })
    .catch((error) => {
      console.log("There is an error>>>", error.message);
    })
}

2. 后端配置multer解析文件

Express需要借助multer中间件处理multipart/form-data类型的文件上传:

  • 先安装multer:
npm install multer
  • 修改后端路由代码,用multer解析出纯净的PDF Buffer后再传入pdf-parse:
const multer = require('multer');
const pdfParse = require('pdf-parse');

// 配置multer将文件存在内存中,直接获取Buffer
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });

app.post("/submitPDF", upload.single('pdfFile'), async (request, response) => {
  try {
    // 从req.file.buffer获取PDF的原始Buffer
    const pdfBuffer = request.file.buffer;
    const parseResult = await pdfParse(pdfBuffer);
    console.log("提取的PDF文本:", parseResult.text);
    response.status(201).send({ message: "File upload successful", text: parseResult.text });
  } catch (err) {
    console.error("PDF解析失败:", err);
    response.status(500).send({ message: "Failed to parse PDF", error: err.message });
  }
});

补充说明

Node.js的Buffer是Uint8Array的子类,完全符合pdf-parse对输入参数的要求。用multer.memoryStorage()可以直接在内存中获取文件Buffer,无需写入磁盘,效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:32:09