我正在生成多个内存流,需要使用iTextSharp将它们组合成PDF,然后作为附件发送。但是,打开后电子邮件中随附的PDF显示错误,表明文件已损坏。
这是我合并内存流的方式:
using (var ms = new MemoryStream())
{
using (var doc = new Document())
{
using (PdfCopy copy = new PdfSmartCopy(doc, ms))
{
doc.Open();
foreach (var seminar in seminars)
{
var reportBytes = await ssrsClient.GetReportAsync(_reportPath,
_detailedKostenkontrolleReportName, new {SeminarId = seminar.Id}).ConfigureAwait(false);
//Loop through each byte arrayforeach (var p in pdfByteContent) {
var reader = new PdfReader(reportBytes);
//Add the entire document instead of page-by-page
copy.AddDocument(reader);
}
var attachmentAllSeminarsDetailed = new Attachment(ms, DetailedAttachmentFileName,
"application/pdf");
attachments.Add(attachmentAllSeminarsDetailed);
//Create email body
sb = CreateEmailBody(
"Hallo,<br/><br/>in der Beilage sind die Berichte für die Hotelkostenkontrolle, die heute an die einzelne Hotels verschickt wurden.", "Dein SPOT - Team");
//Send e-mail with all PDF-s
MessageService.SendMessage(GetTestMailRecipients(), "Kostenkontrolle", sb.ToString(), attachments, new MailAddress(DefaultMailSender));
}
}
}
PDF的大小为139字节,但在代码中为正确的大小〜180 kb。我感觉有些文档或读者没有正确关闭,但是我无法弄清楚哪个文档。
有什么建议吗?