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

如何使用DocuSign NodeJS SDK将文档保存到本地磁盘?

解决DocuSign NodeJS客户端下载PDF文件损坏的问题

问题核心:使用DocuSign eSignature NodeJS客户端下载文档时,默认返回的数据被自动解析为UTF-8字符串,破坏了PDF的二进制结构,导致写入本地后文件损坏。

修复方案1:获取ArrayBuffer并转换为Buffer写入

修改代码,在调用getDocument时指定responseType: 'arraybuffer',确保拿到原始二进制数据,再转换为Node.js的Buffer写入磁盘:

import * as docusign from 'docusign-esign';
import { writeFile } from 'fs/promises';

// 假设dsApiClient已完成配置
const envelopesApi = new docusign.EnvelopesApi(dsApiClient);

(async () => {
  const options = { responseType: 'arraybuffer' };
  const data = await envelopesApi.getDocument(accountId, envelopeId, documentId, options);
  
  await writeFile('docusign.pdf', Buffer.from(data));
})();

修复方案2:使用流式下载(适合大文件)

如果文件较大,推荐用流式方式直接写入,避免占用过多内存:

import * as docusign from 'docusign-esign';
import { createWriteStream } from 'fs';
import { promisify } from 'util';
const pipeline = promisify(require('stream').pipeline);

// 假设dsApiClient已完成配置
const envelopesApi = new docusign.EnvelopesApi(dsApiClient);

(async () => {
  const options = { responseType: 'stream' };
  const documentStream = await envelopesApi.getDocument(accountId, envelopeId, documentId, options);
  
  await pipeline(documentStream, createWriteStream('docusign.pdf'));
})();

原理说明:DocuSign API默认返回PDF的字节流,但NodeJS客户端默认会将响应解析为UTF-8字符串,二进制数据中的非UTF-8字符会被替换或丢失,导致PDF文件结构损坏。通过指定responseType为arraybuffer或stream,可以直接获取原始二进制数据,保证文件完整性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:22:19