Maison >développement back-end >C++ >Comment fusionner des fichiers PDF générés au moment de l'exécution dans iTextSharp pour l'impression ?

Comment fusionner des fichiers PDF générés au moment de l'exécution dans iTextSharp pour l'impression ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-25 20:26:10649parcourir

How to Merge Runtime-Generated PDF Files in iTextSharp for Printing?

Fusion de plusieurs fichiers PDF générés lors de l'exécution

Question :

Comment fusionner plusieurs Fichiers PDF générés lors de l'exécution à l'aide d'iTextSharp pour l'impression à des fins ?

Réponse :

Pour fusionner des documents sources dans iText(Sharp), deux situations distinctes se présentent :

  1. Préserver Mise en page originale :
    Pour fusionner des documents avec des pages, des annotations et un contenu inchangés, utilisez une solution basée sur sur la famille de classes Pdf*Copy*. Cela garantit l'intégrité des fonctionnalités interactives des documents originaux.
  2. Création d'un nouveau document :
    Pour intégrer des pages tout en contrôlant le format global et en supprimant les fonctionnalités interactives, pensez à utiliser la classe PdfWriter. . Il permet d'importer des pages à partir de documents sources et de régir leur présentation.

Implémentation à l'aide de PdfCopy :

byte[] mergedPdf = null;
using (MemoryStream ms = new MemoryStream())
{
    using (Document document = new Document())
    {
        using (PdfCopy copy = new PdfCopy(document, ms))
        {
            document.Open();
            // Iterate over the PDF byte arrays and add pages to the merged document
            for (int i = 0; i < pdf.Count; ++i)
            {
                PdfReader reader = new PdfReader(pdf[i]);
                // Extract pages from the reader and add them to the merged document
                int n = reader.NumberOfPages;
                for (int page = 0; page < n; )
                {
                    copy.AddPage(copy.GetImportedPage(reader, ++page));
                }
            }
        }
    }
    mergedPdf = ms.ToArray();
}

Dans le code fourni, pdf est un tableau de tableaux d'octets, chacun représentant un document PDF généré. Le tableau d'octets mergedPdf résultant contient le contenu PDF combiné préparé pour l'impression.

Résumé de la classe :

  • PdfCopy : Copie les pages sans redondance détection, mais peut avoir du mal avec form.
  • PdfCopyFields : Fusionne les champs et les formulaires mais peut consommer une mémoire excessive.
  • PdfSmartCopy : Détecte efficacement les redondances mais nécessite plus de ressources.
  • PdfWriter : Importations pages mais sacrifie les fonctionnalités interactives des pages importées.

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