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

