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

将Xero的getAsPDF返回Buffer转为Base64格式生成PDF遇问题

解决Xero getAsPDF接口Buffer转PDF失败的问题

先排查最基础的验证点:

  • 把接口返回的原始Buffer直接写入本地文件,确认是否能正常打开:
    // Node.js示例
    const fs = require('fs');
    fs.writeFileSync('test.pdf', yourBufferResponse);
    
    如果这个文件能打开,说明问题出在Base64转换环节;如果打不开,检查请求头是否设置了Accept: application/pdf,确保Xero返回的是正确的二进制PDF数据。

如果原始Buffer是正常的,重点检查Base64转换逻辑:

  • 禁止先把Buffer转成utf8字符串再转Base64,这会直接破坏二进制结构。正确做法是用Buffer自带的Base64编码方法:
    // Node.js正确转换方式
    const base64Str = yourBufferResponse.toString('base64');
    
  • 前端场景下,确保先拿到ArrayBuffer再转Base64,不要直接处理字符串响应:
    // 前端示例
    const arrayBuffer = await response.arrayBuffer();
    const base64Str = btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)));
    

发送PDF时的注意事项:

  • 若通过API发送原始PDF,请求头需设置Content-Type: application/pdf;若发送Base64数据,需在字符串前添加前缀data:application/pdf;base64,(比如前端嵌入PDF时需要)。

最后排查中间环节:确认日志打印、JSON序列化等操作没有篡改Buffer数据,这类操作极易损坏二进制内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:55:24