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 :
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) :
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!