我需要以编程方式添加Docusign模板,使用包含多个表单字段的单个PDF文档进行配置。我现在能够创建一个新模板,尽管PDF表单字段没有转换为docusign字段。
创建模板时,JSON有效负载如下所示,通过HTTP POST提交给[baseUrl]/templates
作为多部分请求,包括PDF。
{
"documents": [
{
"documentId": "1",
"name": "fillable-form.pdf",
"transformPdfFields": "true"
}
],
"emailSubject": "Default Blurb",
"enableWetSign": "false",
"envelopeTemplateDefinition": {
"name": "My Template Name",
"shared": "false",
"folderName": "Template Folder"
},
"recipients": {
"signers": [
{
"routingOrder": "1",
"recipientId": "1",
"roleName": "primary-signer",
"defaultRecipient": "true"
}
]
}
}
Post Template Documentation声称您应该能够根据Document parameter specification启用transformPdfFields
属性,但设置该属性似乎无效。
我在DocuSign API auto convert PDF fields to SecureFields中发现了一个类似相关的问题,但没有真正足够的回答。我想知道Docusign是否可以权衡并提供一些指导。
更新#1
听取@ergin提供的建议,我稍微改变了我的请求有效负载(请注意,这与之前针对@ c-davis做出的尝试类似)。
不幸的是,按照案例2中描述的建议(它可以用于从现有PDF表单字段创建新标签),它似乎没有按预期工作。
重要的是要注意这是模板创建,而不是信封创建。
尝试#1:
{
"envelopeTemplateDefinition": {
"name": "Test Template Name",
"shared": false,
"folderName": "test-folder"
},
"emailSubject": "Test Subject",
"enableWetSign": false,
"compositeTemplates": [
{
"inlineTemplates": [
{
"sequence": 1,
"recipients": {
"signers": [
{
"recipientId": 1,
"roleName": "primary-signer",
"defaultRecipient": true
}
]
}
}
],
"document": {
"documentId": 1,
"name": "test-document.pdf",
"transformPdfFields": true
}
}
]
}
结果,在多部分请求中发送时,多部分的第二位正常为PDF文档,模板既没有指定收件人也没有文件。
尝试#2(表示模板请求的收件人属性):
{
"envelopeTemplateDefinition": {
"name": "Test Template Name",
"shared": false,
"folderName": "test-folder"
},
"emailSubject": "Test Subject",
"enableWetSign": false,
"compositeTemplates": [
{
"inlineTemplates": [
{
"sequence": 1,
"recipients": {
"signers": [
{
"recipientId": 1,
"roleName": "primary-signer",
"defaultRecipient": true
}
]
}
}
],
"document": {
"documentId": 1,
"name": "test-document.pdf",
"transformPdfFields": true
}
}
],
"recipients": {
"signers": [
{
"recipientId": 1,
"roleName": "primary-signer",
"defaultRecipient": true
}
]
}
}
结果稍微接近 - 收件人现在按照预期列出,但文档仍未被视为此模板的一部分。文档 与模板关联的唯一方法是将其设置为模板创建的外部属性。
尝试#3(表示模板请求的收件人和文档属性):
{
"envelopeTemplateDefinition": {
"name": "Test Template Name",
"shared": false,
"folderName": "test-folder"
},
"emailSubject": "Test Subject",
"enableWetSign": false,
"compositeTemplates": [
{
"inlineTemplates": [
{
"sequence": 1,
"recipients": {
"signers": [
{
"recipientId": 1,
"roleName": "primary-signer",
"defaultRecipient": true
}
]
}
}
],
"document": {
"documentId": 1,
"name": "test-document.pdf",
"transformPdfFields": true
}
}
],
"recipients": {
"signers": [
{
"recipientId": 1,
"roleName": "primary-signer",
"defaultRecipient": true
}
]
},
"documents": [
{
"documentId": 1,
"name": "test-document.pdf",
"transformPdfFields": true
}
]
}
此最终尝试的结果类似于包含recipients
和documents
属性以及完全取消compositeTemplates
属性的结果(似乎属性无论是否为&#39) ;是否存在)。收件人占位符存在且文档与模板关联,但PDF文档中的PDF字段未被分配" /转换为Docusign字段。
答案 0 :(得分:0)
就transormPdfFields参数而言,我只能在与CompositeTemplate内部的文档关联时使此参数有效。当然,我在谈论在这里发送一个信封,但我打赌在创建模板时也是如此,即使文档可能不同。
我没有针对此特定电话的代码示例,但如果我有空闲时间,我会尝试将其放在一起。
答案 1 :(得分:0)
所以这没有很好的文档记录(很快就会有所改进),但transformPdfFields
属性有两个不同的用途,具体取决于你在请求体中使用它的方式/位置。
对于#1,PDF表单字段的名称需要与DocuSign选项卡的tabLabels
对应。用于实现此目的的示例JSON将是:
{
"emailSubject": "test subject",
"documents": [
{
"documentId": "1",
"name": "document.pdf",
"transformPdfFields": true
}
}
对于#2,您需要使用内联模板部分中启用了compositeTemplates
属性的transformPdfFields
结构,以使平台CREATE new DocuSign选项卡。您还应该记住为收件人设置defaultRecipient
属性为true,以便系统知道将新创建的选项卡分配给谁(即您无法分配选项卡)。
例如,以下JSON应该可以工作:
{
"compositeTemplates": [{
"inlineTemplates": [{
"sequence": 1,
"recipients": {
"signers": [{
"email": "johndoe@email.com",
"name": "John Doe",
"recipientId": "1",
"defaultRecipient": true
}]
}
}],
"document": {
"documentId": 1,
"name": "Contract.pdf",
"transformPdfFields": true
}
}]
}