我应该如何向DocuSign提供PDF?

时间:2013-12-13 15:45:14

标签: api rest base64 docusignapi

我们正在使用Python和Requests库使用REST API v2的Add document方法将PDF添加到DocuSign信封中:

response = requests.put(
    '<base URL>/envelopes/<envelope ID>/documents/<next document ID>',
    files={'document': <the PDF file object>},  # <- added to the request's body
    headers=self._get_headers(
        {
            'Content-Disposition': 'document; filename="the-file.pdf";'
        }
    ),
    timeout=60
)

在大多数情况下,这对我们有用,除了通过API不接受大约1/100的PDF。出现此问题时,我们会告诉用户直接通过DocuSign UI上传PDF,该UI可以正常运行。这促使我们(在支持的帮助下)查看上面链接的Add document页面上示例请求上方显示的Document params链接。该页面显示documentBase64属性和许多其他字段。如何以此格式提供文档,并指定所有字段?我应该用files={'document': <JSON-encoded object>}或上面的电话替换上面通话中的文件吗?我无法弄清楚如何添加文档,而不是我们目前的方式。我还有另一种方法吗?

1 个答案:

答案 0 :(得分:3)

现在看来有两种不同的方法可以使用REST API将文档添加到Draft Envelope:

  1. 使用多部分请求,其中第一部分包含JSON正文,每个后续部分包含文档的字节 - 以 未编码格式 。 REST API指南(http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf)的第136-137页显示了此方法的一个示例。

  2. 使用普通请求(即非多部分请求),并以 提供文档字节 作为文档对象的> documentBase64 属性。 (截至最近的2013年12月API发布/更新,这看起来是新的。)

  3. 根据您在问题中包含的信息,我怀疑您目前正在使用方法#1。如上所述,两种方法之间的主要区别在于请求的一般结构,并且ALSO - 方法#1期望文档字节是未编码的,而方法#2期望文档字节是base64编码的。我怀疑你的问题与文件编码有关。即,如果您使用方法#1并且任何文件都已编码,您可能会遇到问题。