itext7 CopyPagesTo 不打开 PDF

itext7 CopyPagesTo not opening PDF

我正在尝试将封面 PDF 文件添加到另一个 PDF 文件。我正在使用 CopyPagesTo 方法。 CoverPageFilePath 将位于 pdfDocumentFile 中的任何页面之前。然后我需要将该新文件重写到同一位置。当我 运行 代码并打开新的 pdf 文件时,我收到有关它已损坏的错误消息。

 public static void iText7MergePDF()
        {
            byte[] modifiedPdfInBytes = null;
            string pdfCoverPageFilePath = @"PathtoCoverPage\Cover Page.pdf";
            PdfDocument pdfDocumentCover = new PdfDocument(new iText.Kernel.Pdf.PdfReader(pdfCoverPageFilePath));
            string pdfDocumentFile =@"PathtoFullDocument.pdf";
            var buffer = File.ReadAllBytes(pdfDocumentFile);
            using (var originalPdfStream = new MemoryStream(buffer))
            using (var modifiedPdfStream = new MemoryStream())
            {
                var pdfReader = new iText.Kernel.Pdf.PdfReader(originalPdfStream);
                var pdfDocument = new PdfDocument(pdfReader, new PdfWriter(modifiedPdfStream));
                int numberOfPages = pdfDocumentCover.GetNumberOfPages();
                pdfDocumentCover.CopyPagesTo(1, numberOfPages, pdfDocument);
                modifiedPdfInBytes = modifiedPdfStream.ToArray();
                pdfDocument.Close();
            }
            System.IO.File.WriteAllBytes(pdfGL, modifiedPdfInBytes);
        }

当你有其他类型时,比如 StreamWriter,或者这里的 PdfWriter 写入 Stream,它可能不会立即将所有数据写入 Stream。

给你Close pdfDocument,用于所有要写入 MemoryStream 的数据。

即这个

modifiedPdfInBytes = modifiedPdfStream.ToArray();
pdfDocument.Close();

应该是

pdfDocument.Close();
modifiedPdfInBytes = modifiedPdfStream.ToArray();