Docusign - 打开通过Rest API下载的PDF时出错

时间:2017-02-22 20:31:38

标签: docusignapi

使用REST api,我试图从已完成的信封中获取文档。我的标题是使用X-DocuSign-Authentication。

EnvelopesApi ap = new EnvelopesApi();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

EnvelopeDocumentsResult edr = ap.ListDocuments((AccountId, "xxx-xx-xxx");

List<EnvelopeDocument> docs = edr.EnvelopeDocuments;

foreach(EnvelopeDocument doc in docs)
{  
   Stream stream1 = ap.GetDocument(AccountId, "xxx-xx-xxx", doc.DocumentId);
   StreamReader reader = new System.IO.StreamReader(stream1, encode);
   var data = reader.ReadToEnd();
   StreamWriter writer = new StreamWriter(@"C:\mysigneddoc.pdf");
   writer.Write(data);
   writer.Close();
}

当我尝试打开已完成的pdf时,我收到错误声明

  

签名者身份尚未经过验证。

我可能会出错的任何想法?

1 个答案:

答案 0 :(得分:1)

请查看API配方here以从信封下载文件。

var ap = new EnvelopesApi();
var edr = ap.ListDocuments((AccountId, "xxx-xx-xxx");
List<EnvelopeDocument> docs = edr.EnvelopeDocuments;

foreach(EnvelopeDocument doc in docs)
{
  // GetDocument() API call returns a MemoryStream
  var docStream = (MemoryStream)envelopesApi.GetDocument(accountId, envelopeId, doc.DocumentId);
  // let's save the document to local file system
  filePath = @"C:\temp\" + Path.GetRandomFileName() + ".pdf";
  fs = new FileStream(filePath, FileMode.Create);
  docStream.Seek(0, SeekOrigin.Begin);
  docStream.CopyTo(fs);
  fs.Close();
}

您还可以使用GetEnvelopeDocuments API在信封中下载合并后的文档。您无需查询每个单独的文档。

  • 合并PDF

将字符串合并作为documentId传递。

  

检索包含所有文档和证书的组合内容的PDF。

string envelopeId = "XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
string accountId = "XXXXXX";
var envApi = new EnvelopesApi();

// GetDocument() API call returns a MemoryStream
var docStream = (MemoryStream)envApi.GetDocument(accountId, envelopeId, "combined");
// let's save the document to local file system
string filePath = @"C:\temp\" + Path.GetRandomFileName() + ".pdf";
var fs = new FileStream(filePath, FileMode.Create);
docStream.Seek(0, SeekOrigin.Begin);
docStream.CopyTo(fs);
fs.Close();
  • ZIP文件

将字符串存档作为documentId

传递
  

检索包含所有PDF文档,证书以及用于语音身份验证的任何.WAV文件的ZIP存档。

var envApi = new EnvelopesApi();

// GetDocument() API call returns a MemoryStream
var docStream = (FileStream)envApi.GetDocument(accountId, envelopeId, "archive");
// let's save the document to local file system
string filePath = @"C:\temp\" + Path.GetRandomFileName() + ".zip";
var fs = new FileStream(filePath, FileMode.Create);
docStream.Seek(0, SeekOrigin.Begin);
docStream.CopyTo(fs);
fs.Close();