简介
自动生成文档时,通常有必要将多个动态生成的 PDF 文件合并为单个输出以进行打印。本文探讨了如何使用 ItextSharp 来实现此目的。
合并策略
ItextSharp 提供两种主要方法来合并 PDF 文档:
使用 PdfCopy 的解决方案
以下代码示例演示了使用 PdfCopy 合并 PDF 文件:
using iTextSharp.text; using iTextSharp.text.pdf; using System.Collections.Generic; using System.IO; namespace MergePdfs { class Program { static void Main(string[] args) { // Create a list of byte arrays for each PDF file List<byte[]> pdfs = new List<byte[]>(); // Read each PDF file into the list foreach (string filePath in args) { pdfs.Add(File.ReadAllBytes(filePath)); } // Merge the PDFs byte[] mergedPdf = null; using (MemoryStream ms = new MemoryStream()) { using (Document document = new Document()) { using (PdfCopy copy = new PdfCopy(document, ms)) { document.Open(); foreach (byte[] pdf in pdfs) { PdfReader reader = new PdfReader(pdf); int n = reader.NumberOfPages; for (int page = 1; page <= n; page++) { copy.AddPage(copy.GetImportedPage(reader, page)); } } } } mergedPdf = ms.ToArray(); } // Print the merged PDF // ... (code for printing the merged PDF) } } }
在此示例中,pdfs 包含 PDF 文件的字节数组,PdfCopy 类用于从每个源文档添加页面。
其他注意事项
PdfCopy 可能会导致性能问题和内存问题大文档的消耗。 PdfSmartCopy 和 PdfWriter 提供了在性能和功能支持方面进行权衡的替代方案。
有关更全面的信息和代码示例,请参阅 iText in Action 文档(第 6 章,第 6.4 节):
以上是如何使用 ITextSharp 在 C# 中合并多个以编程方式生成的 PDF 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!