Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Umstellung von Haukcode.DinkToPdf auf IronPDF

Migrieren von Haukcode.DinkToPdf zu IronPDF: Ein kompletter C#-Entwicklerleitfaden

Haukcode.DinkToPdf ist ein Fork der beliebten DinkToPdf-Bibliothek, die die wkhtmltopdf-Binärdatei umhüllt, um HTML-zu-PDF-Konvertierungsfunktionen für .NET-Anwendungen bereitzustellen. Während Haukcode.DinkToPdf die Kompatibilität mit .NET Core beibehalten hat, nachdem das ursprüngliche DinkToPdf-Projekt stagnierte, erbt es kritische Sicherheitslücken von seiner Upstream-Abhängigkeit. Das zugrundeliegende wkhtmltopdf-Projekt wurde im Januar 2023 archiviert, was bedeutet, dass diese Sicherheitslücken nie gepatcht werden.

Dieser Leitfaden bietet einen vollständigen Migrationspfad von Haukcode.DinkToPdf zu IronPDF, mit Schritt-für-Schritt-Anleitungen, Code-Vergleichen und praktischen Beispielen für professionelle .NET-Entwickler, die Sicherheitsrisiken aus ihren PDF-Generierungs-Workflows eliminieren müssen.

Kritische Sicherheitswarnung: CVE-2022-35583

Haukcode.DinkToPdf erbt eine kritische Sicherheitsschwachstelle von wkhtmltopdf, die nicht behoben werden kann:

CVE-2022-35583 - Kritische SSRF-Schwachstelle (CVSS 9.8)

Die wkhtmltopdf-Bibliothek (und alle Wrapper einschließlich Haukcode.DinkToPdf) ist anfällig für Server-Side Request Forgery (SSRF):

  • Angriffsvektor: Bösartige HTML-Inhalte können den Server dazu bringen, interne Ressourcen abzurufen
  • AWS-Metadaten-Angriff: Kann auf http://169.254.169.254 zugreifen, um AWS-Anmeldedaten zu stehlen
  • Interner Netzwerkzugriff: Kann interne Dienste scannen und darauf zugreifen
  • Lokale Dateieinbindung: Kann lokale Dateien über das file://-Protokoll lesen
  • Auswirkung: Komplette Infrastrukturübernahme möglich

Es gibt KEINEN Fix für diese Schwachstelle, da wkhtmltopdf im Jahr 2023 aufgegeben und archiviert wurde. Die letzte Veröffentlichung war Version 0.12.6 im Jahr 2020.

IronPDFvs. Haukcode.DinkToPdf: Funktionsvergleich

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

Aspekt Haukcode.DinkToPdf IronPDF
Unterliegende Engine wkhtmltopdf (Qt WebKit ~2015) Chromium (regelmäßig aktualisiert)
Sicherheitsstatus CVE-2022-35583 (KRITISCH, nicht behebbar) Aktiv gepatcht
Projektstatus Gabelung eines aufgegebenen Projekts Aktiv entwickelt
HTML5/CSS3 Beschränkt Volle Unterstützung
JavaScript Begrenzt, unsicher Vollständige V8-Engine
Native Binärdateien Erforderlich (plattformspezifisch) In sich geschlossen
Thread-Sicherheit Erfordert Singleton-Muster Thread-sicher durch Design
Unterstützung Nur für die Gemeinschaft Professionelle Unterstützung
Aktualisierungen Keine erwartet Regelmäßige Veröffentlichungen
Lizenz MIT (kostenlos) Kommerziell mit kostenloser Testversion

Schnellstart: Haukcode.DinkToPdf zuIronPDFMigration

Mit diesen grundlegenden Schritten kann die Migration sofort beginnen.

Schritt 1: Entfernen von DinkToPdf und nativen Binärdateien

Haukcode.DinkToPdf NuGet-Pakete entfernen:

# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
SHELL

Löschen Sie native Binärdateien aus Ihrem Projekt:

  • libwkhtmltox.dll (Windows)
  • libwkhtmltox.so (Linux)
  • libwkhtmltox.dylib (macOS)

Schritt 2:IronPDFinstallieren

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

Schritt 3: Namespaces aktualisieren

Ersetzen Sie die Namensräume von DinkToPdf durch IronPdf:

// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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

Basiskonvertierung von HTML in PDF

Der grundlegendste Vorgang offenbart den Komplexitätsunterschied zwischen diesen .NET-PDF-Bibliotheken.

Haukcode.DinkToPdf Ansatz:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF-Ansatz:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");

        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf erfordert das Erstellen eines SynchronizedConvertermit PdfTools, das Konstruieren eines HtmlToPdfDocumentmit verschachtelten GlobaleEinstellungenund Objects, das Hinzufügen eines ObjektEinstellungenmit HtmlContent, den Aufruf von converter.Convert(), um Rohbytes zu erhalten, und manuelles Schreiben in eine Datei mit File.WriteAllBytes().

