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();
我正在尝试将封面 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();