2015-06-26 4 views
0

Когда я пытаюсь преобразовать двоичный файл в PDF, он поврежден.Создание PDF с использованием C#

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' блоков. Попробуйте что-то вроде '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 (данные, 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

Смежные вопросы