Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von PDFmyURL zu IronPDF in C#

PDFmyURL ist ein Cloud-basierter API-Dienst zur Konvertierung von URLs und HTML-Inhalten in PDF-Dokumente. Der Dienst verarbeitet alle Konvertierungen auf externen Servern und bietet einen unkomplizierten Integrationspfad, der nur eine minimale lokale Infrastruktur erfordert. Diese von der Cloud abhängige Architektur wirft jedoch erhebliche Probleme für Produktionsanwendungen auf, die mit sensiblen Daten umgehen, Offline-Funktionen benötigen oder laufende Abonnementkosten vermeiden müssen.

Dieser Leitfaden bietet einen vollständigen Migrationspfad von PDFmyURLzu IronPDF, mit Schritt-für-Schritt-Anleitungen, Code-Vergleichen und praktischen Beispielen für professionelle .NET-Entwickler, die diesen Übergang evaluieren.

Warum von PDFmyURLmigrieren

Das Cloud-Verarbeitungsmodell von PDFmyURLbringt einige Herausforderungen mit sich, die die Entwicklerteams berücksichtigen müssen:

Datenschutz & Datensicherheit: Jedes Dokument, das Sie konvertieren, durchläuft die Server von PDFmyURL– sensible Verträge, Finanzberichte und personenbezogene Daten werden extern verarbeitet.

Laufende Abonnementkosten: Ab 39 $/Monat, die jährlichen Kosten übersteigen 468 $, ohne dass ein Eigentumsrecht besteht. Dieses Abonnementmodell bedeutet kontinuierliche Ausgaben unabhängig vom Nutzungsverhalten.

Internetabhängigkeit: Jede Konvertierung erfordert eine Netzwerkverbindung. Die Anwendungen können PDFs nicht offline oder während eines Netzwerkausfalls verarbeiten.

Ratenbegrenzung und Drosselung: API-Aufrufe können während Spitzenzeiten gedrosselt werden, was unter Umständen die Anwendungsleistung beeinträchtigen kann.

Verfügbarkeit des Dienstes: Ihre Anwendung ist davon abhängig, dass ein Drittanbieterdienst online und funktionsfähig ist.

Anbieterabhängigkeit: API-Änderungen können Ihre Integration ohne Vorwarnung beeinträchtigen und reaktive Code-Aktualisierungen erforderlich machen.

IronPDFvs. PDFmyURL: Vergleich der Funktionen

Das Verständnis der architektonischen Unterschiede hilft technischen Entscheidungsträgern, die Investition in die Migration zu bewerten:

Aspekt PDFmyURL IronPDF
Bearbeitungsort Externe Server Lokal (Ihr Server)
Typ API Wrapper .NET-Bibliothek
Authentifizierung API-Schlüssel pro Anfrage Einmaliger Lizenzschlüssel
Netzwerk erforderlich Jede Konvertierung Nur Ersteinrichtung
Preismodell Monatliches Abonnement ($39+) Unbefristete Lizenz verfügbar
Ratengrenzen Ja (planabhängig) Keine
Datenschutz Extern gesendete Daten Daten bleiben lokal
HTML/CSS/JS-Unterstützung W3C-konform Vollständige Chromium-Engine
Async-Muster Erforderlich (nur async) Sync- und async-Optionen
PDF-Bearbeitung Beschränkt Vollständige Suite (zusammenführen, aufteilen, bearbeiten)
Anwendungsfall Geringfügige Anwendungen Großes Volumen und Unternehmen

Schnellstart: PDFmyURLzuIronPDFMigration

Mit diesen grundlegenden Schritten kann die Migration sofort beginnen.

Schritt 1: Ersetzen von NuGet-Paketen

PDFmyURL-Pakete entfernen:

# Remove PDFmyURLpackages
dotnet remove package PdfMyUrl
dotnet remove package Pdfcrowd
# Remove PDFmyURLpackages
dotnet remove package PdfMyUrl
dotnet remove package Pdfcrowd
SHELL

IronPDF installieren:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Schritt 2: Namespaces aktualisieren

Ersetzen Sie die Namensräume von PDFmyURLdurch IronPDF:

// Before: PDFmyURL
using PdfMyUrl;
using Pdfcrowd;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PDFmyURL
using PdfMyUrl;
using Pdfcrowd;

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

Schritt 3: Lizenz initialisieren

Hinzufügen der Lizenzinitialisierung beim Start der Anwendung:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

Beispiele für die Code-Migration

Konvertierung von URLs zu PDF

Die URL-zu-PDF-Operation demonstriert die grundlegenden API-Unterschiede zwischen PDFmyURLund IronPDF.

PDFmyURL-Ansatz:

// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            client.convertUrlToFile("https://example.com", "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            client.convertUrlToFile("https://example.com", "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
$vbLabelText   $csharpLabel

IronPDF-Ansatz:

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

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

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

PDFmyURL erfordert die Erstellung eines HtmlToPdfClientmit Benutzernamen und API-Schlüssel für jede Konvertierungsanfrage und den anschließenden Aufruf von convertUrlToFile() mit der URL und dem Ausgabepfad. Der gesamte Vorgang muss in try-catch für den benutzerdefinierten Fehler-Typ von PDFmyURLverpackt werden.

IronPDF vereinfacht dies auf drei Zeilen: Erstellen Sie einen ChromePdfRenderer, rufen Sie RenderUrlAsPdf() auf, und verwenden Sie die eingebaute Methode SaveAs(). Es sind keine Anmeldeinformationen pro Anfrage erforderlich - die Lizenz wird einmalig beim Start der Anwendung festgelegt.

Für fortgeschrittene URL-zu-PDF-Szenarien siehe die URL-zu-PDF-Dokumentation.

Konvertierung von HTML-Strings zu PDF

Die Konvertierung von HTML-Strings zeigt die Musterunterschiede deutlich auf.

PDFmyURL-Ansatz:

// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            string html = "<html><body><h1>Hello World</h1></body></html>";
            client.convertStringToFile(html, "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            string html = "<html><body><h1>Hello World</h1></body></html>";
            client.convertStringToFile(html, "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
$vbLabelText   $csharpLabel

IronPDF-Ansatz:

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

class Example
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

PDFmyURL verwendet convertStringToFile(), das den HTML-Inhalt zur Verarbeitung an externe Server sendet. IronPDFs RenderHtmlAsPdf() verarbeitet alles lokal unter Verwendung der Chromium-Rendering-Engine.

Im Leitfaden zur Konvertierung von HTML in PDF finden Sie weitere Optionen.

HTML-Dateikonvertierung mit Seiteneinstellungen

Die Konfiguration von Papiergröße, Ausrichtung und Rändern erfordert in jeder Bibliothek unterschiedliche Ansätze.

PDFmyURL-Ansatz:

// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            client.setPageSize("A4");
            client.setOrientation("landscape");
            client.setMarginTop("10mm");
            client.convertFileToFile("input.html", "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            client.setPageSize("A4");
            client.setOrientation("landscape");
            client.setMarginTop("10mm");
            client.convertFileToFile("input.html", "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
$vbLabelText   $csharpLabel

IronPDF-Ansatz:

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

class Example
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Example
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFmyURL verwendet Setter-Methoden mit String-Parametern wie setPageSize("A4")und setMarginTop("10mm").IronPDFbietet stark typisierte Eigenschaften durch RenderingOptions mit Enums wie PdfPaperSize.A4 und Integer-Werten für Ränder in Millimetern.

PDFmyURLAPI zuIronPDFMapping Referenz

Dieses Mapping beschleunigt die Migration, indem es direkte API-Entsprechungen aufzeigt:

Kern-Klassen

PDFmyURL IronPDF Notizen
HtmlToPdfClient ChromePdfRenderer Hauptkonvertierungsklasse
PdfMyUrlClient ChromePdfRenderer Alternative Client-Klasse
API-Antwort-Objekt PdfDocument Ergebnis PDF-Objekt

Methoden

PDFmyURL IronPDF Notizen
client.convertUrlToFile(url, file) renderer.RenderUrlAsPdf(url).SaveAs(file) URL zu PDF
client.convertStringToFile(html, file) renderer.RenderHtmlAsPdf(html).SaveAs(file) HTML-String in PDF
client.convertFileToFile(input, output) renderer.RenderHtmlFileAsPdf(input).SaveAs(output) Datei zu Datei
Antwort.GetBytes() pdf.BinaryData Rohbytes erhalten
Antwort.GetStream() pdf.Stream Als Stream erhalten

Konfigurationsoptionen

PDFmyURL(setXxx-Methoden) IronPDF(RenderingOptions) Notizen
setPageSize("A4") .PaperSize = PdfPaperSize.A4 Papierformat
setPageSize("Letter") .PaperSize = PdfPaperSize.Letter US-Brief
setOrientation("landscape") .PaperOrientation = PdfPaperOrientation.Landscape Orientierung
setOrientation("Hochformat") .PaperOrientation = PdfPaperOrientation.Portrait Porträt
setMarginTop("10mm") .MarginTop = 10 Oberer Rand (mm)
setMarginBottom("10mm") .MarginBottom = 10 Unterer Rand (mm)
setMarginLeft("10mm") .MarginLeft = 10 Linker Rand (mm)
setMarginRight("10mm") .MarginRight = 10 Rechter Rand (mm)
setHeaderHtml(html) .HtmlHeader = new HtmlHeaderFooter { HtmlFragment = html } Kopfzeile
setFooterHtml(html) .HtmlFooter = new HtmlHeaderFooter { HtmlFragment = html } Fußzeile
setJavascriptDelay(500) .RenderDelay = 500 JS-Wartezeit (ms)
setDisableJavascript(true) .EnableJavaScript = false JS deaktivieren
setUsePrintMedia(true) .CssMediaType = PdfCssMediaType.Print CSS drucken

Vergleich der Authentifizierung

PDFmyURL IronPDF
new HtmlToPdfClient("username", "apikey") IronPdf.License.LicenseKey = "LICENSE-KEY"
API-Schlüssel pro Anfrage Einmalig bei Startup
Für jeden Aufruf erforderlich Einmal global eingestellt

Gängige Migrationsprobleme und Lösungen

Aufgabe 1: API-Schlüssel vs. Lizenzschlüssel

PDFmyURL: Für jede Konvertierungsanfrage sind Anmeldedaten erforderlich.

Lösung: Setzen Sie die IronPDF-Lizenz einmalig beim Start der Anwendung:

// PDFmyURL: API key per request
var client = new HtmlToPdfClient("username", "apikey");

// IronPDF: One-time license at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Set once, typically in Program.cs or Startup.cs
// PDFmyURL: API key per request
var client = new HtmlToPdfClient("username", "apikey");

// IronPDF: One-time license at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Set once, typically in Program.cs or Startup.cs
$vbLabelText   $csharpLabel

Aufgabe 2: Platzhalter-Syntax in Kopf-/Fußzeilen

PDFmyURL: Verwendet {Seitennummer} und {Gesamtseiten} Platzhalter.

Lösung: Aktualisierung auf das Platzhalterformat von IronPDF:

// PDFmyURL: "Page {page_number} of {total_pages}"
// IronPDF: "Page {page} of {total-pages}"
// PDFmyURL: "Page {page_number} of {total_pages}"
// IronPDF: "Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

Ausgabe 3: Async-Muster

PDFmyURL: Erfordert async/await-Muster.

Lösung:IronPDFist standardmäßig synchron; bei Bedarf für async einpacken:

// PDFmyURL: Native async
var response = await client.ConvertUrlAsync(url);

// IronPDF: Sync by default, wrap for async
var pdf = await Task.Run(() => renderer.RenderUrlAsPdf(url));
// PDFmyURL: Native async
var response = await client.ConvertUrlAsync(url);

// IronPDF: Sync by default, wrap for async
var pdf = await Task.Run(() => renderer.RenderUrlAsPdf(url));
$vbLabelText   $csharpLabel

Ausgabe 4: Fehlerbehandlung

PDFmyURL: Verwendet den benutzerdefinierten Ausnahmetyp Pdfcrowd.Error.

Lösung: Aktualisierung der Catch-Blöcke für IronPDF-Ausnahmen:

// PDFmyURL: Pdfcrowd.Error
catch (Pdfcrowd.Error e) { ... }

// IronPDF: Standard exceptions
catch (IronPdf.Exceptions.IronPdfRenderingException e) { ... }
// PDFmyURL: Pdfcrowd.Error
catch (Pdfcrowd.Error e) { ... }

// IronPDF: Standard exceptions
catch (IronPdf.Exceptions.IronPdfRenderingException e) { ... }
$vbLabelText   $csharpLabel

Ausgabe 5: Konfigurationsmuster

PDFmyURL: Verwendet Setter-Methoden mit String-Werten.

Lösung: Verwenden Sie stark typisierte RenderingOptions-Eigenschaften:

// PDFmyURL: Setter methods
client.setPageSize("A4");
client.setOrientation("landscape");

// IronPDF: Properties with enums
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// PDFmyURL: Setter methods
client.setPageSize("A4");
client.setOrientation("landscape");

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

PDFmyURL-Migrations-Checkliste

Vor der Migration anfallende Aufgaben

Überprüfen Sie Ihre Codebasis, um die Verwendung von PDFmyURLzu identifizieren:

# Find PDFmyURLusage
grep -r "PdfMyUrl\|Pdfcrowd\|HtmlToPdfClient" --include="*.cs" .

# Find API key references
grep -r "apikey\|api-key\|api_key" --include="*.cs" --include="*.json" --include="*.config" .

# Find placeholder patterns to migrate
grep -r "{page_number}\|{total_pages}" --include="*.cs" .
# Find PDFmyURLusage
grep -r "PdfMyUrl\|Pdfcrowd\|HtmlToPdfClient" --include="*.cs" .

# Find API key references
grep -r "apikey\|api-key\|api_key" --include="*.cs" --include="*.json" --include="*.config" .

# Find placeholder patterns to migrate
grep -r "{page_number}\|{total_pages}" --include="*.cs" .
SHELL

Dokumentieren Sie die aktuell verwendeten Konfigurationsoptionen. Planen Sie die Speicherung von Lizenzschlüsseln mithilfe von Umgebungsvariablen.

Aufgaben der Code-Aktualisierung

  1. PDFmyURL/Pdfcrowd NuGet-Pakete entfernen
  2. IronPdf NuGet-Paket installieren
  3. Aktualisieren aller Namensraumimporte
  4. Ersetzen der API-Schlüssel-Authentifizierung durch IronPDF-Lizenzschlüssel
  5. Setter-Methoden in RenderingOptions-Eigenschaften umwandeln
  6. Aktualisierung der Platzhaltersyntax in Kopf- und Fußzeilen ({Seitennummer}{Seite}, {Gesamtseiten}{Gesamtseiten})
  7. Aktualisierung des Fehlerbehandlungscodes für IronPDF-Ausnahmetypen
  8. IronPDF-Lizenzinitialisierung beim Start hinzufügen

Post-Migrationstests

Überprüfen Sie diese Aspekte nach der Migration:

  • Testen Sie, ob die Qualität der PDF-Ausgabe den Erwartungen entspricht
  • Überprüfen, ob async-Muster korrekt funktionieren
  • Vergleich der Wiedergabetreue mit früheren Ausgaben
  • Testen Sie die korrekte Wiedergabe aller Vorlagenvarianten
  • Validierung der Seiteneinstellungen (Größe, Ausrichtung, Ränder)
  • Installieren Sie Linux-Abhängigkeiten, wenn Sie die Software auf Linux-Servern einsetzen

Die wichtigsten Vorteile der Migration zu IronPDF

Der Wechsel von PDFmyURLzuIronPDFbietet mehrere entscheidende Vorteile:

Absolute Vertraulichkeit: Ihre Dokumente verlassen niemals Ihren Server. Die gesamte Verarbeitung erfolgt lokal, wodurch Bedenken hinsichtlich der Datensicherheit für sensible Inhalte ausgeräumt werden.

Einmalige Kosten: Mit der Option einer unbefristeten Lizenz entfallen wiederkehrende Abonnementgebühren. Keine monatlichen Zahlungen mehr, unabhängig vom Nutzungsvolumen.

Offline-Funktionalität: Funktioniert nach der Ersteinrichtung auch ohne Internetverbindung. Netzwerkausfälle beeinträchtigen die PDF-Erstellung nicht.

Keine Ratenbegrenzung: Verarbeiten Sie unbegrenzt viele Dokumente ohne Drosselungsbedenken.

Geringere Latenz: Kein Netzwerk-Overhead bedeutet schnellere Konvertierungen, insbesondere bei Anwendungen mit hohem Datenaufkommen.

Volle Kontrolle: Sie kontrollieren die Verarbeitungsumgebung, nicht ein Drittanbieterdienst.

Moderne Chromium-Engine: Volle CSS3- und JavaScript-Unterstützung mit derselben Rendering-Engine, die auch den Chrome-Browser antreibt.

Aktive Weiterentwicklung: Da die Verbreitung von .NET 10 und C# 14 bis 2026 zunimmt, gewährleisten die regelmäßigen Updates vonIronPDFdie Kompatibilität mit aktuellen und zukünftigen .NET-Versionen.

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