Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencantumkan PDF Dalam Memori dengan Cekap Menggunakan ITextSharp untuk Mencetak?

Bagaimana untuk Mencantumkan PDF Dalam Memori dengan Cekap Menggunakan ITextSharp untuk Mencetak?

Mary-Kate Olsen
Lepaskan: 2025-01-03 09:54:39
asal
919 orang telah melayarinya

How to Efficiently Merge In-Memory PDFs on the Fly Using ITextSharp for Printing?

Menggabungkan Fail PDF Dalam Memori Dengan Cepat dengan ItextSharp untuk Mencetak

Pernyataan Masalah

Cara menggabungkan berbilang PDF yang dijana dalam masa jalan tanpa pengetahuan terlebih dahulu nama fail menggunakan ItextSharp untuk seterusnya percetakan?

Penyelesaian

Untuk menggabungkan PDF dengan cepat menggunakan ItextSharp, dua pendekatan utama wujud:

Menggunakan PdfCopy (untuk Mengekalkan Pemformatan Asal)

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();
}
Salin selepas log masuk

Menggunakan PdfWriter (untuk Penyepaduan Halaman yang Cekap)

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();
}
Salin selepas log masuk

Ringkasan Kelas

  • PdfCopy: Mengekalkan pemformatan asal, tetapi mempunyai had dengan kandungan dan bentuk yang berlebihan pengendalian.
  • PdfCopyFields: Mengurangkan isu pengendalian borang, tetapi mungkin menggunakan memori yang ketara.
  • PdfSmartCopy: Menganalisis kandungan untuk meminimumkan lebihan, tetapi memerlukan lebih banyak sumber.
  • PdfWriter: Membenarkan penyepaduan halaman tanpa interaktiviti yang dipelihara.

Atas ialah kandungan terperinci Bagaimana untuk Mencantumkan PDF Dalam Memori dengan Cekap Menggunakan ITextSharp untuk Mencetak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan