Heim >Backend-Entwicklung >C++ >Wie füge ich mehrere zur Laufzeit generierte PDFs mit ITextSharp zusammen?

Wie füge ich mehrere zur Laufzeit generierte PDFs mit ITextSharp zusammen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-27 08:18:11632Durchsuche

How to Merge Multiple Runtime-Generated PDFs Using ITextSharp?

Wie füge ich mehrere zur Laufzeit generierte PDFs mit ITextSharp zusammen und drucke sie?

Um mehrere zur Laufzeit generierte PDFs mit ITextSharp zusammenzuführen, haben Sie zwei Hauptoptionen: die Verwendung von PdfCopy Klassenfamilie oder die PdfWriter-Klasse.

PdfCopy Familie

Mit den Pdf*Copy*-Klassen können Sie PDFs zusammenführen und dabei ihr Originalformat und interaktive Anmerkungen beibehalten. Befolgen Sie für diesen Ansatz die folgenden Schritte:

  1. Initialisieren Sie ein leeres PDF-Dokument.
  2. Erstellen Sie ein PdfCopy-Objekt.
  3. Durchlaufen Sie die generierten PDF-Bytes.
  4. Erstellen Sie für jedes Byte-Array einen PdfReader und importieren Sie seine Seiten in die PdfCopy Objekt.

Beispiel für die Verwendung von PdfCopy:

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 < pdfBytes.Count; ++i)
            {
                PdfReader reader = new PdfReader(pdfBytes[i]);

                int n = reader.NumberOfPages;
                for (int page = 0; page < n; )
                {
                    copy.AddPage(copy.GetImportedPage(reader, ++page));
                }
            }
        }
    }
    mergedPdf = ms.ToArray();
}

PdfWriter-Klasse

Mit der PdfWriter-Klasse können Sie Folgendes tun Integrieren Sie Seiten aus Quell-PDFs in ein neues Dokument, ohne ihre ursprüngliche Interaktivität beizubehalten. Verwenden Sie diesen Ansatz, wenn Sie sich keine Gedanken über Anmerkungen oder andere Funktionen in den Quell-PDFs machen.

using (MemoryStream ms = new MemoryStream())
{
    using (Document document = new Document())
    {
        using (PdfWriter writer = PdfWriter.GetInstance(document, ms))
        {
            document.Open();

            for (int i = 0; i < pdfBytes.Count; ++i)
            {
                PdfReader reader = new PdfReader(pdfBytes[i]);

                int n = reader.NumberOfPages;
                for (int page = 0; page < n; )
                {
                    PdfImportedPage importedPage = writer.GetImportedPage(reader, ++page);
                    writer.Add(importedPage);
                }

                reader.Close();
            }
        }
    }
    mergedPdf = ms.ToArray();
}

Weitere Einzelheiten finden Sie in der iTextSharp-Dokumentation oder in den Codebeispielen in der verlinkten Antwort.

Das obige ist der detaillierte Inhalt vonWie füge ich mehrere zur Laufzeit generierte PDFs mit ITextSharp zusammen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn