首页 >后端开发 >C++ >如何使用 ITextSharp 在 C# 中合并多个以编程方式生成的 PDF 文件?

如何使用 ITextSharp 在 C# 中合并多个以编程方式生成的 PDF 文件?

Susan Sarandon
Susan Sarandon原创
2024-12-28 18:07:11363浏览

How Can I Merge Multiple Programmatically Generated PDF Files in C# Using ITextSharp?

使用 ItextSharp 合并多个以编程方式生成的 PDF 文件以进行打印

简介

自动生成文档时,通常有必要将多个动态生成的 PDF 文件合并为单个输出以进行打印。本文探讨了如何使用 ItextSharp 来实现此目的。

合并策略

ItextSharp 提供两种主要方法来合并 PDF 文档:

  • Pdf*Copy 类:保留原始页面格式并注释,尽可能完整地传输内容。
  • PdfWriter 类:将页面集成到新文档中,并控制格式和交互功能(例如注释)。

使用 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 节):

  • Java: https://examples.itextpdf.com/category/com.itextpdf.text
  • C#:https://github.com/itextpdf/iTextSharp.Extended/tree/master/iTextSharp.Extended.Core.Pdf

以上是如何使用 ITextSharp 在 C# 中合并多个以编程方式生成的 PDF 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn