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
相关产品推荐
相关产品推荐

