IText 7 присоединяется к электронной почте

Christopher Drzal спросил: 12 мая 2018 в 04:54 в: c#

Я пытаюсь прикрепить PDF-файл, созданный с помощью iText7, к электронному письму. Письмо отправляется успешно, но прикрепленный PDF-файл всегда поврежден и имеет размер около 15 байт. Согласно моему чтению, это должно быть легко реализовано с помощью MemoryStream, но я думаю, что я испортил "порядок операций".

MemoryStream ms = new MemoryStream();
string fileName = vm.ClientFirstName + vm.ClientLastName + vm.SubmittedDate.Year + vm.SubmittedDate.Month + vm.SubmittedDate.Day + "referral.pdf";
PdfWriter writer = new PdfWriter(ms);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
PdfFont font = PdfFontFactory.CreateFont(iText.IO.Font.Constants.StandardFonts.HELVETICA);
Image img = new Image(ImageDataFactory.Create(HttpContext.Current.Server.MapPath("~\\Content\\Images\\banner.png")));
List list = new List().SetSymbolIndent(12).SetListSymbol("").SetFont(font);
document.Add(img);
document.Add(new Paragraph("Radiology Referral").SetFont(font).SetFontSize(24));
document.Add(new Paragraph("VARIOUS BITS OF INFORMATION FROM THE FORM IN STRING FORMAT").SetFont(font));
document.Flush();
writer.Flush();
ms.Position = 0;
var message = new MailMessage("example@example.com", "example@example.com", "PDF Report", "See the attached PDF.");
var attachment = new Attachment(ms, fileName);
message.Attachments.Add(attachment);//send email...

Что я испортил? Если я выполняю все неправильно, рабочий пример будет фантастическим. Спасибо заранее!

1 ответ

Joris Schellekens ответил: 13 мая 2018 в 11:28

Вам нужно добавить

pdf.Close();

Это вызовет pdf.Flush(), который будет записываться в базовый поток.