iTextSharp-合并内存流时损坏的PDF

时间:2020-10-12 12:58:15

标签: c# itext

我正在生成多个内存流,需要使用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。我感觉有些文档或读者没有正确关闭,但是我无法弄清楚哪个文档。

有什么建议吗?

0 个答案:

没有答案
相关问题