Heim >Backend-Entwicklung >C++ >Wie kann ich mit ITextSharp mehrere programmgesteuert generierte PDF-Dateien in C# zusammenführen?

Wie kann ich mit ITextSharp mehrere programmgesteuert generierte PDF-Dateien in C# zusammenführen?

Susan Sarandon
Susan SarandonOriginal
2024-12-28 18:07:11394Durchsuche

How Can I Merge Multiple Programmatically Generated PDF Files in C# Using ITextSharp?

Mehrere programmgesteuert generierte PDF-Dateien zum Drucken mit ItextSharp zusammenführen

Einführung

Bei der Automatisierung der Dokumentenerstellung ist dies häufig erforderlich um mehrere dynamisch generierte PDF-Dateien in einer einzigen Ausgabe zum Drucken zusammenzuführen. In diesem Artikel wird untersucht, wie Sie dies mit ItextSharp erreichen können.

Zusammenführungsstrategien

ItextSharp bietet zwei Hauptansätze zum Zusammenführen von PDF-Dokumenten:

  • PDF*Copy-Klassen: Behalten Sie das ursprüngliche Seitenformat und die Anmerkungen bei und übertragen Sie den Inhalt so intakt wie möglich.
  • PdfWriter-Klasse: Integrieren Sie Seiten in ein neues Dokument mit Kontrolle über Formatierung und interaktive Funktionen (z. B. Anmerkungen).

Lösung mit PdfCopy

Das folgende Codebeispiel demonstriert das Zusammenführen von PDF-Dateien mit PdfCopy:

using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Collections.Generic;
using System.IO;

namespace MergePdfs
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a list of byte arrays for each PDF file
            List<byte[]> pdfs = new List<byte[]>();

            // Read each PDF file into the list
            foreach (string filePath in args)
            {
                pdfs.Add(File.ReadAllBytes(filePath));
            }

            // Merge the PDFs
            byte[] mergedPdf = null;
            using (MemoryStream ms = new MemoryStream())
            {
                using (Document document = new Document())
                {
                    using (PdfCopy copy = new PdfCopy(document, ms))
                    {
                        document.Open();

                        foreach (byte[] pdf in pdfs)
                        {
                            PdfReader reader = new PdfReader(pdf);
                            int n = reader.NumberOfPages;
                            for (int page = 1; page <= n; page++)
                            {
                                copy.AddPage(copy.GetImportedPage(reader, page));
                            }
                        }
                    }
                }

                mergedPdf = ms.ToArray();
            }

            // Print the merged PDF
            // ... (code for printing the merged PDF)
        }
    }
}

In diesem Beispiel enthält pdfs die Byte-Arrays der PDF-Dateien, und die PdfCopy-Klasse wird verwendet, um Seiten aus jedem Quelldokument hinzuzufügen.

Weitere Überlegungen

PdfCopy kann bei großen Dokumenten zu Leistungsproblemen und Speicherverbrauch führen. PdfSmartCopy und PdfWriter bieten Alternativen mit Kompromissen bei Leistung und Funktionsunterstützung.

Ausführlichere Informationen und Codebeispiele finden Sie in der iText in Action-Dokumentation (Kapitel 6, Abschnitt 6.4):

  • Java: https://examples.itextpdf.com/category/com.itextpdf.text
  • C#: https://github.com/itextpdf/iTextSharp.Extended/tree/master/iTextSharp.Extended.Core.Pdf

Das obige ist der detaillierte Inhalt vonWie kann ich mit ITextSharp mehrere programmgesteuert generierte PDF-Dateien in C# zusammenführen?. 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