2015-05-15 12 views
0

我有一個簽名的pdf,Adobe簽名很好。我想要下載此文檔時,我的問題就開始了。下載已簽名的pdf文件的問題c#

通過的webmethod我得到的簽名文件的字節數。直到這裏沒有問題。

如果我嘗試將文件保存在我的服務器上,當我打開該文件的一切是正確的。但是,如果我打開它時嘗試下載,則簽名是錯誤的。

這是Adobe Reader的錯誤:

「的署名數據的範圍是由一系列意外的字節定義 詳細情況:簽名的字節範圍無效」

這是我下載的文件的方式:

HttpContext.Current.Response.ContentType = "application/pdf"; 
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename= Factura.pdf"); 
HttpContext.Current.Response.AddHeader("Content-Length", newStream.Length.ToString()); 
HttpContext.Current.Response.Buffer = true; 
HttpContext.Current.Response.BufferOutput = true; 
HttpContext.Current.Response.Clear(); 
HttpContext.Current.Response.OutputStream.Write(newStream.GetBuffer(), 0, newStream.GetBuffer().Length); 
HttpContext.Current.Response.OutputStream.Flush(); 
HttpContext.Current.ApplicationInstance.CompleteRequest(); 

誰能幫我解決這個問題?

回答

1

您正在發送比標頭中廣告的更多字節。請執行newStream.ToArray()並只使用字節數組。其他的事情要檢查的是,如果你真的有newStream所有的字節,保存到一個文件來檢查(從ToArray()

+0

謝謝你的答案,我改變了這一行:'HttpContext.Current.Response.AddHeader(「 Content-Length「,newStream.ToArray()。Length.ToString());'和I(」Content-Length「,newStream.Length.ToString());'爲這個其他的:'HttpContext.Current.Response.AddHeader有同樣的問題 我可以檢查'newStream'是否有所有字節,因爲我在下載文件之前保存了文件,我可以完美地讀取它 –