如何在沒有先驗知識的情況下連接運行時產生的多個PDF使用ItextSharp 的檔名進行後續處理列印?
要使用ItextSharp 即時合併PDF,有兩種主要方法:
使用PdfCopy(用於保留原始格式)
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(); }
使用PdfWriter (用於高效的頁面整合)
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(); }
以上是如何使用 ITextSharp 有效率地即時合併記憶體中的 PDF 進行列印?的詳細內容。更多資訊請關注PHP中文網其他相關文章!