如何将给定PDF编码数据转换为可预览Buffer并云端存储?
解决PDF转可预览Buffer的问题
首先你得明确:你现在贴出来的这段PDF内容已经是被当作文本渲染后的损坏数据——里面的二进制流部分(比如stream标签里的乱码)因为文本编码的问题,已经丢失了原始的字节信息,直接用base64或binary编码转换肯定生成损坏的文件。
可行的解决步骤:
优先获取原始二进制源数据:
如果你是从API、文件或者其他渠道拿到这段PDF,要确保获取过程中不经过任何文本编码转换。比如:- 用Node.js的
fetch请求时,设置responseType: 'arraybuffer',然后直接转Buffer:const response = await fetch('your-pdf-url'); const arrayBuffer = await response.arrayBuffer(); const pdfBuffer = Buffer.from(arrayBuffer); - 用Axios的话,设置
responseType: 'arraybuffer':const response = await axios.get('your-pdf-url', { responseType: 'arraybuffer' }); const pdfBuffer = Buffer.from(response.data); - 读取本地PDF文件时,直接获取Buffer:
const fs = require('fs'); const pdfBuffer = fs.readFileSync('./your-file.pdf');
- 用Node.js的
如果只能拿到当前损坏的文本数据:
这种情况下无法恢复完整的PDF,因为二进制流的乱码是不可逆的——你必须拿到未经过文本转码的原始二进制数据才能正确生成可预览的Buffer。
验证方法:
生成Buffer后,可以用fs.writeFileSync('test.pdf', pdfBuffer)写入本地文件,打开看看是否正常,如果正常就可以上传云端了。
内容的提问来源于stack exchange,提问作者Shubham Sharma
相关产品推荐
相关产品推荐

