PRODUKT-VERGLEICHE

Ein Vergleich der PDF-Aufteilung in C# zwischen iTextSharp und IronPDF

Chipego
Chipego Kalinda
6. März 2024
Teilen Sie:

PDF (Portable Document Format) Dateien werden häufig zum Teilen und Präsentieren von Dokumenten verwendet, und es gibt Zeiten, in denen Sie möglicherweise ein PDF in mehrere Dateien aufteilen müssen. Ganz gleich, ob Sie bestimmte Seiten extrahieren, ein großes Dokument in kleinere Abschnitte unterteilen oder einzelne Dateien für jedes Kapitel erstellen möchten, die Aufteilung von PDFs kann in verschiedenen Szenarien eine wertvolle Aufgabe sein.

In diesem Artikel lernen wir, wie man PDFs mit C# aufteilt. C# ist eine vielseitige und leistungsstarke Sprache, und es sind mehrere Bibliotheken verfügbar, die die Bearbeitung von PDF-Dateien relativ einfach machen. Wir werden die folgenden zwei Bibliotheken für die Aufteilung von PDF in C# untersuchen.

  1. iTextSharp

  2. IronPDF

Wie man PDF in C# aufteilt; mit ITextSharp

  1. Installieren Sie zunächst die iText7-Bibliothek

  2. Erstellen Sie einen PdfReader aus der PDF-Eingabedatei.

  3. Verwenden Sie ein PdfDocument, um mit dem PDF-Inhalt zu arbeiten.

  4. Berechnen Sie die Anzahl der Seiten für jede geteilte Datei.

  5. Legen Sie die Anfangswerte für den Seitenbereich fest.

  6. Verwenden Sie eine Schleife, um jede geteilte Datei zu verarbeiten.

  7. Erstellen Sie ein neues PdfDocument für die aktuelle geteilte Datei.

  8. Kopieren Sie Seiten aus dem Originaldokument in das neue Dokument.

  9. Aktualisieren der Seitenbereichswerte für die nächste Iteration.

  10. Speichern Sie die fertige PDF-Ausgabe.

  11. Wiederholen Sie dies, bis alle Dateien erstellt sind:

  12. Setzt den Vorgang für die angegebene Anzahl von geteilten Dateien fort.

IronPDF

Ein Vergleich der PDF-Aufteilung in C# zwischen iTextSharp und IronPDF: Abbildung 1 - IronPDF-Webseite

IronPDF ist eine leistungsstarke C#-Bibliothek, die für die Arbeit mit PDF-Dateien entwickelt wurde. Es bietet Funktionen zum Erstellen, Bearbeiten und Extrahieren von Inhalten aus PDF-Dokumenten. Entwickler können PDFs von Grund auf neu erstellen, vorhandene PDFs bearbeiten und zusammenführen oder teilen. Darüber hinaus ist IronPDF hervorragend in der Lage, HTML-Inhalte in das PDF-Format zu konvertieren, was es für die Erstellung von Berichten oder Dokumentationen nützlich macht. Mit der Unterstützung von digitalen Signaturen, Sicherheitsfunktionen und hochwertiger Ausgabe vereinfacht IronPDF PDF-bezogene Aufgaben in .NET-Anwendungen.

iTextSharp

Ein Vergleich der Aufteilung von PDF in C# zwischen iTextSharp und IronPDF: Abbildung 2 - iTextSharp-Webseite

iTextSharp (iText 7) ist eine weit verbreitete Bibliothek zum Arbeiten mit PDF-Dateien im .NET Framework. Es bietet leistungsstarke Funktionen zum programmgesteuerten Erstellen, Ändern und Extrahieren von Inhalten aus PDF-Dokumenten. Entwickler können mit iTextSharp Text, Bilder, Tabellen und andere grafische Elemente zu PDFs hinzufügen. Darüber hinaus unterstützt es die Zusammenstellung von Dokumenten, digitale Signaturen und die Einhaltung von Archivierungs- und Zugänglichkeitsstandards. Ursprünglich eine Java-Bibliothek, wurde iTextSharp nach .NET portiert und hat eine aktive Gemeinschaft von Entwicklern und Benutzern.

Installieren der IronPDF-Bibliothek

Um das IronPDF NuGet-Paket mit der Paket-Manager-Konsole in Visual Studio zu installieren, befolgen Sie diese Schritte:

  1. Gehen Sie in Visual Studio zu Tools -> NuGet Package Manager -> Package Manager Console.

  2. Verwenden Sie den folgenden Befehl, um das IronPDF NuGet-Paket zu installieren:
    :ProductInstall

Dadurch wird das IronPDF-Paket zusammen mit seinen Abhängigkeiten heruntergeladen und in Ihrem Projekt installiert. Sobald die Installation abgeschlossen ist, können Sie IronPDF in Ihrem C#-Projekt für PDF-bezogene Aufgaben verwenden.

Alternativ können Sie IronPDF über den NuGet-Paket-Manager in Visual Studio installieren oder das Paket direkt zu Ihrer Projektdatei hinzufügen. Eine weitere Möglichkeit besteht darin, das Paket von der offiziellen Website herunterzuladen und manuell zu Ihrem Projekt hinzuzufügen. Jede Methode bietet eine einfache Möglichkeit, IronPDF in Ihr C#-Projekt für PDF-bezogene Funktionalitäten zu integrieren.

Installieren der iTextSharp-Bibliothek

Um iTextSharp über die Paket-Manager-Konsole in Visual Studio zu installieren, können Sie die folgenden Schritte ausführen:

  1. Gehen Sie in Visual Studio zu Tools -> NuGet Package Manager -> Package Manager Console.

  2. Verwenden Sie den folgenden Befehl, um das iTextSharp NuGet-Paket zu installieren:
    Install-Package itext7

Dadurch wird das iTextSharp-Paket zusammen mit seinen Abhängigkeiten heruntergeladen und in Ihrem Projekt installiert. Sobald die Installation abgeschlossen ist, können Sie iTextSharp in Ihrem C#-Projekt für die Arbeit mit PDFs verwenden.

PDF-Dokumente in C# aufteilen; IronPDF verwenden

Mit IronPDF können wir eine PDF-Datei in mehrere PDF-Dateien aufteilen. Es bietet eine einfache Möglichkeit, dies zu erreichen. Der folgende Code nimmt die PDF-Quelldatei als Eingabe und teilt sie in mehrere PDF-Dateien auf.

static void Main(string [] args)
 {
    string file = "input.pdf"'
    // Call the SplitPdf method to split the PDF
    SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles);
 } 
static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
 {
     PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath);
     int firstPage = 1;
     int lastPage = 2;
     int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles;
     for (int i = 1; i <= NumberOfSplitFiles; i++)
     {
        // Copy multiple pages into a new document
        PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage);
        string name = $@"{outputFolder}\SplitPDF_IronPDF_{i}.pdf";
        newSplitPDF.SaveAs(name);
        firstPage = lastPage + 1;
        lastPage += totalPageInOneFile;
     }
 }
static void Main(string [] args)
 {
    string file = "input.pdf"'
    // Call the SplitPdf method to split the PDF
    SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles);
 } 
static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
 {
     PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath);
     int firstPage = 1;
     int lastPage = 2;
     int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles;
     for (int i = 1; i <= NumberOfSplitFiles; i++)
     {
        // Copy multiple pages into a new document
        PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage);
        string name = $@"{outputFolder}\SplitPDF_IronPDF_{i}.pdf";
        newSplitPDF.SaveAs(name);
        firstPage = lastPage + 1;
        lastPage += totalPageInOneFile;
     }
 }
Shared Sub Main(ByVal args() As String)
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	string file = "input.pdf"' SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles); } static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles) { PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath); int firstPage = 1; int lastPage = 2; int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles; for(int i = 1; i <= NumberOfSplitFiles; i++) { PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage); string name = string.Format("{0}\SplitPDF_IronPDF_{1}.pdf", outputFolder, i); newSplitPDF.SaveAs(name); firstPage = lastPage + 1; lastPage += totalPageInOneFile; } }
$vbLabelText   $csharpLabel

Code Erläuterung

Der Zweck dieses Codes ist die Aufteilung einer gegebenen PDF-Datei in mehrere kleinere PDF-Dateien unter Verwendung der IronPDF-Bibliothek. Die Methode SplitPdfUsingIronPDF wird definiert, um diese Funktionalität zu erreichen.

Parameter der Methode

  1. inputPdfPath: Ein String, der den Pfad zur Eingabe-PDF-Datei darstellt (z.B. "input.pdf").

  2. outputFolder: Ein String, der den Ausgabeordner darstellt, in dem die aufgeteilten PDF-Dateien gespeichert werden (z.B. "output_split").

  3. AnzahlDerAufgespaltenenDateien: Eine ganze Zahl, die angibt, in wie viele kleinere PDF-Dateien die ursprüngliche PDF-Datei aufgeteilt wird.

Splitting-Prozess

Innerhalb der Methode SplitPdfUsingIronPDF:

  1. Ein PdfDocument-Objekt namens sourceFile wird erstellt, indem die PDF-Datei aus dem angegebenen inputPdfPath geladen wird.

  2. Zwei ganzzahlige Variablen, firstPage und lastPage, werden initialisiert. Diese stellen den Seitenbereich für die Aufteilung dar.

  3. totalPageInOneFile wird berechnet, indem die Gesamtseitenzahl des Quell-PDFs durch die angegebene NumberOfSplitFiles geteilt wird.

  4. Eine Schleife iteriert von 1 bis NumberOfSplitFiles:

  5. Ein neues PdfDocument-Objekt namens newSplitPDF wird erstellt.

  6. Seiten von firstPage bis lastPage (einschließlich) werden aus der sourceFile in die newSplitPDF kopiert.

  7. Die resultierende kleinere PDF wird mit einem Dateinamen wie "SplitPDF_IronPDF_1.pdf" (für die erste Teilung) im angegebenen Ausgabeverzeichnis gespeichert.

  8. Die Werte für firstPage und lastPage werden für die nächste Iteration aktualisiert.

Hinweis

Ersetzen Sie "input.pdf" durch den tatsächlichen Pfad zu Ihrer PDF-Eingabedatei. Stellen Sie sicher, dass die IronPDF-Bibliothek ordnungsgemäß installiert ist und in Ihrem Projekt referenziert wird.

Die Ausgabedateien werden wie folgt erstellt:

Ein Vergleich des Teilens von PDF in C# zwischen iTextSharp und IronPDF: Abbildung 3 - Erstellt Ausgabedateien

PDFs in C&num aufteilen; mit iTextSharp

Jetzt werden wir iTextSharp verwenden, um unser PDF-Dokument in mehrere PDF-Dateien aufzuteilen. Der folgende Code nimmt die Quelldatei als Eingabe und teilt das PDF-Dokument in mehrere kleinere Dateien auf.

static void Main(string [] args)
 {
     string inputPath = "input.pdf";
     // Output PDF files path (prefix for the generated files)
     string outputPath = "output_split";
     int NumberOfSplitFiles = 3;
     // Call the SplitPdf method to split the PDF
     SplitPdfUsingiTextSharp(inputPath, outputPath, NumberOfSplitFiles);
 } 
