Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Wie man von PdfPig zu IronPDF in C# migriert

Die Migration von PdfPigzuIronPDFerweitert Ihre PDF-Fähigkeiten von einer reinen Lesebibliothek zu einer umfassenden PDF-Lösung, die Erstellung, Manipulation, Textextraktion und Sicherheitsfunktionen beherrscht. Dieser Leitfaden bietet einen vollständigen, schrittweisen Migrationspfad, der Ihre bestehenden Extraktions-Workflows beibehält und gleichzeitig PDF-Generierung, HTML-Konvertierung, Dokumentenmanipulation und Sicherheitsfunktionen hinzufügt, die PdfPignicht bieten kann.

Warum von PdfPigzuIronPDFmigrieren

PdfPigverstehen

PdfPig ist eine Open-Source-Bibliothek zum Lesen und Extrahieren von PDF-Dateien, die speziell für C# entwickelt wurde. Als Teil des renommierten Apache PDFBox-Projekts ermöglicht diese Bibliothek Entwicklern den Zugriff auf den Inhalt von PDF-Dateien mit bemerkenswerter Präzision. Obwohl PdfPigdurch seine Extraktionsfähigkeiten glänzt, ist sein Umfang im Vergleich zu umfassenderen Bibliotheken, die auf dem Markt erhältlich sind, stark eingeschränkt.

PdfPig bietet Entwicklern zuverlässige Werkzeuge für die Extraktion von Text, Bildern, Formulardaten und Metadaten aus PDF-Dateien. Daher eignet sich der Text für Anwendungen, die sich hauptsächlich auf Dokumentenanalyse und Data Mining konzentrieren. Die Fähigkeiten von PdfPigsind jedoch grundsätzlich auf das Parsen bestehender Dokumente beschränkt.

Die Nur-Lesen-Beschränkung

PdfPig konzentriert sich ausschließlich auf das Lesen von PDF-Dateien. Wenn Ihre Anwendung über die Extraktion hinaus wachsen muss, kann PdfPignicht helfen:

  1. Keine PDF-Generierung: Es können keine PDFs aus HTML, URLs oder programmatisch erstellt werden.

  2. Kein HTML-zu-PDF: PdfPigist eine Bibliothek zum Lesen und Parsen von PDFs, keine Bibliothek zur PDF-Generierung. Für die Konvertierung von HTML in PDF müssten Sie eine andere Bibliothek verwenden.

  3. Keine Dokumentenmanipulation: PDFs können nicht zusammengeführt, geteilt oder verändert werden.

  4. Keine Sicherheitsfunktionen: Es können keine Passwörter, Verschlüsselung oder digitale Signaturen hinzugefügt werden.

  5. Keine Wasserzeichen/Stempel: Es können keine visuellen Überlagerungen zu bestehenden Dokumenten hinzugefügt werden.

  6. Keine Formularausfüllung: PDF-Formulare können nicht programmgesteuert ausgefüllt werden.

PdfPigvsIronPDFVergleich

Feature PdfPig IronPDF
Lizenz Offene Quelle (Apache 2.0) Kommerziell
PDF-Lesen/Extraktion Ausgezeichnet Ausgezeichnet
PDF-Erstellung Beschränkt Umfassend
HTML zu PDF Nicht unterstützt Unterstützt
Textextraktion Ausgezeichnet Ausgezeichnet
PDF-Bearbeitung Nicht unterstützt Zusammenführen, Teilen, Drehen
Wasserzeichen Nicht unterstützt Volle Unterstützung
Sicherheit/Verschlüsselung Nicht unterstützt Volle Unterstützung
Unterstützung und Dokumentation Community-Unterstützung Dedizierte Unterstützung
Seitenindizierung 1-basiert 0-basiert

IronPDF unterstützt einen kompletten Satz von Funktionen zum Erstellen, Lesen, Bearbeiten und Signieren von PDFs. Diese Vielseitigkeit ermöglicht es Entwicklern, PDF-Dateien von Anfang bis Ende zu verwalten. Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 bzw. 2026 planen, bietetIronPDFeine vollständige Lösung für den PDF-Lebenszyklus, die über die Lesefunktionen von PdfPighinausgeht.


