如何将渲染为PDF的Visualforce页面通过DocuSign发送电子签名
可行性结论
完全可以实现将动态渲染的Visualforce PDF通过DocuSign发送完成电子签名,无需依赖DocuSign预定义模板。
具体实现方案
下面提供两种生产环境验证过的可行方案:
方案1:Apex直接调用DocuSign REST API实现
- 首先给目标Visualforce页面添加
renderAs="pdf"属性,在Apex控制器中调用PageReference.getContentAsPDF()方法,将加载完所有动态数据的Visualforce页面直接转换为二进制PDF内容,提前校验渲染结果和动态组件的展示是否符合预期。 - 在Salesforce内配置DocuSign连接的命名凭据,存储API认证密钥等敏感信息,避免硬编码认证参数。
- 调用DocuSign的信封创建接口,将生成的PDF作为附件传入请求体,直接在请求参数中定义签名人信息、签名标签规则,不需要提前在DocuSign后台创建模板。签名位置可以通过两种方式定义:一是直接指定PDF页面的坐标值,二是在Visualforce页面内提前埋好隐藏的锚点字符(比如
\s1),DocuSign会自动识别锚点位置放置签名框,适配动态页数的PDF场景。 - 配置接口回调规则,当DocuSign侧完成全流程签名后,自动将签署完成的PDF回传到Salesforce关联的业务对象中存档。
方案2:基于DocuSign for Salesforce官方托管包实现
- 安装官方DocuSign for Salesforce托管包后,无需使用自带的模板发送功能,直接在自定义Apex逻辑中引用包提供的
dfsle命名空间下的标准工具类。 - 将本地生成的Visualforce PDF内容传入
dfsle.Attachment类实例,再组装信封对象、收件人对象,调用官方封装好的发送方法,无需自行处理REST API的签名、请求格式适配等底层逻辑。 - 若需要自定义签名位置,可通过
dfsle.Tab类定义签名标签的属性和关联收件人,绑定到对应PDF页面的坐标或者锚点即可。
注意事项
- 若Visualforce页面引用了外部静态资源、图片,生成PDF时要确保所有资源对当前执行上下文的用户可见,否则会出现PDF渲染缺失的问题。
- 调用
getContentAsPDF()方法在异步上下文(Queueable、Batch Apex)中执行时,要提前校验执行用户的权限,确保其有Visualforce页面和相关业务数据的访问权限。 - 若PDF页数不固定,优先使用锚文本定位签名位置,比固定坐标的兼容性更高。
内容的提问来源于stack exchange,提问作者jigyasu joshi
相关产品推荐
相关产品推荐

