IRONSOFTWAREHOME
VIDEOS

Wie man Text und Bereiche in PDF-Dateien mit C# redigiert

Curtis Chau
Curtis Chau
Updated: 19. Juli 2026

Die Migration von PeachPDFzu IronPDF bietet Zugang zu einer PDF-Generierung auf Unternehmensniveau mit umfassenden Funktionen, aktiver Entwicklung und professionellem Support. Dieser Leitfaden bietet einen schrittweisen Migrationspfad, der Sie von PeachPDFs prä-1.0 asynchronem HTML-zu-PDF-Workflow zu einer funktionsreicheren PDF-Lösung mit Chromium-Rendering, Sicherheitseinstellungen und Dokumentenmanipulations-APIs führt.

Warum von PeachPDFzu IronPDF migrieren

PeachPDFverstehen

PeachPDF ist ein relativ neuer Anbieter im .NET-Ökosystem, der für Entwickler entwickelt wurde, die HTML in PDF konvertieren müssen. Als Bibliothek verspricht PeachPDFeine reine .NET-Implementierung, die sich dadurch auszeichnet, dass sie nicht auf externe Prozesse angewiesen ist und sich nahtlos in alle Plattformen integrieren lässt, die .NET unterstützen. Diese Eigenschaft macht PeachPDFzu einer attraktiven Wahl für Projekte, die nach einer leichtgewichtigen, verwalteten Bibliothekslösung suchen.

Trotz seines Potenzials befindet sich PeachPDFnoch in der Entwicklung, was sowohl spannende Möglichkeiten als auch bemerkenswerte Einschränkungen aufzeigt. PeachPDFbesticht durch seinen reinen .NET Core, der eine unkomplizierte Bereitstellung in verschiedenen Umgebungen verspricht. Allerdings bedeutet dies auch eine begrenzte Akzeptanz, mit einer kleineren Benutzerbasis und einem Community-getriebenen Support.

Die Beschränkungen von PeachPDF

PeachPDF ist eine von einem einzelnen Entwickler betreute, vor-1.0 .NET-Bibliothek (neueste 0.7.26, Oktober 2025) unter BSD-3-Clause, veröffentlicht von jhaygood86. Es fehlt die Reife, die Funktionen und die Unterstützung etablierter Lösungen. Hauptgründe für die Migration:

  1. Prä-1.0 Funktionssatz: PeachPDFhat keine integrierten digitalen Signaturen, keine PDF/A-Konformität, kein OCR, keine Formularfüllung oder seitenspezifische Kopf-/Fußzeilen-API.

  2. Keine JavaScript-Engine: PeachPDFist ein Layout-Renderer, der auf PeachPDF.PdfSharpCore basiert und kein Browser ist; Skripte und komplexe Grid/Flexbox-Layouts werden nicht ausgeführt.

  3. Nur net8.0: das Paket zielt auf net8.0 ab; ältere .NET Framework / .NET 6-Projekte müssen aufgerüstet werden oder eine andere Bibliothek wählen.

  4. Kleine Community: ein einzelner GitHub-Betreuer, eingeschränkte Dokumentation, eingeschränkte Beispiele.

  5. Kein Unternehmenssupport: keine kommerzielle Unterstützung oder SLA-Optionen.

Vergleich zwischen PeachPDFund IronPDF

Merkmal/CharakteristikPeachPDFIronPDF
ImplementierungReines verwaltetes .NET (auf PeachPDF.PdfSharpCore + SixLabors)Verwaltet mit eingebettetem Chromium-Laufzeit
LizenzBSD-3-ClauseKommerziell
Ziel-Frameworknet8.0 nur.NET Framework 4.6.2+, .NET 6/7/8
BenutzerbasisKlein (vor-1.0, 0.7.26 veröffentlicht Okt 2025)Groß
UnterstützungVon der Community getrieben (einzelner Betreuer, jhaygood86)Professionell mit engagiertem Support
HTML-RenderingHTML+CSS-Layout-Engine auf PdfSharpCoreVollständiges Chromium
CSS-UnterstützungHTML+CSS-Subset, Web-Schriften, @font-faceVollständig CSS3
JavaScriptNicht ausgeführtVollständiger ES2024
Digitale SignaturenNeinJa
PDF/A-KonformitätNeinJa
DokumentationEingeschränkt (einzelnes README)Umfangreiche
EntwicklungsstatusVor-1.0 (0.7.26, Okt 2025)Ausgereifte, stabile Version

