Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Wie man von pdforge zu IronPDF in C# migriert

Warum von pdforgezuIronPDFmigrieren

Verstehen Sie pdforge

pdforge ist eine Cloud-basierte PDF-Generierungs-API, die eine unkomplizierte Möglichkeit bietet, PDF-Dateien zu erzeugen, indem sie über API-Aufrufe in Ihre Anwendung integriert wird. Indem sie die Aufgabe der PDF-Erstellung an eine externe API auslagern, können Entwickler den Entwicklungsprozess vereinfachen. Allerdings hat pdforgeauch Nachteile, wie z. B. externe Abhängigkeiten, begrenzte Anpassungsmöglichkeiten und laufende Abonnementkosten, derer sich Entwickler bewusst sein sollten.

Das Problem der Cloud-API-Abhängigkeit

pdforge verarbeitet alle Dokumente auf externen Cloud-Servern. Diese Architektur schafft erhebliche Probleme für Produktionsanwendungen:

  1. Externe Serververarbeitung: Jedes von Ihnen generierte PDF erfordert das Senden Ihrer HTML-/Daten an die Server von pdforge– Ihre Dokumente verlassen somit Ihre Infrastruktur.

  2. Datenschutz- und Compliance-Risiken: Sensible Daten werden über das Internet an Server von Drittanbietern übertragen. Bei der Verwendung von pdforgemüssen die Entwickler Sicherheitsbedenken in Bezug auf die Übermittlung von Daten an eine externe API berücksichtigen. Wenn der PDF-Inhalt sensible Informationen enthält, könnte dies ein kritischer Punkt sein.

  3. Laufende Abonnementkosten: Monatliche Gebühren fallen unbegrenzt an, ohne dass Eigentumsrechte erworben werden. Das SaaS-Modell von pdforgeführt zu kontinuierlichen Betriebskosten, die sich im Laufe der Zeit summieren können.

  4. Internetabhängigkeit: Es wird keine PDF-Datei generiert, wenn keine Netzwerkverbindung besteht.

  5. Ratenbegrenzungen: API-Nutzungsbeschränkungen können Anwendungen mit hohem Datenaufkommen ausbremsen.

  6. Netzwerklatenz: Die Roundtrip-Zeit verlängert die Generierung jeder PDF-Datei um einige Sekunden.

pdforgevsIronPDFVergleich

Feature pdforge IronPDF
Bereitstellungsart Cloud-basierte API Lokale Bibliothek
Abhängigkeiten Erfordert Internet und API-Authentifizierung Keine externen Abhängigkeiten
Anpassung Begrenzte Kontrolle über die PDF-Erzeugung Volle Kontrolle über Anpassungen
Kostenstruktur Laufendes Abonnement Einmalige Kaufoption
Sicherheit Mögliche Probleme mit Daten, die über das Internet gesendet werden Die Datenverarbeitung bleibt vollständig in der lokalen Umgebung
Komplexität der Einrichtung Leichtere Ersteinrichtung durch externe Bearbeitung Erfordert mehr anfängliche Einrichtung und Konfiguration

IronPDF hebt sich durch die Bereitstellung einer vollständig lokalen Bibliothek ab, die Entwicklern die vollständige Kontrolle über den PDF-Erstellungsprozess ermöglicht. Dies ist besonders vorteilhaft für Anwendungen, bei denen die interne Handhabung von Dateien bevorzugt wird oder bei denen externe API-Aufrufe Sicherheitsbedenken aufwerfen.IronPDFverarbeitet alles lokal und minimiert so die Risiken.

Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, bietetIronPDFeine lokale Verarbeitungsgrundlage, die die Abhängigkeit von der Cloud beseitigt und gleichzeitig umfassende PDF-Bearbeitungsfunktionen bietet.


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 pdforgepackages
dotnet remove package pdforge
dotnet remove package PdfForge

# Install IronPDF
dotnet add package IronPdf
# Remove pdforgepackages
dotnet remove package pdforge
dotnet remove package PdfForge

# 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

Identifizieren Sie die Verwendung von pdforge

# Find pdforgeusage
grep -r "PdForge\|PdfClient\|HtmlToPdfRequest\|HtmlToPdfConverter" --include="*.cs" .

# Find placeholder patterns to migrate
grep -r "{totalPages}" --include="*.cs" .
# Find pdforgeusage
grep -r "PdForge\|PdfClient\|HtmlToPdfRequest\|HtmlToPdfConverter" --include="*.cs" .

# Find placeholder patterns to migrate
grep -r "{totalPages}" --include="*.cs" .
SHELL

Komplette API-Referenz

Namensraumänderungen

// Before: pdforge
using PdfForge;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: pdforge
using PdfForge;
using System.IO;

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

Kernklassen-Zuordnungen

pdforge IronPDF Notizen
HtmlToPdfConverter ChromePdfRenderer Haupt-PDF-Generator
PdfClient ChromePdfRenderer API-Client-Äquivalent
Seitengröße.A4 PdfPaperSize.A4 Papierformat enum
PageOrientation.Landscape PdfPaperOrientation.Landscape Orientierung enum
Rückgabetyp: Byte[] PdfDocument Ergebnisobjekt

