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 PDFmyURL zu IronPDF, mit Schritt-für-Schritt-Anleitungen, Code-Vergleichen und praktischen Beispielen für professionelle .NET-Entwickler, die diesen Übergang evaluieren.
Warum von PDFmyURL migrieren
Das Cloud-Verarbeitungsmodell von PDFmyURL bringt 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.
IronPDF vs. 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: PDFmyURL zu IronPDF Migration
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
IronPDF installieren:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Schritt 2: Namespaces aktualisieren
Ersetzen Sie die Namensräume von PDFmyURL durch 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;
' Before: PDFmyURL
Imports PdfMyUrl
Imports Pdfcrowd
' After: IronPDF
Imports IronPdf
Imports IronPdf.Rendering
Schritt 3: Lizenz initialisieren
Hinzufügen der Lizenzinitialisierung beim Start der Anwendung:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Beispiele für die Code-Migration
Konvertierung von URLs zu PDF
Die URL-zu-PDF-Operation demonstriert die grundlegenden API-Unterschiede zwischen PDFmyURL und 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);
}
}
}
Imports System
Imports Pdfcrowd
Class Example
Shared Sub Main()
Try
Dim client As New HtmlToPdfClient("username", "apikey")
client.convertUrlToFile("https://example.com", "output.pdf")
Catch why As [Error]
Console.WriteLine("Error: " & why.ToString())
End Try
End Sub
End Class
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");
}
}
Imports IronPdf
Imports System
Class Example
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("output.pdf")
End Sub
End Class
Für jede Konvertierungsanfrage muss mit PDFmyURL ein HtmlToPdfClient mit Benutzername und API-Schlüssel erstellt werden. Anschließend muss convertUrlToFile() mit der URL und dem Ausgabepfad aufgerufen werden. Der gesamte Vorgang muss in einen try-catch-Block für den benutzerdefinierten Typ Error von PDFmyURL eingeschlossen werden.
IronPDF vereinfacht dies auf drei Zeilen: Erstellen Sie ein ChromePdfRenderer, rufen Sie RenderUrlAsPdf() auf und verwenden Sie die integrierte 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);
}
}
}
Imports System
Imports Pdfcrowd
Class Example
Shared Sub Main()
Try
Dim client = New HtmlToPdfClient("username", "apikey")
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
client.convertStringToFile(html, "output.pdf")
Catch why As Error
Console.WriteLine("Error: " & why.ToString())
End Try
End Sub
End Class
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");
}
}
Imports IronPdf
Imports System
Class Example
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
PDFmyURL verwendet convertStringToFile(), wodurch der HTML-Inhalt zur Verarbeitung an externe Server gesendet wird. IronPDF's RenderHtmlAsPdf() verarbeitet alles lokal mit 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);
}
}
}
Imports System
Imports Pdfcrowd
Class Example
Shared Sub Main()
Try
Dim client = New HtmlToPdfClient("username", "apikey")
client.setPageSize("A4")
client.setOrientation("landscape")
client.setMarginTop("10mm")
client.convertFileToFile("input.html", "output.pdf")
Catch why As Error
Console.WriteLine("Error: " & why.ToString())
End Try
End Sub
End Class
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");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System
Class Example
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 10
Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
pdf.SaveAs("output.pdf")
End Sub
End Class
PDFmyURL verwendet Setter-Methoden mit String-Parametern wie setPageSize("A4") und setMarginTop("10mm").IronPDF bietet stark typisierte Eigenschaften über RenderingOptions mit Aufzählungen wie PdfPaperSize.A4 und ganzzahligen Werten für Ränder in Millimetern.
PDFmyURLAPI zu IronPDF Mapping Referenz
Dieses Mapping beschleunigt die Migration, indem es direkte API-Entsprechungen aufzeigt:
Kern-Klassen
| PDFmyURL | IronPDF |
|---|---|
HtmlToPdfClient |
ChromePdfRenderer |
PdfMyUrlClient |
ChromePdfRenderer |
| API-Antwort-Objekt | PdfDocument |
Methoden
| PDFmyURL | IronPDF |
|---|---|
client.convertUrlToFile(url, file) |
renderer.RenderUrlAsPdf(url).SaveAs(file) |
client.convertStringToFile(html, file) |
renderer.RenderHtmlAsPdf(html).SaveAs(file) |
client.convertFileToFile(input, output) |
renderer.RenderHtmlFileAsPdf(input).SaveAs(output) |
response.GetBytes() |
pdf.BinaryData |
response.GetStream() |
pdf.Stream |
Konfigurationsoptionen
| PDFmyURL(setXxx-Methoden) | IronPDF(RenderingOptions) |
|---|---|
setPageSize("A4") |
.PaperSize = PdfPaperSize.A4 |
setPageSize("Letter") |
.PaperSize = PdfPaperSize.Letter |
setOrientation("landscape") |
.PaperOrientation = PdfPaperOrientation.Landscape |
setOrientation("portrait") |
.PaperOrientation = PdfPaperOrientation.Portrait |
setMarginTop("10mm") |
.MarginTop = 10 |
setMarginBottom("10mm") |
.MarginBottom = 10 |
setMarginLeft("10mm") |
.MarginLeft = 10 |
setMarginRight("10mm") |
.MarginRight = 10 |
setHeaderHtml(html) |
.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = html } |
setFooterHtml(html) |
.HtmlFooter = new HtmlHeaderFooter { HtmlFragment = html } |
setJavaScriptDelay(500) |
.RenderDelay = 500 |
setDisableJavaScript(true) |
.EnableJavaScript = false |
setUsePrintMedia(true) |
.CssMediaType = PdfCssMediaType.Print |
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
Imports IronPdf
' PDFmyURL: API key per request
Dim client As New HtmlToPdfClient("username", "apikey")
' IronPDF: One-time license at startup
License.LicenseKey = "YOUR-LICENSE-KEY"
' Set once, typically in Program.vb or Startup.vb
Aufgabe 2: Platzhalter-Syntax in Kopf-/Fußzeilen
PDFmyURL: Verwendet die Platzhalter {page_number} und {total_pages}.
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}"
' PDFmyURL: "Page {page_number} of {total_pages}"
' IronPDF: "Page {page} of {total-pages}"
Ausgabe 3: Async-Muster
PDFmyURL: Erfordert async/await-Muster.
Lösung:IronPDF ist 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));
Imports System.Threading.Tasks
' PDFmyURL: Native async
Dim response = Await client.ConvertUrlAsync(url)
' IronPDF: Sync by default, wrap for async
Dim pdf = Await Task.Run(Function() renderer.RenderUrlAsPdf(url))
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) { ... }
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;
' PDFmyURL: Setter methods
client.setPageSize("A4")
client.setOrientation("landscape")
' IronPDF: Properties with enums
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
PDFmyURL-Migrations-Checkliste
Vor der Migration anfallende Aufgaben
Überprüfen Sie Ihre Codebasis, um die Verwendung von PDFmyURL zu 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" .
Dokumentieren Sie die aktuell verwendeten Konfigurationsoptionen. Planen Sie die Speicherung von Lizenzschlüsseln mithilfe von Umgebungsvariablen.
Aufgaben der Code-Aktualisierung
- PDFmyURL/Pdfcrowd NuGet-Pakete entfernen 2.IronPDF NuGet-Paket installieren
- Aktualisieren aller Namensraumimporte
- Ersetzen der API-Schlüssel-Authentifizierung durch IronPDF-Lizenzschlüssel
- Setter-Methoden in RenderingOptions-Eigenschaften umwandeln
- Aktualisieren Sie die Platzhaltersyntax in Kopf- und Fußzeilen (
{page_number}→{page},{total_pages}→{total-pages}) - Aktualisierung des Fehlerbehandlungscodes für IronPDF-Ausnahmetypen
- 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 PDFmyURL zu IronPDF bietet 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 von IronPDF die Kompatibilität mit aktuellen und zukünftigen .NET Versionen.