IronPDF zeichnet sich durch einen breiteren Funktionsumfang aus und unterstützt nicht nur die Konvertierung von HTML in PDF, sondern auch OCR, Wasserzeichen und andere erweiterte Funktionen. Seine professionelle Support-Struktur bietet schnelle Lösungswege für Probleme, auf die Entwickler stoßen.

Für Teams, die modernes .NET übernehmen, bietet IronPDF umfassende Funktionen und aktive Wartung, um langfristige Stabilität über aktuelle .NET-Versionen hinweg zu unterstützen.


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 unter IronPDF.

NuGet-Paketänderungen

# Remove PeachPDF
dotnet remove package PeachPDF

# Install IronPDF
dotnet add package IronPdf
SHELL

Lizenz-Konfiguration

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

PeachPDF-Verwendung identifizieren

# Audit PeachPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "PdfGenerator\|PdfGenerateConfig\|GeneratePdf" --include="*.cs" .
SHELL

Komplette API-Referenz

Namensraumänderungen

// Before: PeachPDF
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;

Kern-API-Zuordnungen

PeachPDFIronPDF
new PdfGenerator()new ChromePdfRenderer()
await generator.GeneratePdf(html, config)renderer.RenderHtmlAsPdf(html)
document.Save(stream)pdf.SaveAs(path)
document.Save(memStream) dann memStream.ToArray()pdf.BinaryData
new PdfGenerateConfig { NetworkAdapter = new HttpClientNetworkAdapter(...) }renderer.RenderUrlAsPdf(url)
config.PageSize, config.PageOrientationrenderer.RenderingOptions.PaperSize, .PaperOrientation
In HTML-Quelle einbetten (CSS position: fixed)RenderingOptions.HtmlHeader / HtmlFooter
Nicht unterstütztPdfDocument.FromFile(path)
Nicht unterstütztPdfDocument.Merge(pdfs) / pdf.AppendPdf(...)

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML-Strings in PDF

Vor (PeachPDF):

using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = "<html><body><h1>Hello World</h1></body></html>";

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            PageOrientation = PageOrientation.Portrait
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("output.pdf");
        document.Save(stream);
    }
}

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

Dieses Beispiel zeigt den grundlegenden Unterschied zwischen den beiden Bibliotheken. PeachPDFtrennt einen PdfGenerator (Engine) von einem PdfGenerateConfig (Einstellungen), bietet eine asynchrone GeneratePdf-Methode an und gibt ein Dokument zurück, dessen Save-Methode in einen Stream schreibt.IronPDF verwendet ChromePdfRenderer mit RenderHtmlAsPdf(), das ein PdfDocument-Objekt mit einer eingebauten SaveAs()-Methode zurückgibt.

Ein praktischer Vorteil des IronPDF-Ansatzes: das PdfDocument-Objekt kann weiter bearbeitet werden (z.B. Hinzufügen von Wasserzeichen, Zusammenführen, Sicherheitseinstellungen), bevor es gespeichert wird, und SaveAs nimmt einen Dateipfad direkt, ohne einen Zwischen-FileStream. Siehe die HTML-zu-PDF-Dokumentation für weitere Beispiele.

Beispiel 2: Konvertierung von URL in PDF

Vor (PeachPDF):

// PeachPDFhas no ConvertUrl-style helper; URL fetching is wired via
// HttpClientNetworkAdapter and passing null HTML so the engine fetches the page.
using PeachPDF;
using PeachPDF.Network;
using PeachPDF.PdfSharpCore;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var http = new HttpClient();

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            NetworkAdapter = new HttpClientNetworkAdapter(http, new Uri("https://www.example.com"))
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(null, config);

        using var stream = File.Create("webpage.pdf");
        document.Save(stream);
    }
}
C#

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
    }
}

