У меня есть несколько PDF-файлов в форме MemoryStreams, и мне нужно объединить MemoryStreams, чтобы они представляли собой один длинный PDF-файл, и отправить их в браузер.
Я создал следующую функцию с помощью iText7, которая принимает список MemoryStreams, которые предположительно являются PDF-файлами, а вывод представляет собой MemoryStream составных PDF-файлов
public static MemoryStream PdfCat(List<MemoryStream> pdfs)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
using(PdfDocument applicationPdf = new PdfDocument(new PdfWriter(baos)))
{
PdfMerger merger = new PdfMerger(applicationPdf);
// add every document to the empty pdf
foreach (MemoryStream pdfMemStream in pdfs)
{
using (PdfDocument pdf = new PdfDocument(new PdfReader(pdfMemStream)))
{
merger.Merge(pdf, 1, pdf.GetNumberOfPages());
}
}
baos.Position = 0;
merger.Close();
}
return new MemoryStream(baos.ToArray());
}
Я пытаюсь отправить PDF-файл в браузер в контроллере с помощью следующего:
MemoryStream application = FileUtils.PdfCat(applicationPdfs);
return new FileStreamResult(application, "application/pdf");
Где applicationPdfs
- это List<MemoryStream>
.
Кнопка в моем HTML выглядит следующим образом:
<a href="~/Report/Index/@Model.id" target="_blank">View all attachments</a>
Проблема заключается в том, что, когда я нажимаю "Просмотр кнопку "все вложения", я получаю в браузере следующую ошибку:
Мне удалось сохранить PDF-файл локально и просмотреть его таким образом, поэтому PDF-файл корректно объединяется. Кто-нибудь знает, что означает ошибка и как я могу это исправить?
Обновление : похоже, это работает только тогда, когда я использую FireFox в качестве браузера. По какой-то причине ошибка возникает только с IE и Chrome.