2015-06-26 57 views
0

當我嘗試將二進制文件轉換爲PDF時,pdf已損壞。使用C#創建PDF

byte[] stream = presenter.getItemTable(); 

Response.Clear(); 
Response.ClearHeaders(); 
Response.ContentType = "application/pdf"; 
Response.AddHeader ("Content-Disposition", "attachment; filename=PressRelease.pdf"); 
Response.BinaryWrite(stream);//Entities.EDRSearchResult.ByteStream); 
Response.Flush(); 
Response.End(); 

但是,當我將相同的二進制轉換爲Excel它工作正常,可以打開沒有任何錯誤。

byte[] stream = presenter.getItemTable(); 
Response.Clear(); 
Response.ClearHeaders(); 
Response.ContentType = "application/vnd.openxmlformats - officedocument.spreadsheetml.sheet"; 
Response.AddHeader("content-disposition","attachment;filename=DataTable.xls"); 
Response.BinaryWrite(stream); 
Response.Flush(); 
Response.End(); 

請幫幫我。

+0

這可能不是,但你應該總是換流在'using'塊。嘗試像'使用(var stream = presenter.getItemTable()){...}' – t3dodson

+0

請指出**你的**數據轉換。我看到你所做的就是設置一個標題**,聲明**一種格式。 – mkl

回答

0

當您嘗試將二進制文件轉換爲PDF在這種情況下,你寫

Response.AddHeader ("Content-Disposition", "attachment; filename=PressRelease.pdf"); 

嘗試

Response.AddHeader ("content-disposition", "attachment; filename=PressRelease.pdf"); 
+0

感謝您的快速反應,但仍然同樣的結果。 – devan

+0

https://xamltopdf.codeplex.com/也許Response.BinaryWrite(流);改爲Response.OutputStream.Write(data,0,data.Length); – Hhovhann

+0

https://en.wikipedia.org/wiki/Internet_media_type#Prefix_vnd application/vnd.openxmlformats-officedocument.spreadsheetml.sheet而不是application/vnd.openxmlformats - officedocument.spreadsheetml.sheet – Hhovhann