Bevor Sie beginnen

Voraussetzungen

  1. .NET-Umgebung: .NET Framework 4.6.2+ oder .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet-Zugriff: Möglichkeit zur Installation von NuGet-Paketen
  3. IronPDF-Lizenz: Ihren Lizenzschlüssel erhalten Sie auf ironpdf.com.

NuGet-Paketänderungen

# Remove PdfPig
dotnet remove package PdfPig

# Install IronPDF
dotnet add package IronPdf
# Remove PdfPig
dotnet remove package PdfPig

# Install IronPDF
dotnet add package IronPdf
SHELL

Lizenz-Konfiguration

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

PdfPig-Verwendung identifizieren

# Find PdfPigusage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .

# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .
# Find PdfPigusage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .

# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .
SHELL

Komplette API-Referenz

Namensraumänderungen

// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
$vbLabelText   $csharpLabel

Zuordnungen beim Laden von Dokumenten

PdfPig IronPDF Notizen
PdfDocument.Open(Pfad) PdfDocument.FromFile(path) Aus Datei laden
PdfDocument.Open(bytes) PdfDocument.FromBinaryData(bytes) Aus Bytes laden
PdfDocument.Open(stream) PdfDocument.FromStream(stream) Vom Stream laden
Verwendung von (var doc = ...) var pdf = ... IronPDFerfordert nicht die Verwendung von

Seitenzugriff und Eigenschaftszuordnungen

PdfPig IronPDF Notizen
document.NumberOfPages pdf.PageCount Gesamtseitenzahl
document.GetPages() pdf.Seiten Seitensammlung
document.GetPage(1) pdf.Seiten[0] Einzelne Seite (Hinweis: 1-basiert vs. 0-basiert)

Textextraktions-Zuordnungen

PdfPig IronPDF Notizen
Seite.Text pdf.Seiten[i].Text Text der Seite
Seite.GetWords() pdf.ExtractTextFromPage(i) Wörter/Text von der Seite
(manual loop) pdf.ExtractAllText() Der gesamte Text auf einmal

Metadaten-Zugriffs-Zuordnungen

PdfPig IronPDF Notizen
document.Information.Title pdf.MetaData.Title Titel des Dokuments
document.Information.Author pdf.MetaData.Author Autor
document.Information.Subject pdf.MetaData.Subject Thema
document.Information.Creator pdf.MetaData.Creator Schöpfer
document.Information.Producer pdf.MetaData.Producer Produzent

Neue Funktionen, die in PdfPignicht verfügbar sind

IronPDFMerkmal Beschreibung
renderer.RenderHtmlAsPdf(html) Konvertierung von HTML in PDF
renderer.RenderUrlAsPdf(url) Konvertierung von URL in PDF
PdfDocument.Merge(pdfs) Mehrere PDFs zusammenführen
pdf.ApplyWatermark(html) Wasserzeichen hinzufügen
pdf.SecuritySettings.UserPassword Passwortschutz
pdf.Sign(Zertifikat) Digitale Signaturen

Beispiele für die Code-Migration

Beispiel 1: Textextraktion aus PDF

Vor (PdfPig):

// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var text = new StringBuilder();
            foreach (var page in document.GetPages())
            {
                text.AppendLine(page.Text);
            }
            Console.WriteLine(text.ToString());
        }
    }
}
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var text = new StringBuilder();
            foreach (var page in document.GetPages())
            {
                text.AppendLine(page.Text);
            }
            Console.WriteLine(text.ToString());
        }
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        string text = pdf.ExtractAllText();
        Console.WriteLine(text);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        string text = pdf.ExtractAllText();
        Console.WriteLine(text);
    }
}
$vbLabelText   $csharpLabel

Sowohl PdfPigals auchIronPDFbieten hervorragende Textextraktionsfunktionen. Der Hauptunterschied liegt im Codemuster. PdfPigbenötigt eine benutzende Anweisung mit PdfDocument.Open(), eine manuelle Iteration durch die Seiten mit GetPages() und einen StringBuilder, um Text aus jeder Seite.TextEigenschaft zu sammeln.

