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

如何在Salesforce中通过DocuSign Apex Toolkit保存已发送信封的原始生成PDF?

解决Apex Toolkit发送信封后保存原始生成PDF的问题

要在信封发送后保存原始生成的PDF,仅靠dfsle.Document.WriteBack无法实现(它仅处理签署完成后的文件),你可以通过以下步骤达成需求:

步骤1:获取信封内的原始文档内容

信封发送成功后,调用DocuSign Apex Toolkit的API获取原始文档的字节流。使用dfsle.Envelope.getDocuments方法获取信封内的文档列表,再提取对应原始文档的内容。

步骤2:将原始文档保存为Salesforce File

把获取到的原始文档字节流创建为ContentVersion记录,并关联到目标业务记录(比如你代码里的mySourceId对应的记录)。

示例代码

以下是完整实现代码,需在信封发送成功后执行:

// 替换为实际发送后的信封ID
String envelopeId = '你的信封ID';
// 替换为要关联的业务记录ID(如Opportunity、Account的ID)
Id mySourceId = '关联记录ID';

// 获取信封中的所有文档
List<dfsle.Document> docs = dfsle.Envelope.getDocuments(new dfsle.Id(envelopeId));
for(dfsle.Document doc : docs) {
    // 过滤掉附加文档(如完成证书),仅保留原始生成的文档
    if(!doc.attachments && doc.name != 'Certificate of Completion') {
        // 获取原始文档的字节流
        Blob docBlob = dfsle.Document.getContent(doc.id);
        
        // 创建ContentVersion记录
        ContentVersion cv = new ContentVersion();
        cv.Title = '原始签署文档_' + doc.name;
        cv.PathOnClient = '/原始签署文档_' + doc.name;
        cv.VersionData = docBlob;
        cv.FirstPublishLocationId = mySourceId; // 关联到目标业务记录
        insert cv;
    }
}

补充说明

  • 如果你想在信封发送的同时触发保存操作,可以把上述代码整合到信封发送成功的回调逻辑中,或者结合dfsle.Envelope.Options的状态事件更新,在STATUS_SENT状态触发时执行保存。
  • 可根据实际需求调整文档名称、过滤规则,确保只保存需要的原始PDF。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:32:44