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

调用Salesforce REST API获取Attachment后生成PDF为空白如何解决

核心问题
  • axios默认将返回值解析为UTF-8文本格式,PDF属于二进制文件,强制转文本会破坏原始字节流,导致PDF的渲染数据丢失但元数据(如页数、文件结构)保留,所以出现页数正确但内容空白的情况。
  • 冗余配置问题:GET请求不需要设置Content-Type请求头,该字段用于标识请求体的内容类型,GET请求无请求体,该配置无效。
修复方案

首先修改请求配置,明确指定axios接收二进制数据:

var config = {
    method: 'get',
    url: '<Domain>/services/data/v48.0/sobjects/Attachment/00PD000000HQD68MAH/Body',
    headers: {
        'Authorization': `Bearer ${accessToken}`
    },
    // 关键配置:指定返回值为ArrayBuffer二进制格式
    responseType: 'arraybuffer'
};

let rawData = await axios(config);
rawData = rawData.data

客户端下载逻辑无需大幅修改,直接使用返回的ArrayBuffer生成Blob即可,可新增内存释放优化项:

var downloadLink = document.createElement('a');
downloadLink.target = '_blank';
downloadLink.download = 'test.pdf';

// 直接传入ArrayBuffer生成Blob即可
var blob = new Blob([rawData], {type: 'application/pdf'});

var downloadUrl = URL.createObjectURL(blob);
downloadLink.href = downloadUrl;
document.body.append(downloadLink);
downloadLink.click();
// 释放对象URL,避免内存泄漏
URL.revokeObjectURL(downloadUrl);
downloadLink.remove();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:15:07