Maison >développement back-end >C++ >Comment fusionner efficacement des PDF en mémoire à la volée à l'aide d'ITextSharp pour l'impression ?
Comment concaténer plusieurs PDF générés lors de l'exécution sans connaissances préalables des noms de fichiers en utilisant ItextSharp pour les imprimer ?
Pour fusionner des PDF à la volée à l'aide d'ItextSharp, deux approches principales existent :
Utiliser PdfCopy (pour préserver le formatage original)
using System.Collections.Generic; using iText.Kernel.Pdf; using iText.Kernel.Pdf.Canvas.Parser; using iText.Kernel.Pdf.PdfDocument; using iText.Kernel.Pdf.PdfWriter; 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 < pdf.Count; ++i) { PdfDocument reader = new PdfDocument(new PdfReader(pdf[i])); for (int page = 0; page < reader.GetNumberOfPages(); ) { copy.AddPage(copy.GetImportedPage(reader, ++page)); } } } } mergedPdf = ms.ToArray(); }
Utilisation de PdfWriter (pour Intégration efficace des pages)
using System.Collections.Generic; using iText.Kernel.Pdf; using iText.Kernel.Pdf.Canvas.Parser; using iText.Kernel.Pdf.PdfDocument; using iText.Kernel.Pdf.PdfWriter; byte[] mergedPdf = null; using (MemoryStream ms = new MemoryStream()) { using (PdfWriter writer = new PdfWriter(ms)) { PdfDocument document = new PdfDocument(writer); PdfDocumentBuilder pdfBuilder = new PdfDocumentBuilder(document); for (int i = 0; i < pdf.Count; ++i) { PdfDocument reader = new PdfDocument(new PdfReader(pdf[i])); for (int page = 0; page < reader.GetNumberOfPages(); ) { PdfCanvas canvas = new PdfCanvas(pdfBuilder.GetPageAt(++page)); PdfFormXObject importedPage = new PdfFormXObject(reader.GetPage(page)); canvas.AddImportedPage(importedPage); } } } mergedPdf = ms.ToArray(); }
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!