IronPDF vereinfacht dies auf einen einzigen Aufruf: PdfDocument.FromFile() lädt das Dokument, und ExtractAllText() gibt den gesamten Textinhalt auf einmal zurück. Keine benutzen-Anweisung erforderlich, keine manuelle Iteration, kein StringBuilder. Weitere Optionen finden Sie in der Textextraktionsdokumentation.

Beispiel 2: Konvertierung von HTML in PDF

Vor (PdfPig):

// PdfPigdoes not support HTML zu PDFconversion
// PdfPigis a PDF reading/parsing library, not a PDF generation library
// You would need to use a different library for HTML zu PDFconversion
// PdfPigdoes not support HTML zu PDFconversion
// PdfPigis a PDF reading/parsing library, not a PDF generation library
// You would need to use a different library for HTML zu PDFconversion
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

Dieses Beispiel verdeutlicht die größte Kompetenzlücke. PdfPigweist ausdrücklich darauf hin, dass es "keine Konvertierung von HTML in PDF unterstützt" und "eine Bibliothek zum Lesen/Parsen von PDFs ist, keine Bibliothek zur PDF-Erzeugung" Wenn Sie mit PdfPigPDFs aus HTML erstellen wollen, müssen Sie eine ganz andere Bibliothek verwenden.

IronPDF bietet eine native HTML-zu-PDF-Konvertierung durch ChromePdfRenderer. Die Methode RenderHtmlAsPdf() akzeptiert HTML-Strings und konvertiert sie in PDF-Dokumente, wobei intern eine Chromium-Engine für die genaue Darstellung von HTML, CSS und JavaScript verwendet wird. Das resultierende PdfDocument kann mit SaveAs() gespeichert oder vor dem Speichern weiter bearbeitet werden. Umfassende Beispiele finden Sie in der HTML to PDF Dokumentation.

Beispiel 3: Lesen von PDF-Metadaten

Vor (PdfPig):

// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var info = document.Information;
            Console.WriteLine($"Title: {info.Title}");
            Console.WriteLine($"Author: {info.Author}");
            Console.WriteLine($"Subject: {info.Subject}");
            Console.WriteLine($"Creator: {info.Creator}");
            Console.WriteLine($"Producer: {info.Producer}");
            Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
        }
    }
}
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var info = document.Information;
            Console.WriteLine($"Title: {info.Title}");
            Console.WriteLine($"Author: {info.Author}");
            Console.WriteLine($"Subject: {info.Subject}");
            Console.WriteLine($"Creator: {info.Creator}");
            Console.WriteLine($"Producer: {info.Producer}");
            Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
        }
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        var info = pdf.MetaData;
        Console.WriteLine($"Title: {info.Title}");
        Console.WriteLine($"Author: {info.Author}");
        Console.WriteLine($"Subject: {info.Subject}");
        Console.WriteLine($"Creator: {info.Creator}");
        Console.WriteLine($"Producer: {info.Producer}");
        Console.WriteLine($"Number of Pages: {pdf.PageCount}");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        var info = pdf.MetaData;
        Console.WriteLine($"Title: {info.Title}");
        Console.WriteLine($"Author: {info.Author}");
        Console.WriteLine($"Subject: {info.Subject}");
        Console.WriteLine($"Creator: {info.Creator}");
        Console.WriteLine($"Producer: {info.Producer}");
        Console.WriteLine($"Number of Pages: {pdf.PageCount}");
    }
}
$vbLabelText   $csharpLabel

Beide Bibliotheken bieten Zugriff auf Metadaten mit nahezu identischen Mustern. PdfPiggreift auf Metadaten über document.Information und die Seitenzahl über document.NumberOfPageszu.IronPDFverwendet pdf.MetaData für Metadaten und pdf.PageCountfür die Seitenzahl.

Die Umstellung ist ganz einfach: Ersetzen Sie PdfDocument.Open() durch PdfDocument.FromFile(), document.Information durch pdf.MetaData und document.NumberOfPagesdurch pdf.PageCount. Entfernen Sie den using-Anweisungs-Wrapper, daIronPDFihn nicht benötigt.


