WebApi возвращает пустой файл PDF - PullRequest
1 голос
/ 04 марта 2020

Я использую MigraDo c для создания PDF, он отлично сохраняется на локальном компьютере, но когда я отправляю этот поток файлов в webapi, браузер открывает его с пустым содержимым.

var response = new HttpResponseMessage(HttpStatusCode.OK)
               {
                   Content = new StreamContent(new MemoryStream(pdfByteArray))
               };
response.Content.Headers.ContentDisposition = 
              new ContentDispositionHeaderValue("attachment")
              {
                   FileName = "MyPdf.pdf"
              };
response.Content.Headers.ContentType = 
              new MediaTypeHeaderValue(@"application/pdf")
response.Content.Headers.ContentLength = pdfByteArray.Length;
return response;

Когда я открываю инструменты разработчика в Chrome, я вижу, что некоторые символы ответа выглядят так: enter image description here

Хотя при попытке создать локальный файл, использующий тот же поток байтов:

using (Stream stream = File.Create(@"d:\work\Test.pdf"))
{
    new MemoryStream(pdfByteArray).CopyTo(stream);
}

Он правильно отображает содержимое PDF.

Я пытался указать другой CharSet в Response Content-Type (например, UTF-7, UTF-8, windows -1252 et c) и вижу, что символы ответа меняются, но результат тот же - я вижу пустой PDF. Еще одно замечание: когда я отправляю Json с pdfByteArray, закодированным в Base64, в пользовательском интерфейсе я могу декодировать это и создать правильный PDF. Я пытаюсь найти способ отправки содержимого приложения / pdf и позволить браузеру правильно отображать PDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...