IronPDF vereinfacht dies auf drei Zeilen: Erstellen Sie einen ChromePdfRenderer, rufen Sie RenderHtmlAsPdf() auf, und verwenden Sie die eingebaute Methode SaveAs().

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 Musterunterschiede auf.

Haukcode.DinkToPdf Ansatz:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    Page = "https://www.example.com",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    Page = "https://www.example.com",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf verwendet das gleiche Dokumentkonstruktionsmuster mit ObjectSettings.Page für URLs.IronPDFbietet eine eigene 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 Seiteneinstellungen

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

Haukcode.DinkToPdf Ansatz:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Landscape,
                PaperSize = PaperKind.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.pdf", pdf);
    }
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Landscape,
                PaperSize = PaperKind.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF-Ansatz:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");

        pdf.SaveAs("landscape.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");

        pdf.SaveAs("landscape.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf verschachtelt Einstellungen innerhalb von GlobaleEinstellungenmit einem separaten MarginSettings Objekt.IronPDFbietet direkte RenderingOptions-Eigenschaften mit eindeutigen Namen wie PaperSize, PaperOrientation und individuelle Randeigenschaften.

Haukcode.DinkToPdf API zuIronPDFMapping Referenz

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

Konverter-Klassen-Zuordnung

Haukcode.DinkToPdf IronPDF Notizen
SynchronizedConverter ChromePdfRenderer Thread-sicher, kein Singleton erforderlich
BasicConverter ChromePdfRenderer Dieselbe Klasse behandelt beide
PdfTools Nicht anwendbar Nicht erforderlich
IConverter Nicht anwendbar Renderer direkt verwenden

Zuordnung der Dokumentenkonfiguration

Haukcode.DinkToPdf IronPDF Notizen
HtmlToPdfDocument Methodenaufruf Verwenden Sie RenderHtmlAsPdf() direkt
GlobaleEinstellungen RenderingOptions Vor dem Rendern einstellen
ObjektEinstellungen RenderingOptions Kombiniert in einem
converter.Convert(doc) renderer.RenderHtmlAsPdf(html) Rückgabe PdfDocument

GlobalSettings Eigenschaftszuordnung

GlobalSettings-Eigenschaft IronPDFEigenschaft Notizen
Farbmodus RenderingOptions.GrayScale Boolean, setze true für Graustufen
Ausrichtung RenderingOptions.PaperOrientation Porträt oder Landschaft
Papiergröße RenderingOptions.PaperSize Verwenden Sie PdfPaperSize enum
Margins.Top RenderingOptions.MarginTop In Millimetern
Margins.Bottom RenderingOptions.MarginBottom In Millimetern
Margins.Left RenderingOptions.MarginLeft In Millimetern
Margins.Right RenderingOptions.MarginRight In Millimetern

ObjectSettings Eigenschaftszuordnung

ObjectSettings-Eigenschaft IronPDF-Äquivalent Notizen
Html-Inhalt Erster Parameter von RenderHtmlAsPdf() Direkter Parameter
Seite (URL) renderer.RenderUrlAsPdf(url) Getrennte Methode
HeaderSettings.Right = "[Seite]" TextHeader.RightText = "{Seite}" Unterschiedliche Platzhalter-Syntax

Migration der Platzhalter-Syntax

Haukcode.DinkToPdf IronPDF Notizen
[Seite] {Seite} Aktuelle Seitenzahl
[bisSeite] {Gesamtseiten} Gesamtseitenzahl
[Datum] {Datum} Aktuelles Datum

Gängige Migrationsprobleme und Lösungen

Ausgabe 1: Singleton-Anforderung

Haukcode.DinkToPdf: Benötigt SynchronizedConverterals Singleton aufgrund von Thread-Sicherheitsproblemen mit dem nativen wkhtmltopdf-Binary.

Lösung: Der ChromePdfRenderervonIronPDFist vom Design her thread-sicher - kein Singleton erforderlich:

// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ausgabe 2: Native Binärabhängigkeiten

Haukcode.DinkToPdf: Erfordert plattformspezifische native Bibliotheken (libwkhtmltox.dll/so/dylib).

Lösung:IronPDFist eine eigenständige Software, die keine Abhängigkeiten von nativen Binärdateien aufweist. Löschen Sie diese Dateien nach der Migration:

  • libwkhtmltox.dll (Windows)
  • libwkhtmltox.so (Linux)
  • libwkhtmltox.dylib (macOS)

Ausgabe 3: Unterschiede im Rückgabetyp

Haukcode.DinkToPdf: converter.Convert() gibt direkt Byte[] zurück.

Lösung:IronPDFgibt ein PdfDocument-Objekt mit mehreren Ausgabeoptionen zurück:

var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData;  // Get bytes
pdf.SaveAs("output.pdf");       // Or save directly
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData;  // Get bytes
pdf.SaveAs("output.pdf");       // Or save directly
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ausgabe 4: Syntax für Kopf-/Fußzeilen-Platzhalter

Haukcode.DinkToPdf: Verwendet Syntax in eckigen Klammern wie [Seite] und [toPage].

Lösung: Aktualisierung der Platzhalter für geschweifte Klammern in IronPDF:

// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}"
};
// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}"
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf Migration Checkliste