Methoden-Zuordnungen

pdforge IronPDF Notizen
converter.ConvertHtmlString(html) renderer.RenderHtmlAsPdf(html) HTML-String in PDF
converter.ConvertUrl(url) renderer.RenderUrlAsPdf(url) URL zu PDF
File.WriteAllBytes(Pfad, Bytes) pdf.SaveAs(Pfad) Auf Festplatte speichern
Rückgabetyp: Byte[] pdf.BinaryData Rohbytes erhalten

Konfigurations-Zuordnungen

pdforge IronPDF(RenderingOptions) Notizen
converter.PageSize = PageSize.A4 renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 Papierformat
converter.Orientation = PageOrientation.Landscape renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape Orientierung
Footer = "Seite {Seite} von {Gesamtseiten}" TextFooter = new TextHeaderFooter { CenterText = "Seite {page} von {total-pages}" } Fußzeile (Platzhalteränderung beachten)

Neue Funktionen, die in pdforgenicht verfügbar sind

IronPDFMerkmal Beschreibung
PdfDocument.Merge() Kombinieren mehrerer PDFs
pdf.ExtractAllText() Extrahieren von Text aus PDFs
pdf.ApplyWatermark() Wasserzeichen hinzufügen
pdf.SecuritySettings Passwortschutz
pdf.Form Ausfüllen von Formularen
pdf.SignWithDigitalSignature() Digitale Signaturen

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML-Strings in PDF

Vor (pdforge):

// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

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");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

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");
    }
}
$vbLabelText   $csharpLabel

Der grundlegende Unterschied ist das Verarbeitungsmodell und der Rückgabetyp. pdforgeverwendet HtmlToPdfConvertermit ConvertHtmlString(), das ein Byte[]-Array zurückgibt - Sie müssen dann File.WriteAllBytes() verwenden, um das Ergebnis zu speichern.

IronPDF verwendet ChromePdfRenderermit RenderHtmlAsPdf(), das ein PdfDocumentObjekt zurückgibt. Dieses Objekt kann direkt mit SaveAs() gespeichert werden, oder Sie können auf pdf.BinaryDatazugreifen, wenn Sie die Rohbytes benötigen. Das PdfDocumenterlaubt auch Manipulationen (Wasserzeichen hinzufügen, mit anderen PDFs zusammenführen, Sicherheit hinzufügen) vor dem Speichern. Umfassende Beispiele finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: Konvertierung von URL in PDF

Vor (pdforge):

// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var pdf = converter.ConvertUrl("https://example.com");
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var pdf = converter.ConvertUrl("https://example.com");
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

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

pdforge verwendet ConvertUrl() in der Klasse HtmlToPdfConverterund gibt die Bytes zurück, die Sie mit File.WriteAllBytes() schreiben.IronPDFverwendet RenderUrlAsPdf() auf ChromePdfRendererund gibt ein PdfDocumentmit der integrierten Methode SaveAs() zurück.

Der Hauptvorteil vonIronPDFbesteht darin, dass die URL lokal mit einer Chromium-Engine abgerufen und gerendert wird - es werden keine Daten an externe Server gesendet. DaIronPDFeine lokale Bibliothek ist, bietet es möglicherweise eine bessere Leistung, da bei Webanfragen keine Round-Trip-Zeit anfällt. Erfahren Sie mehr über die URL in PDF Konvertierung.

Beispiel 3: HTML-Datei in PDF mit benutzerdefinierten Einstellungen

Vor (pdforge):

// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.PageSize = PageSize.A4;
        converter.Orientation = PageOrientation.Landscape;
        var htmlContent = File.ReadAllText("input.html");
        var pdf = converter.ConvertHtmlString(htmlContent);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.PageSize = PageSize.A4;
        converter.Orientation = PageOrientation.Landscape;
        var htmlContent = File.ReadAllText("input.html");
        var pdf = converter.ConvertHtmlString(htmlContent);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        var htmlContent = System.IO.File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        var htmlContent = System.IO.File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

Dieses Beispiel zeigt den Unterschied im Konfigurationsmuster. pdforgesetzt Eigenschaften direkt am Konverterobjekt (converter.PageSize = PageSize.A4, converter.Orientation = PageOrientation.Landscape).

IronPDF verwendet die Eigenschaft RenderingOptions mit stark typisierten Enums: renderer.RenderingOptions.PaperSize = PdfPaperSize.A4und renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape. Dies bietet IntelliSense-Unterstützung und Kompilierzeit-Typensicherheit. Beachten Sie, dassIronPDFden Import des IronPdf.Rendering-Namensraums für die Enums für Papiergröße und Ausrichtung erfordert. In den Tutorials finden Sie weitere Konfigurationsbeispiele.


Kritische Hinweise zur Migration

Rückgabetyp ändern

pdforge liefert Byte[];IronPDFliefert PdfDocument:

// pdforge: Returns byte[]
byte[] pdfBytes = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdfBytes);