static void SplitPdfUsingiTextSharp(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
 {
     using (PdfReader Reader = new PdfReader(inputPdfPath))
     {
         using (PdfDocument doc = new PdfDocument(Reader))
         {
             int totalPageInOneFile = doc.GetNumberOfPages() / NumberOfSplitFiles;
             int firstPage = 1;
             int lastPage = totalPageInOneFile; //  int pagenumber
             for (int i = 1; i <= NumberOfSplitFiles; i++)
             {
                 string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";
                 using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename))) // create output file
                 {
                     //pdfDocument.get
                     doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
                 }
                 firstPage = lastPage + 1;
                 lastPage += totalPageInOneFile;
             }
         }
     }
 }
static void Main(string [] args)
 {
     string inputPath = "input.pdf";
     // Output PDF files path (prefix for the generated files)
     string outputPath = "output_split";
     int NumberOfSplitFiles = 3;
     // Call the SplitPdf method to split the PDF
     SplitPdfUsingiTextSharp(inputPath, outputPath, NumberOfSplitFiles);
 } 
static void SplitPdfUsingiTextSharp(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
 {
     using (PdfReader Reader = new PdfReader(inputPdfPath))
     {
         using (PdfDocument doc = new PdfDocument(Reader))
         {
             int totalPageInOneFile = doc.GetNumberOfPages() / NumberOfSplitFiles;
             int firstPage = 1;
             int lastPage = totalPageInOneFile; //  int pagenumber
             for (int i = 1; i <= NumberOfSplitFiles; i++)
             {
                 string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";
                 using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename))) // create output file
                 {
                     //pdfDocument.get
                     doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
                 }
                 firstPage = lastPage + 1;
                 lastPage += totalPageInOneFile;
             }
         }
     }
 }
Shared Sub Main(ByVal args() As String)
	 Dim inputPath As String = "input.pdf"
	 ' Output PDF files path (prefix for the generated files)
	 Dim outputPath As String = "output_split"
	 Dim NumberOfSplitFiles As Integer = 3
	 ' Call the SplitPdf method to split the PDF
	 SplitPdfUsingiTextSharp(inputPath, outputPath, NumberOfSplitFiles)
End Sub
Shared Sub SplitPdfUsingiTextSharp(ByVal inputPdfPath As String, ByVal outputFolder As String, ByVal NumberOfSplitFiles As Integer)
	 Using Reader As New PdfReader(inputPdfPath)
		 Using doc As New PdfDocument(Reader)
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
			 Dim totalPageInOneFile As Integer = doc.GetNumberOfPages() / NumberOfSplitFiles
			 Dim firstPage As Integer = 1
			 Dim lastPage As Integer = totalPageInOneFile '  int pagenumber
			 For i As Integer = 1 To NumberOfSplitFiles
				 Dim filename As String = $"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf"
				 Using pdfDocument As New PdfDocument(New PdfWriter(filename)) ' create output file
					 'pdfDocument.get
					 doc.CopyPagesTo(firstPage, lastPage, pdfDocument)
				 End Using
				 firstPage = lastPage + 1
				 lastPage += totalPageInOneFile
			 Next i
		 End Using
	 End Using
End Sub
$vbLabelText   $csharpLabel

Code Erläuterung

Der obige Code zeigt, wie man eine große PDF-Datei mit iTextSharp in kleinere Teile aufteilt. Jedes kleinere PDF-Dokument wird einen Teil des Originaldokuments enthalten.

PDF mit iTextSharp aufteilen

  1. Die Hauptfunktionalität ist in der Methode SplitPdfUsingiTextSharp gekapselt.

  2. Die obige Methode benötigt drei Parameter: inputPdfPath, outputFolder und NumberOfSplitFiles.

PdfReader und PdfDocument verwenden

Innerhalb der Methode SplitPdfUsingiTextSharp:

  1. Ein PdfReader-Objekt namens Reader wird erstellt, indem die PDF-Datei aus dem angegebenen inputPdfPath geladen wird.

  2. Ein PdfDocument-Objekt namens DOC wird mit dem Reader initialisiert.

  3. Die Gesamtzahl der Seiten in der Quell-PDF wird durch NumberOfSplitFiles geteilt, um zu bestimmen, wie viele Seiten jede kleinere PDF-Datei enthalten soll.