Kritische Hinweise zur Migration

Änderung der Seitenindizierung

PdfPig verwendet eine 1-basierte Indizierung;IronPDFverwendet 0-basierte:

// PdfPig: 1-basiertindexing
var firstPage = document.GetPage(1);  // First page

// IronPDF: 0-basiertindexing
var firstPage = pdf.Pages[0];  // First page

// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;
// PdfPig: 1-basiertindexing
var firstPage = document.GetPage(1);  // First page

// IronPDF: 0-basiertindexing
var firstPage = pdf.Pages[0];  // First page

// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;
$vbLabelText   $csharpLabel

Nutzungserklärung nicht erforderlich

// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
    // ...
}

// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // Optional
// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
    // ...
}

// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // Optional
$vbLabelText   $csharpLabel

Änderung beim Laden des Dokuments

// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");
// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");
$vbLabelText   $csharpLabel

Änderung des Namens der Metadaten-Eigenschaft

// PdfPig: document.Information
var info = document.Information;

// IronPDF: pdf.MetaData
var info = pdf.MetaData;
// PdfPig: document.Information
var info = document.Information;

// IronPDF: pdf.MetaData
var info = pdf.MetaData;
$vbLabelText   $csharpLabel

Eigenschaftsänderung der Seitenzahl

// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");

// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");
// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");

// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");
$vbLabelText   $csharpLabel

Neue Funktionen nach der Migration

Nach dem Umstieg aufIronPDFerhalten Sie Funktionen, die PdfPignicht bieten kann:

PDF-Zusammenführung

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
$vbLabelText   $csharpLabel

Wasserzeichen

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
$vbLabelText   $csharpLabel

Passwortschutz

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
$vbLabelText   $csharpLabel

Digitale Signaturen

var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningReason = "Document Approval"
};
pdf.Sign(signature);
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningReason = "Document Approval"
};
pdf.Sign(signature);
$vbLabelText   $csharpLabel

Zusammenfassung des Funktionsvergleichs

Feature PdfPig IronPDF
Textextraktion
Zugang zu Metadaten
Bildextraktion
PDF-Erstellung Beschränkt
HTML zu PDF
URL zu PDF
PDFs zusammenführen
PDFs teilen
Wasserzeichen
Formular ausfüllen
Passwortschutz
Digitale Signaturen
Wortpositionsdaten

Migrations-Checkliste

Vor der Migration

  • Erfassung aller PdfPig-Nutzungen im Quellcode
  • Prüfen Sie, ob Sie Positionsdaten auf Wortebene benötigen (erwägen Sie einen hybriden Ansatz).
  • Alle Seitenindexverweise beachten (müssen von 1-basiert in 0-basiert umgerechnet werden)
  • Speicherung des IronPDF-Lizenzschlüssels (Umgebungsvariablen empfohlen)
  • Zuerst mit der IronPDF-Testlizenz testen

Paketänderungen

  • Entfernen Sie das NuGet-Paket PdfPig : dotnet remove package PdfPig
  • Installieren Sie IronPdf NuGet-Paket: dotnet add package IronPdf

Code-Änderungen

  • Namespace-Importe aktualisieren ( using UglyToad.PdfPig;using IronPdf; )
  • Ersetzen Sie PdfDocument.Open() durch PdfDocument.FromFile()
  • Ersetzen Sie document.Information durch pdf.MetaData
  • Ersetzen Sie document.NumberOfPagesdurch pdf.PageCount
  • Seitenindizes von 1-basiert auf 0-basiert konvertieren
  • Entfernen Sie using Anweisungen (optional,IronPDFbenötigt sie nicht)
  • Fügen Sie den IronPDF-Lizenzschlüssel beim Anwendungsstart hinzu.

Nach der Migration

  • Die Ausgabe der Testtextextraktion entspricht den Erwartungen
  • Alle PDF-Generierungsszenarien testen
  • Fügen Sie bei Bedarf neue Funktionen hinzu (Zusammenführung, Wasserzeichen, Sicherheit).
  • Installieren Sie die Linux-Abhängigkeiten, wenn Sie unter Linux bereitstellen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen