使用已转换的PDF表单字段创建模板

时间:2015-12-10 23:04:26

标签: docusignapi

我需要以编程方式添加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文档,模板既没有指定收件人也没有文件。

enter image description here

尝试#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
      }
    ]
  }
}

结果稍微接近 - 收件人现在按照预期列出,但文档仍未被视为此模板的一部分。文档 与模板关联的唯一方法是将其设置为模板创建的外部属性。

enter image description here

尝试#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
    }
  ]
}

此最终尝试的结果类似于包含recipientsdocuments属性以及完全取消compositeTemplates属性的结果(似乎属性无论是否为&#39) ;是否存在)。收件人占位符存在且文档与模板关联,但PDF文档中的PDF字段未被分配" /转换为Docusign字段。

enter image description here

2 个答案:

答案 0 :(得分:0)

就transormPdfFields参数而言,我只能在与CompositeTemplate内部的文档关联时使此参数有效。当然,我在谈论在这里发送一个信封,但我打赌在创建模板时也是如此,即使文档可能不同。

我没有针对此特定电话的代码示例,但如果我有空闲时间,我会尝试将其放在一起。

答案 1 :(得分:0)

所以这没有很好的文档记录(很快就会有所改进),但transformPdfFields属性有两个不同的用途,具体取决于你在请求体中使用它的方式/位置。

  • 案例1:可用于将现有PDF表单字段中包含的值转移到DocuSign标签中。
  • 案例2:它可用于从现有PDF表单字段创建新标签。

对于#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
        }
    }]
}