2017-05-09 73 views
1

当通过Connect事件通知从DocuSign保存签名的PDF文档时,出现空白PDF文件。 据我所知值Base64编码的PDFBytes,所以这是我的代码将其转换成字符串:保存来自DocuSign Connect的经过签名的PDF文件时的空文件

XmlNode docs = xmldoc.SelectSingleNode("//a:DocumentPDFs", mgr); 
       foreach (XmlNode doc in docs.ChildNodes) 
       { 
        string documentName = doc.ChildNodes[0].InnerText; 
        string documentId = doc.ChildNodes[2].InnerText;  
        string byteStr = Encoding.UTF8.GetString(Convert.FromBase64String(doc.ChildNodes[1].InnerText));      
        System.IO.File.WriteAllText(LOGPATH + envelopeId.InnerText + "_" + documentId + "_" + documentName, byteStr); 
       } 

然而,这样会产生空的PDF文件。有没有人有过这方面的成功?

+0

能否请您发布的'价值doc.ChildNodes [1] .InnerText' –

+0

您可以在http://documentsigningdemo.networxsolutions.co.uk/documents/ffb3019a-c529查看通知XML -4f48-8085-64238d9a1c52_Completed_55e20fde-d56e-44b4-be3d-4f778c896b0e.xml –

回答

0

在转换Base64字符串之后,不需要对字节进行编码。试试这个

byte[] fileBytes = Convert.FromBase64String(doc.ChildNodes[1].InnerText); 
string filePath = LOGPATH + envelopeId.InnerText + "_" + documentId + "_" + documentName + ".pdf"; 
System.IO.File.WriteAllBytes(filePath , fileBytes); 
+0

我试过这个,现在正在获取未能加载的PDF。 –

+0

我现在已经放弃了从xml中提取文件,现在正在使用对GetDocument Api方法的调用,该方法正在为我工​​作。 –

+0

我已经更新了我的答案。请再试一次。您不需要进行额外的GetDocument调用。 –