IRONSOFTWAREHOME
VIDEOS

IronPDF 2021: Chrome Rendering Engine EAP – Ein Game Changer für die PDF-Erstellung!

Curtis Chau
Curtis Chau
Updated: 19. Juli 2026

DinkToPdf umhüllt wkhtmltopdf und erbt alle seine Sicherheitslücken und technischen Einschränkungen. Das Verständnis dieser Aspekte ist entscheidend für die Beurteilung der Dringlichkeit der Migration.

Kritische Sicherheitsprobleme

DinkToPdf übernimmt ungepatchte Sicherheitshinweise von wkhtmltopdf:

  1. CVE-2022-35583 (SSRF): A Server-Side Request Forgery advisory against wkhtmltopdf 0.12.6 (CVSS 9.8 in NVD; vom Upstream-Projekt wird dies als ein Anwendungseingabe-Sanitierungsproblem und nicht als Bibliotheksbug betrachtet). Auf jeden Fall wird es nicht gepatcht.
  2. Archiviertes Projekt: Das wkhtmltopdf/wkhtmltopdf-Repository wurde am 2. Januar 2023 archiviert und die gesamte wkhtmltopdf GitHub-Organisation wurde am 10. Juli 2024 archiviert.
  3. Keine zukünftigen Sicherheitspatches: Bekannte oder zukünftige Schwachstellen werden nicht in den Upstreams behoben.

Technische Probleme

ProblemAuswirkungen
Thread-SicherheitBasicConverter ist nur single-threaded; SynchronizedConverter serialisiert Aufrufe und kann bei Belastung weiterhin zu nativen Abstürzen führen
Native BinärdateienKomplexe Bereitstellung mit plattformspezifischen libwkhtmltox-Binärdateien
CSS-EinschränkungenÄlterer QtWebKit-Fork - keine Unterstützung für moderne Flexbox/Grid-Layouts
JavaScriptInkonsistente Ausführung, Zeitüberschreitungen
RenderingVeraltetes QtWebKit-basiertes Engine (wkhtmltopdf 0.12.6, letzte Version Juni 2020)
WartungDinkToPdf1.0.8 letzte Version am 18. April 2017 auf NuGet

Architektur-Vergleich

AspektDinkToPdfIronPDF
SicherheitCVE-2022-35583 (SSRF), ungepatcht / umstritten im UpstreamKeine bekannten kritischen CVEs
Rendering EngineÄlterer QtWebKit-Abspaltung (wkhtmltopdf 0.12.6)Modernes Chromium
Thread-SicherheitSynchronizedConverter serialisiert Aufrufe; native-side crashes reported under loadThread-sicher durch Design
Native AbhängigkeitenPlattformspezifische libwkhtmltox-BinärdateienVerwaltetes NuGet-Paket
CSS-UnterstützungKein modernes Flexbox/GridVollständig CSS3
JavaScriptBegrenzt, inkonsistentUnterstützt
WartungDinkToPdfletzte Version April 2017; wkhtmltopdf Organisation archiviert Juli 2024Aktiv gepflegt

Funktionsvergleich

FeatureDinkToPdfIronPDF
HTML zu PDF✅(veralteter Motor)✅(Chromium)
URL zu PDF✅✅
Benutzerdefinierte Ränder✅✅
Kopf-/Fußzeilen✅(eingeschränkt)✅(vollständiges HTML)
CSS3❌Eingeschränkt✅Vollständig
Flexbox/Grid❌✅
JavaScript⚠ Eingeschränkt✅Vollständig
PDF-Manipulation❌✅
Ausfüllen von Formularen❌✅
Digitale Signaturen❌✅
Verschlüsselung❌✅
Wasserzeichen❌✅
Zusammenführen/Spalten❌✅

Vorbereitung auf die Migration

Voraussetzungen

Stellen Sie sicher, dass Ihre Umgebung diese Anforderungen erfüllt:

  • .NET Framework 4.6.2+, .NET Core 3.1+, or .NET 5/6/7/8/9/10
  • Visual Studio 2019+ oder VS Code mit C#-Erweiterung
  • NuGet Package Manager Zugang
  • IronPDF-Lizenzschlüssel (kostenlose Testversion erhältlich unter ironpdf.com)

Überprüfen Sie die Verwendung von DinkToPdf

Führen Sie diese Befehle in Ihrem Lösungsverzeichnis aus, um alle DinkToPdf-Referenzen zu identifizieren:

# Find all DinkToPdfusages in your codebase
grep -r "using DinkToPdf" --include="*.cs" .
grep -r "SynchronizedConverter\|HtmlToPdfDocument\|ObjectSettings" --include="*.cs" .

# Find NuGet package references
grep -r "DinkToPdf" --include="*.csproj" .

