Maison >développement back-end >C++ >Comment puis-je fusionner plusieurs fichiers PDF générés par programme en C# à l'aide d'ITextSharp ?

Comment puis-je fusionner plusieurs fichiers PDF générés par programme en C# à l'aide d'ITextSharp ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-28 18:07:11363parcourir

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

Fusion de plusieurs fichiers PDF générés par programme pour l'impression à l'aide d'ItextSharp

Introduction

Lors de l'automatisation de la génération de documents, il est souvent nécessaire pour fusionner plusieurs fichiers PDF générés dynamiquement en une seule sortie pour l'impression. Cet article explique comment y parvenir à l'aide d'ItextSharp.

Stratégies de fusion

ItextSharp propose deux approches principales pour fusionner des documents PDF :

  • Classes Pdf*Copy : préserve le format de page et les annotations d'origine, en transférant le contenu intact autant que possible.
  • Classe PdfWriter : intégrez des pages dans un nouveau document avec un contrôle sur le formatage et les fonctionnalités interactives (par exemple, les annotations).

Solution Utilisation de PdfCopy

L'exemple de code suivant montre la fusion de fichiers PDF à l'aide PdfCopy :

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)
        }
    }
}

Dans cet exemple, les fichiers PDF contiennent les tableaux d'octets des fichiers PDF et la classe PdfCopy est utilisée pour ajouter des pages de chaque document source.

Autres considérations

PdfCopy peut entraîner des problèmes de performances et une consommation de mémoire avec des documents volumineux. PdfSmartCopy et PdfWriter proposent des alternatives avec des compromis en termes de performances et de prise en charge des fonctionnalités.

Pour des informations plus complètes et des exemples de code, reportez-vous à la documentation iText in Action (chapitre 6, section 6.4) :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn