Wie man von TuesPechkin zu IronPDF in C# migriert
TuesPechkin dient als thread-sicherer Wrapper um die wkhtmltopdf-Bibliothek und hilft .NET-Entwicklern seit Jahren bei der Umwandlung von HTML in PDF. Die zugrundeliegende wkhtmltopdf-Technologie wurde jedoch zuletzt im Jahr 2015 aktualisiert und im Dezember 2022 offiziell eingestellt. Dies führt zu kritischen Einschränkungen in Bezug auf Sicherheit, Stabilität und Rendering, die Entwicklungsteams nicht länger ignorieren können.
Dieser Leitfaden bietet einen vollständigen Migrationspfad von TuesPechkin zu IronPDF, mit Schritt-für-Schritt-Anleitungen, Code-Vergleichen und praktischen Beispielen für professionelle .NET-Entwickler, die diesen Übergang evaluieren.
Warum jetzt von TuesPechkin migrieren
Die Entscheidung, von TuesPechkin zu migrieren, ist für sicherheitsbewusste Entwicklungsteams nicht mehr optional. Die zugrundeliegende wkhtmltopdf-Bibliothek enthält kritische, ungepatchte Sicherheitslücken, die nie behoben werden.
Kritische Sicherheitsschwachstelle: CVE-2022-35583
| Attribut | Wert |
|---|---|
| CVE ID | CVE-2022-35583 |
| Schweregrad | KRITISCH (9.8/10) |
| Attack Vector | Netzwerk |
| Status | Wird NIEMALS gepatcht |
| Betroffen | ALLE TuesPechkin-Versionen |
Die Betreuer von wkhtmltopdf haben ausdrücklich erklärt, dass sie KEINE Sicherheitslücken beheben werden. Jede Anwendung, die TuesPechkin verwendet, ist permanent Angriffen durch Server-Side Request Forgery (SSRF) ausgesetzt.
Wie die Attacke funktioniert
Bei der Verarbeitung von vom Benutzer bereitgestelltem HTML können Angreifer bösartige Inhalte einschleusen:
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
Dies ermöglicht Angreifern den Zugriff auf AWS/Azure/GCP-Metadaten-Endpunkte, den Diebstahl interner API-Daten, Port-Scans interner Netzwerke und die Exfiltration sensibler Konfigurationen.
Die Technologie-Krise
TuesPechkin umhüllt wkhtmltopdf, das Qt WebKit 4.8 verwendet - eine alte Technologie aus der Zeit vor Chrome. Das bedeutet:
- Keine Flexbox-Unterstützung
- Keine CSS-Grid-Unterstützung
- Defekte JavaScript-Ausführung
- Keine ES6+-Unterstützung
Die Stabilitätskrise
Selbst mit dem beworbenen ThreadSafeConverter stürzt TuesPechkin unter hoher Last ab:
// ❌ TuesPechkin- "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
// ❌ TuesPechkin- "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
' ❌ TuesPechkin- "ThreadSafeConverter" still crashes
Dim converter = New TuesPechkin.ThreadSafeConverter(
New TuesPechkin.RemotingToolset(Of PechkinBindings)())
' Under high load, you'll see:
' System.AccessViolationException: Attempted to read or write protected memory
' Process terminated unexpectedly
' Converter hangs indefinitely
IronPDF vs. TuesPechkin: Funktionsvergleich
Das Verständnis der architektonischen Unterschiede hilft technischen Entscheidungsträgern, die Investition in die Migration zu bewerten:
| Feature | TuesPechkin | IronPDF |
|---|---|---|
| Lizenz | Frei (MIT-Lizenz) | Kommerziell |
| Thread-Sicherheit | Erfordert manuelles Management | Native Unterstützung |
| Währung | Begrenzt, kann unter Last abstürzen | Robust, bewältigt hohe Gleichzeitigkeit |
| Entwicklung | Inaktiv, zuletzt aktualisiert 2015 | Aktive, kontinuierliche Verbesserungen |
| Benutzerfreundlichkeit | Komplexe Einrichtung | Benutzerfreundlich mit Anleitungen |
| Dokumentation | Basic | Ausführlich mit Beispielen |
| Sicherheit | ❌ Kritische CVEs | ✅ Keine bekannten Schwachstellen |
| HTML zu PDF | ⚠️ Veraltetes WebKit | ✅ Modernes Chromium |
| CSS3 | ❌ Teilweise | ✅ Unterstützt |
| Flexbox/Grid | ❌ Nicht unterstützt | ✅ Unterstützt |
| JavaScript | ⚠️ Unzuverlässig | ✅ Vollständig ES6+ |
| PDF-Bearbeitung | ❌ Nicht verfügbar | ✅ Vollständig |
| Digitale Signaturen | ❌ Nicht verfügbar | ✅ Vollständig |
| PDF/A-Konformität | ❌ Nicht verfügbar | ✅ Vollständig |
| Formularausfüllen | ❌ Nicht verfügbar | ✅ Vollständig |
| Wasserzeichen | ❌ Nicht verfügbar | ✅ Vollständig |
| Merge/Split | ❌ Nicht verfügbar | ✅ Vollständig |
Schnellstart: TuesPechkin zu IronPDF Migration
Mit diesen grundlegenden Schritten kann die Migration sofort beginnen.
Schritt 1: Ersetzen von NuGet-Paketen
Entfernen Sie alle TuesPechkin-Pakete:
# Remove TuesPechkinand all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
# Remove TuesPechkinand all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
IronPDF installieren:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Schritt 2: Entfernen nativer Binärdateien
Löschen Sie diese Dateien und Ordner aus Ihrem Projekt:
wkhtmltox.dllwkhtmltopdf.exe- Alle
wkhtmlto*Dateien TuesPechkin.WkhtmltoxOrdner
Schritt 3: Namespaces aktualisieren
Ersetzen Sie die TuesPechkin-Namensräume durch den IronPDF-Namensraum:
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
' Before (TuesPechkin)
Imports TuesPechkin
Imports TuesPechkin.Wkhtmltox.Win64
' After (IronPDF)
Imports IronPdf
Schritt 4: 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 HTML in PDF
Der häufigste Anwendungsfall verdeutlicht den Komplexitätsunterschied zwischen diesen .NET-PDF-Bibliotheken.
TuesPechkin-Ansatz:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {New ObjectSettings With {.HtmlText = html}}
})
File.WriteAllBytes("output.pdf", pdfBytes)
End Sub
End Class
IronPDF-Ansatz:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
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 Program
{
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 Program
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
Die TuesPechkin-Version erfordert die Erstellung eines StandardConverter mit einer komplexen Initialisierungskette: RemotingToolset, Win64EmbeddedDeployment und TempFolderDeployment. Sie müssen auch manuell Bytes in eine Datei schreiben.
Mit IronPDF entfällt diese Zeremonie vollständig. Erstelle ein ChromePdfRenderer, rendere HTML und speichere. Der Code ist selbstdokumentierend und erfordert keine Kenntnisse über Deployment-Toolsets oder plattformspezifisches Binärmanagement.
Für fortgeschrittene HTML-zu-PDF-Szenarien siehe den HTML-zu-PDF-Konvertierungsleitfaden.
Konvertierung von URLs zu PDF
Die URL-zu-PDF-Konvertierung weist ähnliche Komplexitätsunterschiede auf.
TuesPechkin-Ansatz:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {
New ObjectSettings With {
.PageUrl = "https://www.example.com"
}
}
})
File.WriteAllBytes("webpage.pdf", pdfBytes)
End Sub
End Class
IronPDF-Ansatz:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
TuesPechkin verwendet ObjectSettings.PageUrl verschachtelt in HtmlToPdfDocument.IronPDF bietet eine spezielle RenderUrlAsPdf Methode, die die Absicht klar zum Ausdruck bringt.
In der URL zur PDF-Dokumentation finden Sie Informationen zur Authentifizierung und zu benutzerdefinierten Kopfzeilenoptionen.
Benutzerdefinierte Rendering-Einstellungen
Seitenausrichtung, Papiergröße und Ränder erfordern unterschiedliche Konfigurationsansätze.
TuesPechkin-Ansatz:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Module Program
Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim document = New HtmlToPdfDocument With {
.GlobalSettings = New GlobalSettings With {
.Orientation = GlobalSettings.PdfOrientation.Landscape,
.PaperSize = GlobalSettings.PdfPaperSize.A4,
.Margins = New MarginSettings With {.Unit = Unit.Millimeters, .Top = 10, .Bottom = 10}
},
.Objects = {
New ObjectSettings With {.HtmlText = html}
}
}
Dim pdfBytes As Byte() = converter.Convert(document)
File.WriteAllBytes("custom.pdf", pdfBytes)
End Sub
End Module
IronPDF-Ansatz:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom.pdf")
End Sub
End Module
TuesPechkin unterteilt die Einstellungen in GlobalSettings für dokumentweite Optionen und ObjectSettings für Inhaltsoptionen.IronPDF fasst alles in RenderingOptions mit klaren, leicht auffindbaren Eigenschaftsnamen zusammen.
TuesPechkin API zu IronPDFMapping Referenz
Dieses Mapping beschleunigt die Migration, indem es direkte API-Entsprechungen aufzeigt:
| TuesPechkin | IronPDF |
|---|---|
StandardConverter |
ChromePdfRenderer |
ThreadSafeConverter |
ChromePdfRenderer |
HtmlToPdfDocument |
Parameter der Methode |
GlobalSettings |
RenderingOptions |
ObjectSettings.HtmlText |
RenderHtmlAsPdf(html) |
ObjectSettings.PageUrl |
RenderUrlAsPdf(url) |
GlobalSettings.PaperSize |
RenderingOptions.PaperSize |
GlobalSettings.Orientation |
RenderingOptions.PaperOrientation |
MarginSettings |
MarginTop, MarginBottom, etc. |
[page] Platzhalter |
{page} Platzhalter |
[toPage] Platzhalter |
{total-pages} Platzhalter |
RemotingToolset |
Nicht erforderlich |
Win64EmbeddedDeployment |
Nicht erforderlich |
TempFolderDeployment |
Nicht erforderlich |
Gängige Migrationsprobleme und Lösungen
Aufgabe 1: Komplexer Initialisierungscode
Problem: TuesPechkin erfordert ein komplexes Konverter-Setup mit Bereitstellungs-Toolsets.
Lösung:IronPDF ist einfach:
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
' Before (TuesPechkin)
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
' After (IronPDF)
Dim renderer = New ChromePdfRenderer()
' That's it!
Ausgabe 2: Abstürze der Thread-Sicherheit
Problem: TuesPechkins ThreadSafeConverter stürzt auch unter hoher Last mit AccessViolationException weiterhin ab.
Lösung:IronPDF verfügt über eine systemeigene Thread-Sicherheit - eine spezielle Konfiguration ist nicht erforderlich:
//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
'IronPDF is inherently thread-safe
Dim renderer As New ChromePdfRenderer()
' Use from any thread without crashes
Ausgabe 3: Seitenzahl-Platzhalter-Syntax
Problem: TuesPechkin verwendet die Platzhalter [page] und [toPage].
Lösung: Aktualisierung der Platzhalter-Syntax von IronPDF:
// Before (TuesPechkin)
"Page [page] of [toPage]"
// After (IronPDF)
"Page {page} of {total-pages}"
// Before (TuesPechkin)
"Page [page] of [toPage]"
// After (IronPDF)
"Page {page} of {total-pages}"
Ausgabe 4: CSS-Layout kaputt
Problem: Flexbox- und Grid-Layouts funktionieren in TuesPechkin nicht, weil wkhtmltopdf Qt WebKit 4.8 verwendet.
Lösung: Verwenden Sie korrektes modernes CSS mit IronPDF:
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
' Remove table-based workarounds, use modern CSS
Dim html As String = "
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Works correctly with Chromium!
Ausgabe 5: Native Binärverwaltung
Problem: TuesPechkin erfordert plattformspezifische wkhtmltopdf-Binärdateien und eine Pfadkonfiguration.
Lösung:IronPDF wickelt alle Abhängigkeiten über NuGet ab - es müssen keine nativen Binärdateien verwaltet werden:
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
TuesPechkin Checkliste für die Migration
Vor der Migration anfallende Aufgaben
Überprüfen Sie Ihre Codebasis, um alle TuesPechkin-Verwendungen zu identifizieren:
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
Dokumentieren Sie die aktuellen GlobalSettings Konfigurationen (Papierformat, Ausrichtung, Ränder). Dokument ObjectSettings Konfigurationen (HTML-Inhalt, URLs). Identifizieren Sie Kopf-/Fußzeilen-Implementierungen für die Konvertierung. Lokalisieren Sie alle wkhtmltopdf-Binärdateien zur Entfernung.
Aufgaben der Code-Aktualisierung
- TuesPechkinNuGet-Pakete entfernen
- Native wkhtmltopdf-Binärdateien entfernen
- IronPDF NuGet-Paket installieren
- Aktualisieren Sie die Anweisungen von
TuesPechkinbisIronPdf - Initialisierung des Lizenzschlüssels beim Start hinzufügen
- Ersetzen Sie die Konverter durch
ChromePdfRenderer - Konvertiere
GlobalSettingsinRenderingOptions - Konvertiere
ObjectSettingsin Methodenparameter - Aktualisierung der Randkonfiguration für einzelne Eigenschaften
- Aktualisieren Sie die Header-/Footer-Syntax auf HTML-basiert
HtmlHeaderFooter - Syntax für Seitenplatzhalter korrigieren (
[page]→{page}) - Entfernen Sie den gesamten Implementierungs-/Toolset-Code
Post-Migrationstests
Überprüfen Sie diese Aspekte nach der Migration:
- Alle Unit-Tests ausführen
- Testen Sie thread-sichere Szenarien (IronPDF beherrscht Multithreading ohne Abstürze)
- Vergleich der PDF-Ausgabequalität (Chromium rendert genauer)
- Überprüfen der CSS-Wiedergabe (Flexbox und Grid funktionieren jetzt)
- Testen Sie die Ausführung von JavaScript (ES6+ wird jetzt unterstützt)
- Testen Sie das Rendering von Kopf- und Fußzeilen
- Batch-Operationen für Leistungstests
- Sicherheitsüberprüfung, um sicherzustellen, dass keine wkhtmltopdf-Binärdateien vorhanden sind
Die wichtigsten Vorteile der Migration zu IronPDF
Der Wechsel von TuesPechkin zu IronPDF bietet mehrere entscheidende Vorteile:
Sicherheit: CVE-2022-35583 und andere wkhtmltopdf-Schwachstellen wurden behoben. Die Chromium-Engine von IronPDF erhält regelmäßig Sicherheitsupdates.
Native Thread Safety: Keine komplexen ThreadSafeConverter Konfigurationen mehr. Keine AccessViolationException-Abstürze mehr unter Last.IronPDF behandelt die Gleichzeitigkeit automatisch.
Moderne Rendering-Engine: Volle Unterstützung für CSS3, Flexbox, Grid und ES6+ JavaScript . Ihre PDFs werden genau so wiedergegeben, wie der Inhalt in modernen Browsern erscheint.
Vereinfachte Bereitstellung: Keine plattformspezifischen Binärdateien zu verwalten. Keine RemotingToolset, Win64EmbeddedDeployment, oder TempFolderDeployment Zeremonie. Installieren Sie einfach das NuGet-Paket.
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.
Erweiterte Funktionen: TuesPechkin konvertiert ausschließlich HTML in PDF.IronPDF ermöglicht die Bearbeitung von PDF-Dateien, digitale Signaturen, PDF/A-Konformität, das Ausfüllen von Formularen, Wasserzeichen sowie das Zusammenführen und Teilen von Dateien.

