Kathy Lori
Kathy Lori

Reputation: 497

Docusign - Error opening PDF downloaded through the Rest API

With the REST api, I am trying to get the documents out of a completed envelope. My header is using 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();
}

When I try to open the completed pdf, I get the error stating that

the signers identity has not been verified.

Any ideas where I might be going wrong?

Upvotes: 2

Views: 670

Answers (1)

Praveen Reddy
Praveen Reddy

Reputation: 7383

Please look at the API recipe here to download the documents from an envelope.

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();
}

You can also download the combined documents in an envelope using the GetEnvelopeDocuments api. You are not required to query for each individual document.


  • Combined PDF

Pass the string combined as the documentId.

Retrieve a PDF that contains the combined content of all documents and the certificate.

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 file

Pass the string archive as documentId

Retrieve a ZIP archive that contains all of the PDF documents, the certificate, and any .WAV files used for voice authentication.

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();

Upvotes: 2

Related Questions