Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggabungkan Berbilang PDF Dijana Secara Dinamik Menggunakan iTextSharp?

Bagaimanakah Saya Boleh Menggabungkan Berbilang PDF Dijana Secara Dinamik Menggunakan iTextSharp?

DDD
DDDasal
2024-12-25 19:16:13587semak imbas

How Can I Merge Multiple Dynamically Generated PDFs Using iTextSharp?

Menggabungkan Berbilang Fail PDF Dijana Secara Dinamik: Pendekatan iTextSharp

Konteks:
Soalan ini berkaitan dengan penggabungan berbilang fail PDF yang dijana secara dinamik dalam masa nyata. Matlamatnya adalah untuk menggabungkan fail ini untuk tujuan pencetakan.

Penyelesaian:
Untuk menggabungkan berbilang fail PDF menggunakan iTextSharp, terdapat dua pendekatan utama:

1. Kelas PdfCopy
Jika objektifnya adalah untuk menggabungkan halaman dalam format asalnya, sambil mengekalkan kandungan dan anotasi interaktif, kelas PdfCopy harus digunakan. Contoh menggunakan PdfCopy disediakan di bawah:

// Assuming pdf is a List<byte[]> containing in-memory PDF documents
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)
            {
                PdfReader reader = new PdfReader(pdf[i]);
                int n = reader.NumberOfPages;
                for (int page = 0; page < n; )
                {
                    copy.AddPage(copy.GetImportedPage(reader, ++page));
                }
            }
        }
    }
    mergedPdf = ms.ToArray();
}

2. Kelas PdfWriter
Sebagai alternatif, jika matlamatnya adalah untuk menyepadukan halaman daripada dokumen sumber ke dalam dokumen baharu, menyesuaikan format umum dan mengabaikan anotasi interaktif, kelas PdfWriter harus digunakan. Kelas ini mengimport halaman daripada dokumen PDF lain tetapi buang ciri interaktifnya.

Pertimbangan Tambahan:

  • PdfCopyFields: Kelas ini digunakan untuk menggabungkan medan bentuk yang berbeza, khususnya mengelakkan isu dengan medan borang yang ditemui semasa menggabungkan borang menggunakan PdfCopy. Ia mempunyai keperluan memori yang lebih tinggi.
  • PdfSmartCopy: Sama seperti PdfCopy, ia boleh mengesan kandungan berlebihan tetapi memerlukan lebih banyak memori dan sumber CPU.

Penyelesaian haruslah dipilih berdasarkan keperluan khusus projek.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Berbilang PDF Dijana Secara Dinamik Menggunakan iTextSharp?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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