Maison >développement back-end >C++ >Comment fusionner plusieurs PDF générés par l'exécution à l'aide d'ITextSharp ?

Comment fusionner plusieurs PDF générés par l'exécution à l'aide d'ITextSharp ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-27 08:18:11632parcourir

How to Merge Multiple Runtime-Generated PDFs Using ITextSharp?

Comment fusionner et imprimer plusieurs PDF générés lors de l'exécution à l'aide d'ITextSharp ?

Pour fusionner plusieurs PDF générés lors de l'exécution à l'aide d'ITextSharp, vous disposez de deux options principales : utiliser PdfCopy famille de classes ou PdfWriter class.

Famille PdfCopy

Les classes Pdf*Copy* permettent de fusionner des PDF tout en préservant leur format d'origine et leurs annotations interactives. Pour cette approche, suivez ces étapes :

  1. Initialisez un document PDF vide.
  2. Créez un objet PdfCopy.
  3. Parcourez les octets PDF générés.
  4. Pour chaque tableau d'octets, créez un PdfReader et importez ses pages dans le PdfCopy objet.

Exemple d'utilisation de PdfCopy :

byte[] mergedPdf = null;
using (MemoryStream ms = new MemoryStream())
{
    using (Document document = new Document())
    {
        using (PdfCopy copy = new PdfCopy(document, ms))
        {
            document.Open();

            for (int i = 0; i < pdfBytes.Count; ++i)
            {
                PdfReader reader = new PdfReader(pdfBytes[i]);

                int n = reader.NumberOfPages;
                for (int page = 0; page < n; )
                {
                    copy.AddPage(copy.GetImportedPage(reader, ++page));
                }
            }
        }
    }
    mergedPdf = ms.ToArray();
}

Classe PdfWriter

La classe PdfWriter vous permet de intégrer des pages de PDF sources dans un nouveau document sans préserver leur interactivité d'origine. Utilisez cette approche si vous n'êtes pas préoccupé par les annotations ou autres fonctionnalités des PDF sources.

using (MemoryStream ms = new MemoryStream())
{
    using (Document document = new Document())
    {
        using (PdfWriter writer = PdfWriter.GetInstance(document, ms))
        {
            document.Open();

            for (int i = 0; i < pdfBytes.Count; ++i)
            {
                PdfReader reader = new PdfReader(pdfBytes[i]);

                int n = reader.NumberOfPages;
                for (int page = 0; page < n; )
                {
                    PdfImportedPage importedPage = writer.GetImportedPage(reader, ++page);
                    writer.Add(importedPage);
                }

                reader.Close();
            }
        }
    }
    mergedPdf = ms.ToArray();
}

Pour plus de détails, reportez-vous à la documentation iTextSharp ou aux exemples de code fournis dans la réponse liée.

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