2

我们试图为我们的 API 解决方案解决的特定场景是使用模板创建信封并将模板文档替换为用户指定的文档。DocuSign 关于创建复合模板的文档清楚地显示了服务器端模板和内联模板的步骤,并且此功能对我们来说是正确的。但是,包含备用文档的 XML 字符串部分不会影响模板。这是 DocuSign 示例的链接,后面是有关复合模板文档部分的代码片段。

https://www.docusign.com/p/APIGuide/Content/Sending%20Group/Rules%20for%20CompositeTemplate%20Usage.htm

<Document>
    <ID>1</ID>
    <Name>Form Document</Name>
    <PDFBytes>PDF_BYTES_GO_HERE</PDFBytes>
    <TransformPdfFields>true</TransformPdfFields>
    <FileExtension>pdf</FileExtension>
</Document>

我们尝试了多种将 pdf 分解为字节以插入“PDF_BYTES_GO_HERE”部分的变体。

这是我们用来获取 pdf 字节、将它们转换为字符串并插入到标签中的代码。

Dim fs As FileStream
    fs = File.Open(filePath, FileMode.Open)
    Dim bytes As Byte() = New Byte(fs.Length - 1) {}
    fs.Read(bytes, 0, System.Convert.ToInt32(fs.Length))
    fs.Close()
    Dim byteString As String = System.Convert.ToBase64String(bytes, 0, bytes.Length)

byteString 是我们随后在 XML 字符串中使用的字符串。

"<Document>" & _
    "<documentId>1</documentId>" & _
    "<name>DOCUSIGN API TEST</name>" & _
    "<PDFBytes>" & byteString & "</PDFBytes>" & _
    "<TransformPdfFields>false</TransformPdfFields>" & _
    "<FileExtension>pdf</FileExtension>" & _
"</Document>" & _

标签中需要什么类型的数据,将 pdf 转换为该数据的最佳方法是什么?

4

1 回答 1

3

根据您链接到的文档以及您包含的代码示例,您似乎正在使用 DocuSign SOAP API。如果是这种情况,那么DocuSign SOAP API 指南对您来说将是一个有用的参考。正如指南指定的那样,PDFBytes属性需要一个表示文档内容的 base64 编码字节流:

文档属性

您是否手动构建 XML 有效负载?如果是这样,您可能要考虑为 DocuSign WSDL 添加一个服务引用到您的项目,然后使用来自它的代理类(即 DocuSign 对象模型)来构建有效负载并随后发送信封。如果您走这条路,API 指南包含几种不同语言的代码示例,这些示例说明了在信封创建期间PDFBytes属性的设置——从第 62 页开始。例如:

C#

// Attach the document(s)
envelope.Documents = new DocuSignWeb.Document[1];
DocuSignWeb.Document doc = new DocuSignWeb.Document();
doc.ID = "1";
doc.Name = "Document Name";
doc.PDFBytes = [Location of Document];
envelope.Documents[0] = doc;

PHP

// Attach the document
$doc = new Document();
$doc->ID = "1";
$doc->Name = "Picture PDF";
$doc->PDFBytes = file_get_contents("docs/picturePdf.pdf");
$env->Documents = array($doc);

也许尝试在这些示例之一之后对您的方法进行建模(在 VB 中,而不是在 C# 或 PHP 中)?

于 2014-09-04T21:50:59.003 回答