如何解决iTextSharp-合并内存流时损坏的PDF
我正在生成多个内存流,需要使用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。我感觉有些文档或读者没有正确关闭,但是我无法弄清楚哪个文档。
有什么建议吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。