我们尝试为API解决方案解决的特定情况是使用模板创建信封,并将模板文档替换为用户指定的文档。DocuSign的有关创建复合模板的文档清楚地显示了服务器端模板和内联模板的步骤,并且此功能对我们而言正常工作。但是,XML字符串中包含备用文档的部分不会影响模板。这是DocuSign的示例的链接,后跟有关复合模板文档部分的代码段。
<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转换为该数据的最佳方法是什么?
根据您链接到的文档以及所包含的代码示例,似乎您正在使用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中)对您的方法进行建模?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句