Вы должны закрыть устройство записи, не закрывая основной поток, который будет sh его внутренним буфером. Таким образом, документ не записывается в поток памяти полностью. Все, кроме мс, также должно быть в using
.
Вы можете убедиться, что это происходит, проверив длину ms
в вашем коде по сравнению с кодом ниже.
Когда using (PdfWriter writer =...)
закрывает, закрывает программу записи, что приводит к гриппу sh ожидающие записи в основной поток ms
.
MemoryStream ms = new MemoryStream();
using (PdfWriter writer = new PdfWriter(ms))
using (PdfDocument pdfDocument = new PdfDocument(writer))
using (Document document = new Document(pdfDocument))
{
/*
* Depending on iTextSharp version, you might instead use:
* writer.SetCloseStream(false);
*/
writer.CloseStream = false;
document.Add(new Paragraph("Hello World"));
}
ms.Position = 0;
string pdfName = $"IP-Report-{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.pdf";
return File(ms, "application/pdf", pdfName);