Pdf 如何将服务器模板应用于DocuSign API中的信封文档?

Pdf 如何将服务器模板应用于DocuSign API中的信封文档?,pdf,docusignapi,Pdf,Docusignapi,我有一个客户登录到他们的DS帐户,上传一个17页的PDF,单击侧面的操作链接并选择“应用模板”。该模板包含选项卡和角色。他们在DS UI中填写角色并单击发送。我正试图通过API重建该流程 我发现这看起来应该适合我的场景: 我收到了一个34页的信封:原来的17页上传的PDF和模板中的17页。正在添加模板,而不是应用模板 该模板的文档是分开的(例如,一个4页的文档有两个选项卡,一个1页的文档有一个选项卡,等等,总共17页)。它通过UI工作得很好,所以不确定这是否会影响任何东西 如何上载PDF并将模板

我有一个客户登录到他们的DS帐户,上传一个17页的PDF,单击侧面的操作链接并选择“应用模板”。该模板包含选项卡和角色。他们在DS UI中填写角色并单击发送。我正试图通过API重建该流程

我发现这看起来应该适合我的场景:

我收到了一个34页的信封:原来的17页上传的PDF和模板中的17页。正在添加模板,而不是应用模板

该模板的文档是分开的(例如,一个4页的文档有两个选项卡,一个1页的文档有一个选项卡,等等,总共17页)。它通过UI工作得很好,所以不确定这是否会影响任何东西

如何上载PDF并将模板应用到文档

这是我的请求负载:

POST https://demo.docusign.net/restapi/v2/accounts/ACCTNMBR/envelopes HTTP/1.1
Accept: application/json
Content-Type: multipart/form-data; boundary=myboundary


--myboundary
Content-Type: application/json
Content-Disposition: form-data

{
  "emailBlurb": "Test Envelope Blurb",
  "emailSubject": "Test Envelope Subject",
  "status": "created",
  "signingLocation": "Online",
  "compositeTemplates": [
  {
    "document": {
      "documentId": 1,
      "name": "UPLOADED.pdf"
    },
    "inlineTemplates": [{
      "sequence": "1",
      "recipients": {
        "signers": [{
          "email": "jane.doe@example.com",
          "name": "Jane Doe",
          "recipientId": "1",
          "roleName": "Signer1",
          "clientUserId": "123"
        }]
      }
    }]
  },
  {
    "serverTemplates": [{
      "sequence": "1",
      "templateId": "TEMPLATE_ID"
    }]
  }]
}

--myboundary

Content-Type: application/pdf
Content-Disposition: file; filename="UPLOADED.pdf"; documentid=1

PDF_BYTES_HERE

--myboundary--

您发布的请求正在创建两个复合模板。第一个是您上传的PDF并定义您的签名者,而第二个是服务器端模板的内容。解决方案是只定义一个复合模板。这将导致上载的PDF、内联模板和服务器端模板全部合并。例如:

POST https://demo.docusign.net/restapi/v2/accounts/ACCTNMBR/envelopes HTTP/1.1
Accept: application/json
Content-Type: multipart/form-data; boundary=myboundary


--myboundary
Content-Type: application/json
Content-Disposition: form-data

{
  "emailBlurb": "Test Envelope Blurb",
  "emailSubject": "Test Envelope Subject",
  "status": "created",
  "signingLocation": "Online",
  "compositeTemplates": [
  {
    "document": {
      "documentId": 1,
      "name": "UPLOADED.pdf"
    },
    "inlineTemplates": [{
      "sequence": "1",
      "recipients": {
        "signers": [{
          "email": "jane.doe@example.com",
          "name": "Jane Doe",
          "recipientId": "1",
          "roleName": "Signer1",
          "clientUserId": "123"
        }]
      }
    }],
    "serverTemplates": [{
      "sequence": "2",
      "templateId": "TEMPLATE_ID"
    }]
  }]
}

--myboundary

Content-Type: application/pdf
Content-Disposition: file; filename="UPLOADED.pdf"; documentid=1

PDF_BYTES_HERE

--myboundary--
但有几件事需要注意:

  • 第一个文档成功-较低顺序模板贡献文档
  • 最后一个收件人/制表符获胜-更高顺序的模板覆盖收件人/制表符
  • 如果服务器端模板有多个文档,则可能需要上载多个文档。如果您打算上传一个PDF,那么服务器端模板也应该有一个文档

最终的答案是创建一个信封,将上传的文档以草稿形式封装起来。然后将模板应用于信封的文档,而不是信封本身或使用复合模板

POST https://demo.docusign.net/restapi/v2/accounts/ACCTNMBR/envelopes/ENVELOPEID/documents/1/templates HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "documentTemplates": [{
    "documentId": "1",
    "templateId": "TEMPLATE_ID",
    "documentStartPage": "1",
    "documentEndPage": "15"
  }]
}

谢谢你的回答和下面的解释,但这并没有解决我遇到的问题。这是我看过我链接到的SO帖子后得到的第一个版本。:)