Node.js如何将文件下载至内存直接传入PdfData.extract,无需存磁盘?
解决方案
你可以通过直接获取PDF的二进制Buffer并传入PdfData.extract来避免磁盘写入,具体修改如下:
- 移除所有文件系统(
fs)相关代码,无需再创建临时目录和读写文件 - 将axios的
responseType从'stream'改为'arraybuffer',让axios直接返回PDF的二进制数据Buffer - 直接把axios响应的
data传入PdfData.extract,跳过中间磁盘存储环节
修改后的完整代码:
const { PdfData } = require('pdfdataextract'); const axios = require('axios').default; const getPDFText = async ({ url }) => { const response = await axios({ url, method: 'get', responseType: 'arraybuffer' // 改为获取二进制Buffer }); // 直接将Buffer传入extract方法 return PdfData.extract(response.data, { get: { // 保留你原本的配置内容 }, }); };
补充说明
如果查看pdfdataextract库文档后确认它支持直接处理Stream输入,你也可以尝试将axios的响应流直接传入extract方法,但使用arraybuffer的方式更简单直接——大多数PDF处理库都支持直接接收Buffer作为输入,且无需额外处理流的异步监听逻辑。
内容的提问来源于stack exchange,提问作者pjlangley
相关产品推荐
相关产品推荐

