So verketten Sie mehrere zur Laufzeit generierte PDFs ohne Vorkenntnisse von Dateinamen mit ItextSharp für nachfolgende Drucken?
Um PDFs im Handumdrehen mit ItextSharp zusammenzuführen, gibt es zwei Hauptansätze:
Verwenden von PdfCopy (zur Beibehaltung der Originalformatierung)
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(); }
Verwenden von PdfWriter (für Efficient Seitenintegration)
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(); }
Das obige ist der detaillierte Inhalt vonWie kann ich In-Memory-PDFs mithilfe von ITextSharp zum Drucken effizient im Handumdrehen zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!