# Find wkhtmltopdf binaries
find . -name "libwkhtmltox*"
SHELL

Bahnbrechende Änderungen, die zu erwarten sind

Ändern SieDinkToPdfIronPDFAuswirkungen
KonverterSynchronizedConverter(new PdfTools())ChromePdfRendererEinfachere Instanziierung
DokumentHtmlToPdfDocumentDirekter MethodenaufrufKein Dokument-Objekt
EinstellungenGlobalSettings + ObjectSettingsRenderingOptionsEinzelne Optionen Objekt
Rückgabetypbyte[]PdfDocumentLeistungsfähigeres Objekt
Binärlibwkhtmltox.dll/soKeine (verwaltet)Native Dateien entfernen
Thread-SicherheitBasicConverter single-threaded; SynchronizedConverter serialisiertThread-sicher als StandardEinfacherer Code
DISingleton erforderlichJede LebensdauerFlexibel

Schritt-für-Schritt-Migrationsprozess

Schritt 1: NuGet-Pakete aktualisieren

Entfernen Sie DinkToPdfund installieren Sie IronPDF:

# Remove DinkToPdf
dotnet remove package DinkToPdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Schritt 2: Entfernen nativer Binärdateien

Löschen Sie diese plattformspezifischen Dateien aus Ihrem Projekt:

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

IronPDF hat keine nativen Abhängigkeiten - alles ist verwalteter Code.

Schritt 3: Aktualisieren der Namensraum-Referenzen

Ersetzen Sie die Namensräume von DinkToPdfdurch IronPDF:

// Remove these
using DinkToPdf;
using DinkToPdf.Contracts;

// Add this
using IronPdf;

Schritt 4: Lizenz konfigurieren

// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Komplette API-Migrationsreferenz

Kernklassen-Zuordnung

DinkToPdfIronPDF
SynchronizedConverterChromePdfRenderer
BasicConverterChromePdfRenderer
PdfToolsNicht erforderlich
HtmlToPdfDocumentNicht erforderlich
GlobalSettingsRenderingOptions
ObjectSettingsRenderingOptions
MarginSettingsEinzelne Randeigenschaften

GlobalSettings Zuordnung

DinkToPdfGlobalSettingsIronPDF-Äquivalent
ColorMode = ColorMode.ColorStandard (immer Farbe)
Orientation = Orientation.PortraitPaperOrientation = PdfPaperOrientation.Portrait
Orientation = Orientation.LandscapePaperOrientation = PdfPaperOrientation.Landscape
PaperSize = PaperKind.A4PaperSize = PdfPaperSize.A4
Margins = new MarginSettings()Einzelne Randeigenschaften

MarginSettings-Zuordnung

DinkToPdfRänderIronPDF-Äquivalent
Margins.Top = 10MarginTop = 10
Margins.Bottom = 10MarginBottom = 10
Margins.Left = 15MarginLeft = 15
Margins.Right = 15MarginRight = 15

Beispiele für die Code-Migration

Einfaches HTML zu PDF

Die grundlegende Konvertierung demonstriert die drastische Vereinfachung von der ausführlichen Konfiguration von DinkToPdfzu IronPDFs schlanker API.

DinkToPdf Implementierung:

// 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 = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>",
                    WebSettings = { DefaultEncoding = "utf-8" }
                }
            }
        };
        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("output.pdf", pdf);
    }
}

IronPDF-Implementierung:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML.</p>");
        pdf.SaveAs("output.pdf");
    }
}

IronPDF reduziert eine 20-zeilige DinkToPdf-Konfiguration auf 4 Zeilen. Kein SynchronizedConverter, kein PdfTools, kein HtmlToPdfDocument, kein ObjectSettings - einfach rendern und speichern. Weitere Optionen finden Sie in der HTML zu PDF Dokumentation.

URL zu PDF-Konvertierung

DinkToPdf Implementierung:

// 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);
    }
}

IronPDF-Implementierung:

// 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");
    }
}

IronPDF's RenderUrlAsPdf ersetzt die verschachtelte ObjectSettings.Page-Konfiguration durch einen direkten Methodenaufruf. Weitere Optionen finden Sie in der URL zur PDF-Dokumentation.

Benutzerdefinierte Einstellungen mit Querformat und Rändern

DinkToPdf Implementierung:

// 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.A4,
                Margins = new MarginSettings { Top = 10, Bottom = 10, Left = 15, Right = 15 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>",
                    WebSettings = { DefaultEncoding = "utf-8" }
                }
            }
        };
        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("custom.pdf", pdf);
    }
}

IronPDF-Implementierung:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 15;
        renderer.RenderingOptions.MarginRight = 15;
        
        var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>");
        pdf.SaveAs("custom.pdf");
    }
}

