IRONSOFTWAREHOME
VIDEOS

Wie man XAML zu PDF in NET MAUI konvertiert

Curtis Chau
Curtis Chau
Updated: 19. Juli 2026

Warum von pdforge zu IronPDF migrieren

Verstehen Sie pdforge

pdforge (umbenannt zu "pdf noodle" im Jahr 2026 — pdfnoodle.com; der api.pdforge.com Hostname funktioniert weiterhin über 301-Weiterleitungen bis Ende 2026) ist eine cloud-basierte, vorlagengetriebene PDF-Generierungs-API, die eine einfache Möglichkeit bietet, PDF-Dateien zu erstellen, indem sie über HTTP-Aufrufe in Ihre Anwendung integriert wird. Es gibt kein offizielles .NET SDK auf NuGet — die Integration erfolgt mit HttpClient gegen die dokumentierten REST-Endpunkte. Indem sie die Aufgabe der PDF-Erstellung an eine externe API auslagern, können Entwickler den Entwicklungsprozess vereinfachen. Allerdings hat pdforge auch 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 pdforge mü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 pdforge fü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.

pdforge vs IronPDF Vergleich

FeaturepdforgeIronPDF
BereitstellungsartCloud-basierte APILokale Bibliothek
AbhängigkeitenErfordert Internet und API-AuthentifizierungKeine externen Abhängigkeiten
AnpassungBegrenzte Kontrolle über die PDF-ErzeugungVolle Kontrolle über Anpassungen
KostenstrukturLaufendes AbonnementEinmalige Kaufoption
SicherheitMögliche Probleme mit Daten, die über das Internet gesendet werdenDie Datenverarbeitung bleibt vollständig in der lokalen Umgebung
Komplexität der EinrichtungLeichtere Ersteinrichtung durch externe BearbeitungErfordert 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.IronPDF verarbeitet alles lokal und minimiert so die Risiken.

Für Teams, die die Einführung von .NET 10 und C# 14 auf den aktuellen .NET-Versionen planen, bietet IronPDF eine lokale Verarbeitungsgrundlage, die die Abhängigkeit von der Cloud eliminiert und gleichzeitig umfassende PDF-Manipulationsfunktionen hinzufügt.


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

# pdforge has no official .NET SDK on NuGet — integration is HttpClient + JSON.
# If your project depends only on built-in System.Net.Http, there is no
# competitor package to remove. Just install IronPDF:
dotnet add package IronPdf
SHELL

Lizenz-Konfiguration

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

Identifizieren Sie die Verwendung von pdforge

# Find pdforge / pdf noodle endpoint usage
grep -r "api\.pdforge\.com\|api\.pdfnoodle\.com" --include="*.cs" .

# Find API key / Bearer token references
grep -r "pdfnoodle_api_\|pdforge_api_" --include="*.cs" --include="*.json" --include="*.config" .

# Find Chromium header/footer templates that need migrating
grep -r "totalPages\|pageNumber\|footerTemplate\|headerTemplate" --include="*.cs" .
SHELL

Komplette API-Referenz

Namensraumänderungen

// Before: pdforge — raw HttpClient against api.pdfnoodle.com
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

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

Kernkonzept-Zuordnungen

pdforge (REST)IronPDF
HttpClient + Authorization: Bearer pdfnoodle_api_...new ChromePdfRenderer()
POST https://api.pdfnoodle.com/v1/html-to-pdf/syncrenderer.RenderHtmlAsPdf(html)
JSON-Body { html, pdfParams }ChromePdfRenderer + RenderingOptions
Antwort: JSON-Umschlag mit signedUrlPdfDocument
Rückgabe: byte[] (nach Abrufen von signedUrl)pdf.BinaryData

Operationszuordnungen

pdforgeIronPDF
POST /v1/html-to-pdf/sync mit { html }renderer.RenderHtmlAsPdf(html)
URL abrufen, dann HTML POSTen (kein dedizierter URL-Endpunkt)renderer.RenderUrlAsPdf(url)
Download signedUrl dann File.WriteAllBytes(path, bytes)pdf.SaveAs(path)
await http.GetByteArrayAsync(signedUrl)pdf.BinaryData

Konfigurations-Zuordnungen

pdforge pdfParamsIronPDF(RenderingOptions)
format: "A4"renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
landscape: truerenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
margin: { top: "20px" }renderer.RenderingOptions.MarginTop = 20
footerTemplate mit <span class="pageNumber"> / <span class="totalPages">TextFooter = new TextHeaderFooter { CenterText = "Page {page} of {total-pages}" }

Neue Funktionen, die in pdforge nicht verfügbar sind

IronPDF MerkmalBeschreibung
PdfDocument.Merge()Kombinieren mehrerer PDFs
pdf.ExtractAllText()Extrahieren von Text aus PDFs
pdf.ApplyWatermark()Wasserzeichen hinzufügen
pdf.SecuritySettingsPasswortschutz
pdf.FormAusfüllen von Formularen
pdf.SignWithDigitalSignature()Digitale Signaturen

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML-Strings in PDF

Vor (pdforge):

// REST API — no .NET SDK on NuGet. Integration is HttpClient + JSON POST.
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var http = new HttpClient();
        http.DefaultRequestHeaders.Authorization =
            new AuthenticationHeaderValue("Bearer", "pdfnoodle_api_YOUR_KEY");

        var body = new { html = "<html><body><h1>Hello World</h1></body></html>" };
        var json = new StringContent(JsonSerializer.Serialize(body), Encoding.UTF8, "application/json");

        var resp = await http.PostAsync("https://api.pdfnoodle.com/v1/html-to-pdf/sync", json);
        resp.EnsureSuccessStatusCode();

        using var doc = JsonDocument.Parse(await resp.Content.ReadAsStringAsync());
        var pdfBytes = await http.GetByteArrayAsync(doc.RootElement.GetProperty("signedUrl").GetString());
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

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

Der grundlegende Unterschied ist das Verarbeitungsmodell und der Rückgabetyp. pdforge erfordert ein authentifiziertes HttpClient POST an https://api.pdfnoodle.com/v1/html-to-pdf/sync, das einen JSON-Umschlag mit einer signierten S3-URL zurückgibt — dann rufen Sie die PDF-Bytes von dieser URL ab und schreiben sie mit File.WriteAllBytes().

IronPDF verwendet ChromePdfRenderer mit RenderHtmlAsPdf(), das ein PdfDocument Objekt zurückgibt. Dieses Objekt kann direkt mit SaveAs() gespeichert werden, oder Sie können auf pdf.BinaryData zugreifen, wenn Sie die Rohbytes benötigen. Das PdfDocument ermöglicht auch die Bearbeitung (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):

// REST API — no .NET SDK on NuGet. pdforge has no dedicated URL endpoint;
// fetch the page yourself and POST its HTML to /v1/html-to-pdf/sync.
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var http = new HttpClient();
        http.DefaultRequestHeaders.Authorization =
            new AuthenticationHeaderValue("Bearer", "pdfnoodle_api_YOUR_KEY");

        var sourceHtml = await http.GetStringAsync("https://example.com");
        var body = new { html = sourceHtml };
        var json = new StringContent(JsonSerializer.Serialize(body), Encoding.UTF8, "application/json");

        var resp = await http.PostAsync("https://api.pdfnoodle.com/v1/html-to-pdf/sync", json);
        resp.EnsureSuccessStatusCode();

        using var doc = JsonDocument.Parse(await resp.Content.ReadAsStringAsync());
        var pdfBytes = await http.GetByteArrayAsync(doc.RootElement.GetProperty("signedUrl").GetString());
        File.WriteAllBytes("webpage.pdf", pdfBytes);
    }
}

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

pdforge hat keinen dedizierten URL-zu-PDF-Endpunkt — Sie holen sich die Seite selbst, posten dann ihr HTML an den synchronen Endpunkt und laden das Ergebnis von der zurückgegebenen signierten URL herunter.IronPDF verwendet RenderUrlAsPdf() auf ChromePdfRenderer, wobei ein PdfDocument mit der eingebauten SaveAs() Methode zurückgegeben wird.

Der Hauptvorteil von IronPDF besteht darin, dass die URL lokal mit einer Chromium-Engine abgerufen und gerendert wird - es werden keine Daten an externe Server gesendet. Da IronPDF eine 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):

// REST API — no .NET SDK on NuGet. Page size / orientation flow through the
// optional `pdfParams` object using Chromium/Puppeteer-style names.
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var http = new HttpClient();
        http.DefaultRequestHeaders.Authorization =
            new AuthenticationHeaderValue("Bearer", "pdfnoodle_api_YOUR_KEY");

        var htmlContent = File.ReadAllText("input.html");
        var body = new { html = htmlContent, pdfParams = new { format = "A4", landscape = true } };
        var json = new StringContent(JsonSerializer.Serialize(body), Encoding.UTF8, "application/json");

        var resp = await http.PostAsync("https://api.pdfnoodle.com/v1/html-to-pdf/sync", json);
        resp.EnsureSuccessStatusCode();

        using var doc = JsonDocument.Parse(await resp.Content.ReadAsStringAsync());
        var pdfBytes = await http.GetByteArrayAsync(doc.RootElement.GetProperty("signedUrl").GetString());
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

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

Dieses Beispiel zeigt den Unterschied im Konfigurationsmuster. pdforge übergibt Optionen als JSON-Felder innerhalb eines pdfParams Objekts im POST-Body (format = "A4", landscape = true), nach den Chromium/Puppeteer-Namenskonventionen.

IronPDF verwendet die RenderingOptions Eigenschaft mit stark typisierten Enums: renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 und renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape. Dies bietet IntelliSense-Unterstützung und Kompilierzeit-Typensicherheit. Beachten Sie, dass IronPDF das Importieren des IronPdf.Rendering Namespace für die Papierformat- und Ausrichtungs-Enums erfordert. In den Tutorials finden Sie weitere Konfigurationsbeispiele.


Kritische Hinweise zur Migration

Rückgabetyp ändern

pdforge gibt einen JSON-Umschlag mit einer signierten URL zurück;IronPDF gibt PdfDocument zurück:

// pdforge: Two-step — parse signedUrl from JSON, then fetch bytes from it
var resp = await http.PostAsync("https://api.pdfnoodle.com/v1/html-to-pdf/sync", json);
using var doc = JsonDocument.Parse(await resp.Content.ReadAsStringAsync());
var pdfBytes = await http.GetByteArrayAsync(doc.RootElement.GetProperty("signedUrl").GetString());
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

Generator Änderung

// pdforge: HttpClient against the REST endpoint
using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", "pdfnoodle_api_YOUR_KEY");

// IronPDF: ChromePdfRenderer
var renderer = new ChromePdfRenderer();

Änderungen an Operationen

// pdforge operations
await http.PostAsync("https://api.pdfnoodle.com/v1/html-to-pdf/sync", json);   // HTML to PDF
// URL to PDF: fetch the page first, then POST its HTML to the same endpoint

//IronPDF methods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
C#

Methodenänderung speichern

// pdforge: Two-step — fetch bytes from signed URL, then write to disk
var pdfBytes = await http.GetByteArrayAsync(signedUrl);
File.WriteAllBytes("output.pdf", pdfBytes);

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

Konfigurationsort ändern

pdforge übergibt Optionen als JSON-Felder auf pdfParams;IronPDF verwendet RenderingOptions:

// pdforge: JSON pdfParams object on the POST body
var body = new { html, pdfParams = new { format = "A4", landscape = true } };

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

Kopf-/Fußzeilen-Platzhalter-Syntax

pdforge übernimmt Chromiums Kopf-/Fußzeilen-Vorlagenformat — HTML-Fragmente, die <span class="..."></span> Elemente enthalten, die die Engine zur Renderzeit ersetzt.IronPDF verwendet klammergeschlossene Platzhalter innerhalb eines TextHeaderFooter / HtmlHeaderFooter:

// pdforge: Chromium template HTML inside pdfParams.footerTemplate
// "<div>Page <span class=\"pageNumber\"></span> of <span class=\"totalPages\"></span></div>"

//IronPDF placeholders
"Page {page} of {total-pages}"  // Note: hyphen in total-pages
C#

Neue Funktionen nach der Migration

Nach der Migration zu IronPDF erhalten Sie Funktionen, die pdforge nicht 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");

Textextraktion

var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();

Wasserzeichen

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

Passwortschutz

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";

Zusammenfassung des Funktionsvergleichs

FeaturepdforgeIronPDF
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

  • Inventarisieren Sie alle pdforge / pdf noodle Endpunktaufrufe im Code-Base (api.pdforge.com, api.pdfnoodle.com)
  • Dokumentieren Sie die aktuell verwendete pdfParams JSON-Konfiguration (Seitenformat, Ausrichtung, Ränder)
  • Identifizieren Sie Chromium-Stil Kopf-/Fußzeilen-Vorlagen (<span class="pageNumber">, <span class="totalPages">), um sie in IronPDF-Platzhalter ({page}, {total-pages}) zu konvertieren
  • Speicherung des IronPDF-Lizenzschlüssels (Umgebungsvariablen empfohlen)
  • Zuerst mit der IronPDF Testlizenz testen

Paketänderungen

  • pdforge hat kein .NET SDK auf NuGet — es gibt kein Konkurrenzpaket zu entfernen
  • Installieren Sie das IronPdf NuGet-Paket: dotnet add package IronPdf

Code-Änderungen

  • Entfernen Sie System.Net.Http / System.Text.Json Importe, die nur für pdforge-Aufrufe verwendet werden
  • Fügen Sie using IronPdf; und using IronPdf.Rendering; für Papierformat- und Ausrichtungs-Enums hinzu
  • Ersetzen Sie das authentifizierte HttpClient mit ChromePdfRenderer
  • Ersetzen Sie POST /v1/html-to-pdf/sync mit RenderHtmlAsPdf()
  • Ersetzen Sie das Fetch-URL-dann-POST-Muster durch RenderUrlAsPdf()
  • Ersetzen Sie den zweistufigen GetByteArrayAsync(signedUrl) + File.WriteAllBytes() mit pdf.SaveAs()
  • Verschieben Sie pdfParams.format zu RenderingOptions.PaperSize
  • Verschieben Sie pdfParams.landscape zu RenderingOptions.PaperOrientation
  • Verwenden Sie PdfPaperSize.A4 / PdfPaperOrientation.Landscape Enums
  • Konvertieren Sie Chromium-Vorlagen in IronPDF-Platzhalter innerhalb TextHeaderFooter / HtmlHeaderFooter
  • Ersetzen Sie das Bearer Token pro Anfrage durch ein einmaliges IronPdf.License.LicenseKey beim Start

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).

Hinweis:: pdforge und pdf noodle sind Marken ihrer jeweiligen Eigentümer. Diese Seite ist nicht mit dem Eigentümer von pdforge / pdf noodle verbunden oder von ihm gesponsert. 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.