Vor der Migration anfallende Aufgaben

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

# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .

# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .

# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .

# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .

# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .

# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .

# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
SHELL

Dokumentieren Sie aktuelle GlobaleEinstellungenund ObjektEinstellungenKonfigurationen. Identifizieren Sie jeglichen Code zum Laden nativer Bibliotheken, der entfernt werden kann.

Aufgaben der Code-Aktualisierung

  1. DinkToPdf NuGet-Pakete entfernen
  2. IronPdf NuGet-Paket installieren
  3. Aktualisierung der Namespace-Importe von DinkToPdf zu IronPdf
  4. Ersetzen Sie SynchronizedConvertermit ChromePdfRenderer
  5. HtmlToPdfDocument-Muster in direkte Methodenaufrufe umwandeln
  6. GlobaleEinstellungenin RenderingOptionsumwandeln
  7. ObjektEinstellungenin RenderingOptionsumwandeln
  8. Aktualisierung der Platzhalter-Syntax ([Seite]{Seite}, [bisSeite]{Gesamtseiten})
  9. IronPDF-Lizenzinitialisierung beim Start hinzufügen

Infrastruktur-Aufräumarbeiten

  1. Native Binärdateien löschen (libwkhtmltox.*)
  2. Code zum Laden nativer Bibliotheken entfernen
  3. CustomAssemblyLoadContext entfernen, falls vorhanden
  4. Aktualisierung der Dependency Injection (Singleton nicht mehr erforderlich)
  5. Plattformerkennungscode für native Binärdateien entfernen

Post-Migrationstests

Überprüfen Sie diese Aspekte nach der Migration:

  • Test der Konvertierung von HTML in PDF
  • Test der URL-zu-PDF-Konvertierung
  • Überprüfen der Seiteneinstellungen (Größe, Ausrichtung, Ränder)
  • Überprüfen von Kopf- und Fußzeilen mit Platzhaltern
  • Test mit aktuellen HTML-Vorlagen
  • Leistungstest unter Last

Die wichtigsten Vorteile der Migration zu IronPDF

Der Wechsel von Haukcode.DinkToPdf zuIronPDFbietet mehrere entscheidende Vorteile:

Sicherheit: Eliminiert CVE-2022-35583 (SSRF) und andere wkhtmltopdf-Schwachstellen, die nie gepatcht werden.

Moderne Rendering Engine: Verwendet aktiv aktualisiertes Chromium anstelle des aufgegebenen Qt WebKit von 2015. Volle Unterstützung für HTML5, CSS3 und JavaScript.

Keine nativen Binärdateien: In sich geschlossene Bibliothek ohne plattformspezifische DLLs, die verwaltet werden müssen. Vereinfacht den Einsatz unter Windows, Linux und macOS.

Thread Safety: Keine Singleton-Anforderung - verwenden Sie ChromePdfRendererfrei in jedem Muster, einschließlich der Instanziierung pro Anfrage.

Einfachere API: Direkte Methodenaufrufe (RenderHtmlAsPdf(), RenderUrlAsPdf()) anstelle der komplexen Konstruktion von Dokumentenobjekten.

Aktive Entwicklung: 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.

Abschluss

Haukcode.DinkToPdf diente als Fortsetzung des DinkToPdf-Projekts, wobei die .NET Core-Kompatibilität für die wkhtmltopdf-basierte PDF-Erzeugung beibehalten wurde. Die zugrundeliegende wkhtmltopdf-Binärdatei wurde jedoch im Jahr 2023 archiviert, wodurch kritische Sicherheitslücken wie CVE-2022-35583 dauerhaft ungepatched blieben. Jeden Tag verwenden Anwendungen weiterhin Haukcode.DinkToPdf, die Infrastruktur bleibt durch SSRF-Angriffe gefährdet.

IronPDF bietet eine moderne, sichere Alternative mit einer Chromium-Rendering-Engine, die die aktuellen Webstandards unterstützt. Der Migrationspfad ist einfach: Entfernen Sie die DinkToPdf-Pakete und die nativen Binärdateien, ersetzen Sie die Dokumentenerstellung durch direkte Rendering-Methoden und aktualisieren Sie die Syntax der Platzhalter.

Beginnen Sie Ihre Migration noch heute mit einer kostenlosen Testversion von IronPDF und beseitigen Sie die Sicherheitslücken, die mit wkhtmltopdf-basierten Lösungen verbunden sind.

Eine umfassende Anleitung zur Implementierung finden Sie in der IronPDF-Dokumentation und den Tutorials.

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