Maison >développement back-end >C++ >Comment puis-je fusionner plusieurs PDF générés dynamiquement à l'aide d'iTextSharp ?

Comment puis-je fusionner plusieurs PDF générés dynamiquement à l'aide d'iTextSharp ?

DDD
DDDoriginal
2024-12-25 19:16:13587parcourir

How Can I Merge Multiple Dynamically Generated PDFs Using iTextSharp?

Fusion de plusieurs fichiers PDF générés dynamiquement : une approche iTextSharp

Contexte :
Cette question concerne la fusion plusieurs fichiers PDF générés dynamiquement en temps réel. L'objectif est de fusionner ces fichiers à des fins d'impression.

Solution :
Pour fusionner plusieurs fichiers PDF à l'aide d'iTextSharp, il existe deux approches principales :

1. Classe PdfCopy
Si l'objectif est de fusionner des pages dans leur format d'origine, tout en préservant le contenu et les annotations interactives, la classe PdfCopy doit être utilisée. Un exemple utilisant PdfCopy est fourni ci-dessous :

// Assuming pdf is a List<byte[]> containing in-memory PDF documents
using (MemoryStream ms = new MemoryStream())
{
    using (Document document = new Document())
    {
        using (PdfCopy copy = new PdfCopy(document, ms))
        {
            document.Open();
            for (int i = 0; i < pdf.Count; ++i)
            {
                PdfReader reader = new PdfReader(pdf[i]);
                int n = reader.NumberOfPages;
                for (int page = 0; page < n; )
                {
                    copy.AddPage(copy.GetImportedPage(reader, ++page));
                }
            }
        }
    }
    mergedPdf = ms.ToArray();
}

2. Classe PdfWriter
Alternativement, si l'objectif est d'intégrer des pages de documents sources dans un nouveau document, en personnalisant le format général et en ignorant les annotations interactives, la classe PdfWriter doit être utilisée. Cette classe importe des pages d'autres documents PDF mais ignore leurs fonctionnalités interactives.

Considérations supplémentaires :

  • PdfCopyFields : Cette classe est utilisée pour fusionner les champs de différents formulaires, évitant notamment les problèmes de champs de formulaire rencontrés lors de la concaténation de formulaires à l'aide de PdfCopy. Il a des besoins en mémoire plus élevés.
  • PdfSmartCopy : Semblable à PdfCopy, il peut détecter le contenu redondant mais nécessite plus de mémoire et de ressources CPU.

La solution devrait être choisi en fonction des exigences spécifiques du projet.

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