IronPDF's RenderingOptions ersetzt sowohl GlobalSettings als auch MarginSettings mit einer einheitlichen, flüssigen API. Weitere Konfigurationsoptionen finden Sie in der Dokumentation der Darstellungsoptionen.

Kritische Hinweise zur Migration

Entfernen nativer Binärdateien

Der wichtigste Bereinigungsschritt ist das Entfernen der nativen wkhtmltopdf-Binärdateien.IronPDF hat keine nativen Abhängigkeiten:

# Delete native binaries
rm libwkhtmltox.* 2>/dev/null
SHELL

Kein Singleton erforderlich

DinkToPdf's dokumentierte Anleitung ist, SynchronizedConverter als Singleton zu registrieren. IronPDF's ChromePdfRenderer ist Thread-sicher mit jeder DI-Lebensdauer:

// DinkToPdf- typically registered as singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

//IronPDF- any lifetime works
services.AddScoped<ChromePdfRenderer>();
// Or just create inline:
var renderer = new ChromePdfRenderer();

Reichhaltigerer Renditetyp

DinkToPdf gibt byte[] zurück.IronPDF gibt PdfDocument mit Manipulationsmöglichkeiten zurück:

// DinkToPdfreturns byte[]
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
return File(pdf, "application/pdf");

//IronPDF returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
return File(pdf.BinaryData, "application/pdf");

Vollständige CSS3-Unterstützung

Moderne Layouts, die in DinkToPdfversagen, funktionieren in IronPDF perfekt:

// DinkToPdf- doesn't work (wkhtmltopdf uses 2015 WebKit)
var html = "<div style='display: flex;'>...</div>";  // Broken!

//IronPDF- full support (modern Chromium)
var html = @"
    <div style='display: flex; justify-content: space-between;'>
        <div>Left</div>
        <div>Right</div>
    </div>";
var pdf = renderer.RenderHtmlAsPdf(html);  // Works!

Post-Migrations-Checkliste

Überprüfen Sie nach Abschluss der Codemigration Folgendes:

Führen Sie alle Unit-Tests aus, um zu überprüfen, ob die PDF-Generierung korrekt funktioniert.

  • Testen Sie Multi-Thread-Szenarien (der SynchronizedConverter Pfad serialisiert Aufrufe und war unter Last anfällig für native Abstürze)
  • Vergleich der PDF-Ausgabequalität (IronPDFs Chromium liefert bessere Ergebnisse)
  • CSS-Rendering überprüfen (Flexbox/Grid funktioniert jetzt)
  • Test der JavaScriptAusführung (zuverlässig mit IronPDF)
  • CI/CD-Pipelines aktualisieren, um die Installation von wkhtmltopdf zu entfernen
  • Überprüfung, ob der Sicherheitsscan erfolgreich war (keine CVE-2022-35583-Flags mehr)
  • Entfernen der nativen Binärbereitstellung aus Docker/Bereitstellungsskripten

Zusätzliche Ressourcen


Der Umstieg von DinkToPdfauf IronPDF beseitigt die ungepatchte wkhtmltopdf-Angriffsfläche (CVE-2022-35583), das serialisierte SynchronizedConverter-Konkurrenzmodell, die Bereitstellung nativer Binärdateien und den älteren QtWebKit-Rendering-Pfad. Der Übergang zu einem modernen Chromium-Engine bietet volle CSS3-Unterstützung, zuverlässige JavaScript-Ausführung und eine aktiv gewartete Bibliothek.

Hinweis:: DinkToPdf und wkhtmltopdf sind eingetragene Marken ihrer jeweiligen Inhaber. Diese Website ist nicht verbunden mit, unterstützt oder gesponsert von DinkToPdfoder wkhtmltopdf. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.
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 Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Buchen Sie Ihre kostenlose Live-Demo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Kundenlogos von Iron Software
Erhalten Sie Ihre unverbindliche Beratung
Ihre Daten werden immer vertraulich behandelt.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Von Millionen von Ingenieur*innen weltweit vertraut
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.
C# NuGet-Bibliothek für PDF
Installation mit NuGet

Version: 2026.10

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Rechtsklick auf Referenzen, NuGet-Pakete verwalten
  2. Wählen Sie Durchsuchen und suchen Sie nach 'IronPDF'
  3. Paket auswählen und installieren
C# PDF DLL
Download DLL

Version: 2026.10

oder laden Sie den Windows-Installer hier herunter.

  1. Laden Sie IronPDF herunter und entpacken Sie es in ein Verzeichnis wie ~/Libs innerhalb Ihres Lösungsverzeichnisses
  2. Im Visual Studio-Projektmappen-Explorer klicken Sie mit der rechten Maustaste auf Referenzen. Wählen Sie Durchsuchen, "IronPDF.dll"

Lizenzen ab 999 $