PeachPDF hat keinen erstklassigen URL-zu-PDF-Helfer; Sie setzen NetworkAdapter in der Konfiguration auf ein HttpClientNetworkAdapter und übergeben null HTML, sodass die Engine die Seite abruft.IronPDF stellt RenderUrlAsPdf(url) direkt zur Verfügung. Da PeachPDFkein JavaScriptausführt, werden Single-Page-Apps und dynamische Inhalte typischerweise nicht korrekt über den Netzwerkadapterweg gerendert; Der Chromium-Engine von IronPDF verarbeitet moderne CSS und JavaScript. Erfahren Sie mehr in unseren Tutorials.

Beispiel 3: Hinzufügen von Kopf- und Fußzeilen

Vor (PeachPDF):

// PeachPDFv0.7.x has no header/footer API. The closest approach is
// to embed the header/footer markup directly inside the source HTML
// using CSS positioning.
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = @"
            <html><head><style>
              .header { position: fixed; top: 0; left: 0; right: 0; text-align:center; }
              .footer { position: fixed; bottom: 0; left: 0; right: 0; text-align:center; }
            </style></head>
            <body>
              <div class='header'>My Header</div>
              <h1>Document Content</h1>
              <div class='footer'>Footer text</div>
            </body></html>";

        var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("document.pdf");
        document.Save(stream);
    }
}
C#

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}

Dieses Beispiel zeigt einen wichtigen architektonischen Unterschied. PeachPDFbietet keine Header/Footer-API auf PdfGenerator oder PdfGenerateConfig an, daher muss das Seitengerüst im Quell-HTML mit CSS-Positionierung enthalten sein.IronPDF verwendet HtmlHeaderFooter-Objekte, die RenderingOptions.HtmlHeader und RenderingOptions.HtmlFooter zugewiesen sind, und trennt das Seitengerüst vom Dokumentinhalt.

Der IronPDF-Ansatz bietet auch Eigenschaften wie MaxHeight zur Steuerung der Header-/Footer-Größe und unterstützt die Platzhalter {page} und {total-pages} für Seitenzahlen.

Beachten Sie den zusätzlichen Namespace, der für IronPDF erforderlich ist: using IronPdf.Rendering; wird für die HtmlHeaderFooter-Klasse benötigt.


Kritische Hinweise zur Migration

Generator/Renderer Klassenänderung

PeachPDF verwendet ein PdfGenerator + PdfGenerateConfig-Paar;IronPDF verwendet ein einzelnes ChromePdfRenderer:

// PeachPDF
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();

// IronPDF
var renderer = new ChromePdfRenderer();

Async vs Sync und Rückgabewert

PeachPDFs GeneratePdf ist nur asynchron und gibt ein Dokument zurück, dessen Save-Methode einen Stream benötigt. IronPDFs RenderHtmlAsPdf ist synchron (eine asynchrone Variante RenderHtmlAsPdfAsync ist ebenfalls verfügbar) und gibt ein PdfDocument zurück:

// PeachPDF: async, save to a Stream
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create("output.pdf");
document.Save(fs);

// IronPDF: synchronous PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;

Kopf-/Fußzeile Eigenschaftsänderung

// PeachPDF: no header/footer API -- embed in source HTML
// (e.g. via CSS position:fixed)

// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Header</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Footer</div>"
};

Änderung von Methodennamen

PeachPDFIronPDF
await generator.GeneratePdf(html, config)renderer.RenderHtmlAsPdf(html)
NetworkAdapter = new HttpClientNetworkAdapter(...) + GeneratePdf(null, config)renderer.RenderUrlAsPdf(url)
document.Save(stream)pdf.SaveAs(path)

Neue Funktionen nach der Migration

Nach der Umstellung auf IronPDF erhalten Sie Funktionen, die PeachPDFnicht bieten kann:

PDF-Zusammenführung

var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
C#

Wasserzeichen mit HTML

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");

Passwortschutz

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");

Digitale Signaturen

using IronPdf.Signing;

var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Document Approval",
    SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");

Asynchrone Operationen

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");

Zusammenfassung des Funktionsvergleichs