// IronPDF: Returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");           // Direct save
byte[] bytes = pdf.BinaryData;      // Get bytes if needed
// pdforge: Returns byte[]
byte[] pdfBytes = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdfBytes);

// IronPDF: Returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");           // Direct save
byte[] bytes = pdf.BinaryData;      // Get bytes if needed
$vbLabelText   $csharpLabel

Änderung der Konverterklasse

// pdforge: HtmlToPdfConverter
var converter = new HtmlToPdfConverter();

// IronPDF: ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// pdforge: HtmlToPdfConverter
var converter = new HtmlToPdfConverter();

// IronPDF: ChromePdfRenderer
var renderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

Änderung von Methodennamen

// pdforgemethods
converter.ConvertHtmlString(html)
converter.ConvertUrl(url)

//IronPDFmethods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
// pdforgemethods
converter.ConvertHtmlString(html)
converter.ConvertUrl(url)

//IronPDFmethods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
$vbLabelText   $csharpLabel

Methodenänderung speichern

// pdforge: Manual file write
File.WriteAllBytes("output.pdf", pdfBytes);

// IronPDF: Built-in save method
pdf.SaveAs("output.pdf");
// pdforge: Manual file write
File.WriteAllBytes("output.pdf", pdfBytes);

// IronPDF: Built-in save method
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

Konfigurationsort ändern

pdforge verwendet Eigenschaften des Konverters;IronPDFverwendet RenderingOptions:

// pdforge: Properties on converter
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;

// IronPDF: Properties on RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// pdforge: Properties on converter
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;

// IronPDF: Properties on RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
$vbLabelText   $csharpLabel

Kopf-/Fußzeilen-Platzhalter-Syntax

Wenn Sie Seitenzahlen in Kopf- oder Fußzeilen verwenden, unterscheidet sich die Syntax der Platzhalter:

// pdforgeplaceholders
"Page {page} of {totalPages}"

//IronPDFplaceholders
"Page {page} of {total-pages}"  // Note: hyphen in total-pages
// pdforgeplaceholders
"Page {page} of {totalPages}"

//IronPDFplaceholders
"Page {page} of {total-pages}"  // Note: hyphen in total-pages
$vbLabelText   $csharpLabel

Neue Funktionen nach der Migration

Nach der Migration zuIronPDFerhalten Sie Funktionen, die pdforgenicht 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

Textextraktion

var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
$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

Zusammenfassung des Funktionsvergleichs

Feature pdforge IronPDF
HTML zu PDF
URL zu PDF
Seite Einstellungen
Offline-fähig
Lokale Verarbeitung
PDFs zusammenführen
PDFs teilen
Text extrahieren
Wasserzeichen
Formular ausfüllen
Digitale Signaturen
Passwortschutz
Keine Preisbeschränkung
Einmallizenz

Migrations-Checkliste

Vor der Migration

  • Inventarisierung aller pdforge-API-Aufrufe im Quellcode
  • Dokumentieren Sie die aktuell verwendeten Konfigurationsoptionen (Seitengröße, Ausrichtung)
  • Kopf-/Fußzeilenplatzhalter identifizieren, die aktualisiert werden sollen ( {totalPages}{total-pages} )
  • Speicherung des IronPDF-Lizenzschlüssels (Umgebungsvariablen empfohlen)
  • Zuerst mit der IronPDF-Testlizenz testen

Paketänderungen

  • Entfernen Sie pdforge NuGet-Paket
  • Entfernen Sie PdfForge NuGet-Paket
  • Installieren Sie IronPdf NuGet-Paket: dotnet add package IronPdf

Code-Änderungen

  • Aktualisiere alle Namespace-Importe ( using PdfForge;using IronPdf; )
  • Fügen Sie using IronPdf.Rendering; um die Enumerationen für Papiergröße und -ausrichtung zu erhalten.
  • Ersetzen Sie HtmlToPdfConverterdurch ChromePdfRenderer
  • Ersetzen Sie ConvertHtmlString() durch RenderHtmlAsPdf()
  • Ersetzen Sie ConvertUrl() durch RenderUrlAsPdf()
  • Ersetzen Sie File.WriteAllBytes() durch pdf.SaveAs()
  • Verschieben Sie PageSize Eigenschaft in RenderingOptions.PaperSize
  • Verschieben Sie die Eigenschaft Orientation nach RenderingOptions.PaperOrientation
  • Aktualisierung der Enum-Namen ( Seitengröße.A4PdfPaperSize.A4)
  • Aktualisierung der Enum-Namen ( PageOrientation.LandscapePdfPaperOrientation.Landscape)
  • Aktualisieren Sie die Platzhaltersyntax in Kopf- und Fußzeilen

Nach der Migration

  • Testen Sie, ob die Qualität der PDF-Ausgabe den Erwartungen entspricht
  • Überprüfen Sie, ob der Offline-Betrieb funktioniert
  • API-Zugangsdaten aus der Konfiguration entfernen
  • Fügen Sie bei Bedarf neue Funktionen hinzu (Zusammenführung, Wasserzeichen, Sicherheit).

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