Member 11364465 Ответов: 3

Как Я Могу Отобразить Pdf-Файл Из Байтового Массива В Mvc?


Я вызываю веб-сервис(используя веб-клиент) в коде mvc, который возвращает массив байтов pdf doc и сохраняет массив байтов в локальной машине как pdf.Pdf-файл генерируется в нужном месте, но когда я открываю его,он показывает ошибку file not supported.Так что кто-нибудь может сказать мне, как решить эту проблему.Мне также нужен API-код, который возвращает pdf-файл на основе переданного ему имени файла.

Sergey Alexandrovich Kryukov

"Он показывает файл не поддерживается ошибка" не является информативным, это не дает нам четкого представления о том, что вы пытаетесь сделать. Вы не должны предполагать, что у пользователя есть какое-либо программное обеспечение для его просмотра.
—СА

F-ES Sitecore

Если Вы читаете поток с помощью функции чтения, то, скорее всего, Вы читаете только его часть, поскольку потоки доставляют свои данные кусками, так что то, что вы записали на диск, является только частью файла. Либо продолжайте использовать метод Read и добавлять его в буфер до тех пор, пока не будет прочитан весь поток

https://msdn.microsoft.com/en-us/library/system.io.stream.read(v=против 110). aspx

или используйте метод, который считывает поток полностью (если он существует), или один из способов-использовать файл.Create чтобы создать поток, который записывает нужный файл на ваш диск, просто используйте метод CopyTo потока, который вернулся из webapi, чтобы скопировать его в поток, полученный из FileCreate. Это будет обрабатывать все куски для вас.

https://msdn.microsoft.com/en-us/library/dd782932(v=против 110). aspx

У меня есть пример кода для этого, но не на мне прямо сейчас, вы можете использовать вышеизложенное, чтобы дать ему идти или google для решения, и в противном случае я могу выкопать код, когда он у меня есть передо мной.

Member 11364465

Мне нужно разместить api на сервере, где находятся мои pdf-файлы. затем я вызываю api из своего кода, передавая файл, чтобы получить pdf-файл, а затем я буду отображать его в браузере.Как мой api вернет pdf-файл и как я могу потреблять его в своем приложении - это то, на что я напал.

3 Ответов

Рейтинг:
4

F-ES Sitecore

Ваш API вернет что-то вроде

return new FileStreamResult(pdfStream, "application/pdf")


где pdfStream-это поток вашего PDF-файла, либо из генератора PDF, который возвращает PDF-файл в виде потока в памяти, либо поток из файла, если он находится на диске.

Если вы хотите получить PDF-файл из этого api и показать его в браузере, вам нужно прочитать поток, а затем переписать поток клиенту.

string url = "http://yourserver/api/getpdf";

WebRequest req = WebRequest.Create(url);
req.Method = "GET";

req.ContentType = "application/x-www-form-urlencoded";
WebResponse response = req.GetResponse();

dataStream = response.GetResponseStream();

Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=test.pdf");
Response.ContentType = "application/pdf";

dataStream.CopyTo(Response.OutputStream);

dataStream.Close();
dataStream.Dispose();
response.Close();
Response.End();


Выше-это клиент для aspx-страницы, но концепция MVC-это то же самое....получить поток из API и надавите на него ответ клиента.


Рейтинг:
2

Arora_Ankit

использовать можно вернуться FileResult.

private FileResult ViewPDF()
      {

          var pdfByte = <your code="">;
          return File(pdfByte, "application/pdf");
      }</your>


Я использовал эту функцию во всплывающем окне (используя IFrame), так как мое требование состояло в том, чтобы показать pdf во всплывающем окне.
надеюсь, это вам поможет


Рейтинг:
2

pavan Satpute

Что бы вы ни попробовали, это не сработает, так как сгенерированное вложение или встроенный файл не будут отображаться в формате PDF. это даст вам ошибку " файл не поддерживается",
Я предлагаю вам использовать iTextSharp для создания PDF-файла.

следующие ссылки могут быть полезны

http://stackoverflow.com/questions/25164257/how-to-convert-html-to-pdf-using-itextsharp[^]

https://www.simple-talk.com/dotnet/asp.net/asp.net-mvc-action-results-and-pdf-content/[^]