FeaturePeachPDFIronPDF
HTML zu PDFPdfSharpCore-basierter LayoutVollständiges Chromium
URL zu PDFÜber HttpClientNetworkAdapter (kein JS)Ja
CSS-Gitter/FlexboxTeilweise / nicht garantiertJa
JavaScriptNicht ausgeführtVollständiger ES2024
PDFs zusammenführenNein (HTML->PDF nur)Ja
PDFs teilenNeinJa
WasserzeichenManuell über HTMLVollständiges HTML
Kopf-/FußzeilenManuell über HTML/CSSVollständiges HTML
Digitale SignaturenNeinJa
PDF/ANeinJa
Formular ausfüllenNeinJa
TextextraktionNeinJa
BildextraktionNeinJa
Async-UnterstützungNur asynchrone APIJa
Plattformübergreifendnet8.0 (Windows / Linux / macOS)Ja

Gängige Probleme bei der Migration

Ausgabe 1: Verschiedene API-Muster

Problem: PeachPDFtrennt PdfGenerator (Engine) von PdfGenerateConfig (Einstellungen) und ist asynchron;IronPDF verwendet einen ChromePdfRenderer, der einen PdfDocument synchron zurückgibt.

Lösung:

// PeachPDFpattern (async, stream-out)
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create(path);
document.Save(fs);

//IronPDF pattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
C#

Problem 2: Speichern zielt auf einen Stream, nicht auf einen Pfad

Problem: PeachPDFs document.Save(stream) akzeptiert nur einen Stream; IronPDFs pdf.SaveAs(path) akzeptiert einen Pfad-String.

Lösung: Verwenden Sie pdf.SaveAs("file.pdf") direkt in IronPDF statt ein FileStream zu öffnen.

Problem 3: Keine bestehenden PDF-Operationen

Problem: PeachPDFist nur HTML zu PDF; es kann vorhandene PDFs nicht laden, zusammenführen, teilen oder bearbeiten.

Lösung: Ersetzen Sie diese Operationen durch IronPDFs PdfDocument.FromFile, PdfDocument.Merge, und pdf.AppendPdf, sobald migriert.


Migrations-Checkliste

Vor der Migration

  • Überprüfung der PeachPDF-Nutzung im Quellcode
  • Dokumentation benutzerdefinierter Konfigurationen
  • Beachten Sie alle Header-/Footer-Implementierungen
  • Den IronPDF Lizenzschlüssel erhalten Sie unter IronPDF
  • Zuerst mit der IronPDF Testlizenz testen

Paketänderungen

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

Code-Änderungen

  • Aktualisieren Sie die Namespace-Importe (using PeachPDF;using IronPdf;)
  • Fügen Sie using IronPdf.Rendering; für Header/Footer-Funktionalität hinzu
  • Ersetzen Sie PdfGenerator + PdfGenerateConfig durch ChromePdfRenderer
  • Ersetzen Sie await generator.GeneratePdf(html, config) durch renderer.RenderHtmlAsPdf(html) (oder RenderHtmlAsPdfAsync um asynchron zu bleiben)
  • Ersetzen Sie HttpClientNetworkAdapter + GeneratePdf(null, config) durch renderer.RenderUrlAsPdf(url)
  • Ersetzen Sie document.Save(stream) durch pdf.SaveAs(path)
  • Ersetzen Sie die in HTML eingebetteten Header/Footer durch HtmlFooter-Objekte
  • Lizenzinitialisierung beim Anwendungsstart hinzufügen

Nach der Migration

  • Test der HTML-Renderingqualität
  • Überprüfen der PDF-Ausgabe auf Übereinstimmung mit den Erwartungen
  • Test der Kopf-/Fußzeilendarstellung mit Seitenzahlen
  • Fügen Sie bei Bedarf neue Funktionen hinzu (Sicherheit, Wasserzeichen, Zusammenführung).

Hinweis:: PeachPDF ist ein eingetragenes Markenzeichen seines jeweiligen Eigentümers. Diese Website ist nicht verbunden mit, unterstützt von oder gesponsert von PeachPDF. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.
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 Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Buchen Sie Ihre kostenlose Live-Demo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Kundenlogos von Iron Software
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.