Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

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" />
HTML

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
$vbLabelText   $csharpLabel

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
SHELL

IronPDF installieren:

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

Schritt 2: Entfernen nativer Binärdateien

Löschen Sie diese Dateien und Ordner aus Ihrem Projekt:

  • wkhtmltox.dll
  • wkhtmltopdf.exe
  • Alle wkhtmlto* Dateien
  • TuesPechkin.Wkhtmltox Ordner

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
$vbLabelText   $csharpLabel

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

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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!
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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

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!
$vbLabelText   $csharpLabel

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
SHELL

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" .
SHELL

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

  1. TuesPechkinNuGet-Pakete entfernen
  2. Native wkhtmltopdf-Binärdateien entfernen
  3. IronPDF NuGet-Paket installieren
  4. Aktualisieren Sie die Anweisungen von TuesPechkin bis IronPdf
  5. Initialisierung des Lizenzschlüssels beim Start hinzufügen
  6. Ersetzen Sie die Konverter durch ChromePdfRenderer
  7. Konvertiere GlobalSettings in RenderingOptions
  8. Konvertiere ObjectSettings in Methodenparameter
  9. Aktualisierung der Randkonfiguration für einzelne Eigenschaften
  10. Aktualisieren Sie die Header-/Footer-Syntax auf HTML-basiert HtmlHeaderFooter
  11. Syntax für Seitenplatzhalter korrigieren ([page]{page})
  12. 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.

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

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an