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

Docusign调用getDocument接口返回空白PDF问题咨询

问题根因及修复方案

必现错误

  • 写入文件编码错误:PDF属于二进制格式文件,你调用fs.writeFile时指定了utf8编码,会强制将二进制PDF数据按UTF-8规则转码,直接破坏文件结构,这是生成空白PDF的核心原因。
  • 变量引用错误:你调用envelopesApi.getDocument拿到的返回值存在results变量中,但写入文件时使用的是未定义的data变量,实际写入的是空值,也会直接生成空白文件。

其他可能诱因

  • documentId参数取值错误:如果需要下载当前信封全部已签署文件的合并版,需要将documentId设置为combined;如果是下载单个文件,需要确认传入的documentId和信封内对应文件的ID匹配,取值错误会返回空内容。
  • 接口权限不足:调用接口使用的accessToken没有envelope_read权限,会导致接口返回空响应。
  • SDK返回格式配置异常:部分版本的Docusign Node.js SDK可配置接口返回base64格式内容,如果你的SDK做了相关配置,直接写入base64字符串也会导致文件损坏。

修复后代码示例

let dsApiClient = new docusign.ApiClient();
dsApiClient.setBasePath(args.basePath);
dsApiClient.addDefaultHeader('Authorization', 'Bearer ' + args.accessToken);

let envelopesApi = new docusign.EnvelopesApi(dsApiClient);
// 若需下载全文件合并版,将第三个参数替换为 'combined'
const fileBuffer = await envelopesApi.getDocument(args.accountId, args.envelopeId, args.documentId, null);
// 二进制文件写入不需要指定编码,或显式指定为 'binary'
fs.writeFile('test.pdf', fileBuffer, (error_file) => {
  if (error_file) {
    console.error('文件写入失败:', error_file);
    return;
  }
  console.log('文件写入成功');
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:45:01