Splitting-Prozess

Eine Schleife iteriert von 1 bis NumberOfSplitFiles:

  1. Eine neue, kleinere PDF-Datei wird mit einem Dateinamen wie "SplitPDF_iTextSharp_1.pdf" (für die erste Aufteilung) im angegebenen Ausgabeverzeichnis erstellt.

  2. In diesem neuen PDF-Dokument (pdfDocument) werden Seiten aus dem Originaldokument kopiert:

  3. Die erste bis zur letzten Seite (einschließlich) werden kopiert.

  4. Die kleinere PDF-Datei wird gespeichert.

  5. Die Werte für firstPage und lastPage werden für die nächste Iteration aktualisiert.

Hinweis

Stellen Sie sicher, dass die iTextSharp-Bibliothek ordnungsgemäß installiert ist und in Ihrem Projekt referenziert wird. Ersetzen Sie "input.pdf" durch den tatsächlichen Pfad zu Ihrer PDF-Eingabedatei.

Ein Vergleich der PDF-Aufteilung in C# zwischen iTextSharp und IronPDF: Abbildung 4 - Erstellt Ausgabedateien

Vergleich

Um die beiden Split-Methoden mit iTextSharp und IronPDF zu vergleichen, sollten wir sie anhand verschiedener Faktoren bewerten:

  1. Benutzerfreundlichkeit:

    • iTextSharp: Die iTextSharp-Methode beinhaltet das Erstellen eines PdfReader, PdfDocument und PdfWriter. Es berechnet die Seitenbereiche und kopiert die Seiten in ein neues Dokument. Dieser Ansatz erfordert ein Verständnis der iTextSharp-API.

    • IronPDF: Die IronPDF-Methode beinhaltet das Erstellen eines PdfDocument aus der Quelldatei, das Kopieren von Seiten und das Speichern in einer neuen Datei. Es verfügt über eine einfachere API.
  2. Code-Lesbarkeit:

    • iTextSharp: Der Code beinhaltet mehr Schritte, wodurch er etwas länger wird und möglicherweise komplexer zu lesen ist.

    • IronPDF: Der Code ist prägnant und besser lesbar, da weniger Schritte und Methodenaufrufe erforderlich sind.
  3. Leistung:

    • iTextSharp: Die Leistung kann durch das wiederholte Erstellen und Entsorgen von PdfDocument-Instanzen beeinträchtigt werden.

    • IronPDF: Die Methode umfasst weniger Schritte und bietet eine bessere Leistung aufgrund effizienter Seitenkopierung.
  4. Speichernutzung:

    • iTextSharp: Das Erstellen mehrerer PdfDocument-Instanzen verbraucht mehr Speicher.

    • IronPDF: Die Methode ist speichereffizienter aufgrund ihres vereinfachten Ansatzes.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass sowohl iTextSharp als auch IronPDF robuste Lösungen für die Aufteilung von PDF-Dateien in C# bieten, jede mit ihren eigenen Vorteilen. IronPDF zeichnet sich durch seine Einfachheit, Lesbarkeit und potenziell bessere Leistung aufgrund eines unkomplizierteren Ansatzes aus.

Entwickler, die ein Gleichgewicht zwischen Vielseitigkeit und Benutzerfreundlichkeit suchen, könnten IronPDF als eine überzeugende Wahl betrachten. Darüber hinaus bietet IronPDF eine kostenlose Testversion. Letztendlich hängt die Wahl zwischen iTextSharp und IronPDF von den individuellen Projektanforderungen und dem bevorzugten Entwicklungsstil ab.

Chipego
Software-Ingenieur
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.
< PREVIOUS
PDFsharp vs. iTextSharp (C# PDF Library Vergleich)
NÄCHSTES >
Ein Vergleich zwischen IronPDF und PDFSharpCore