2015-06-26 60 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