wkhtmltopdf vs IronPDF: Leitfaden für einen technischen Vergleich
wkhtmltopdf vs IronPDF: Ein technischer Vergleich für die .NET-PDF-Generierung
Wenn .NET-Entwickler HTML in PDF konvertieren müssen, ist wkhtmltopdf aufgrund seines Open-Source-Charakters und seiner Einfachheit in der Befehlszeile seit jeher eine beliebte Wahl. Die Einstellung des Projekts und kritische Sicherheitslücken haben jedoch viele Teams dazu veranlasst, moderne Alternativen zu prüfen. In diesem technischen Vergleich wird wkhtmltopdf nebenIronPDFuntersucht, um Architekten und Entwicklern zu helfen, die signifikanten Unterschiede in Bezug auf Sicherheit, Rendering-Fähigkeiten und langfristige Lebensfähigkeit zu verstehen.
Verstehen Sie wkhtmltopdf
wkhtmltopdf ist ein Tool zur Konvertierung von HTML in PDF-Dokumente, das direkt von der Kommandozeile aus arbeitet und Qt WebKit zur Verarbeitung von HTML-Inhalten nutzt. In den Jahren ihrer aktiven Entwicklung hat die Bibliothek aufgrund ihrer kostenlosen LGPLv3-Lizenzierung und ihrer plattformübergreifenden Verfügbarkeit an Popularität gewonnen.
Allerdings stellt wkhtmltopdf jetzt kritische Herausforderungen, die nicht ignoriert werden können:
- Projektabbruch: Die letzten bedeutsamen Software-Updates fanden um 2016-2017 statt
- Kritische Sicherheitsschwachstelle: CVE-2022-35583 (CVSS 9.8 Schweregrad) ist eine SSRF-Schwachstelle, die noch nicht behoben wurde
- Veraltete Rendering Engine: Setzt auf Qt WebKit von 2015
- Eingeschränkte Unterstützung für modernes Web: Keine CSS-Grid-Unterstützung, fehlerhafte Flexbox-Implementierung, kein ES6+ JavaScript
- Stagnation des Ökosystems: Alle .NET-Wrapper-Bibliotheken (DinkToPdf, Rotativa, TuesPechkin, WkHtmlToPdf-DotNet, NReco.PdfGenerator) erben diese Schwachstellen
Die Sicherheitskrise CVE-2022-35583
Die Server-Side Request Forgery (SSRF)-Schwachstelle in wkhtmltopdf ermöglicht es Angreifern,:
- Zugriff auf interne Dienste: Erreichen Sie interne APIs, Datenbanken und Dienste hinter Firewalls
- Zugangsdaten stehlen: Zugriff auf Cloud-Metadaten-Endpunkte (AWS, GCP, Azure), um IAM-Anmeldeinformationen zu stehlen
- Port Scanning: Scannen von internen Netzwerken innerhalb der Infrastruktur
- Datenexfiltration: Extrahieren sensibler Daten durch manipuliertes HTML/CSS
Der Angriffsvektor ist einfach: bösartiges HTML, das an einen PDF-Generator übermittelt wird:
<!-- Malicious HTML submitted to your PDF generator -->
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-database:5432/admin"/>
<!-- Malicious HTML submitted to your PDF generator -->
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-database:5432/admin"/>
Wenn wkhtmltopdf dieses HTML rendert, holt es diese URLs aus dem Netzwerkkontext des Servers und umgeht dabei Firewalls und Sicherheitskontrollen. Diese Schwachstelle wird nie gepatcht werden, da das Projekt offiziell aufgegeben wurde.
IronPDFverstehen
IronPDF stellt eine robuste Alternative dar, die die Unzulänglichkeiten von wkhtmltopdf behebt. Mit aktiver Wartung, regelmäßigen Updates und der Verwendung der aktuellen Chromium-Rendering-Engine bietet IronPDF sowohl Sicherheit als auch die Einhaltung moderner Webstandards.
Zu den wichtigsten Merkmalen gehören:
- Moderne Chromium-Engine: Verwendet die aktuelle Chromium-Rendering-Engine mit voller ES2024-JavaScript-Unterstützung
- Keine bekannten CVEs: Keine bekannten Sicherheitsschwachstellen
- Aktive Entwicklung: Regelmäßige Veröffentlichungen mit Sicherheitsupdates und Funktionserweiterungen
- Komplette CSS-Unterstützung: Vollständiges CSS-Grid, Flexbox und moderne Layout-Systeme
- Umfassende PDF-Funktionen: Digitale Signaturen, PDF/A-Konformität, PDF-Manipulationsfunktionen
- Professioneller Support: Umfassende Dokumentation und spezielle Support-Kanäle
Funktionsvergleich
Die folgende Tabelle zeigt die grundlegenden Unterschiede zwischen wkhtmltopdf und IronPDF:
| Feature | wkhtmltopdf | IronPDF |
|---|---|---|
| Lizenzierung | LGPLv3 (Frei) | Kommerziell |
| Rendering Engine | Qt WebKit (2015) | Aktuelle Chromium-Engine |
| Sicherheitsstatus | CVE-2022-35583 KRITISCH (9.8) UNGEPATCHED | Keine bekannten CVEs |
| Letzte bedeutsame Aktualisierung | 2016-2017 | Aktive Entwicklung |
| CSS Grid | Nicht unterstützt | Volle Unterstützung |
| Flexbox | Gebrochen | Volle Unterstützung |
| ES6+ JavaScript | Nicht unterstützt | Volle Unterstützung |
| Async/Await | Nicht unterstützt | Volle Unterstützung |
| PDF-Bearbeitung | Nicht unterstützt | Volle Unterstützung |
| Digitale Signaturen | Nicht unterstützt | Volle Unterstützung |
| PDF/A-Konformität | Nicht unterstützt | Volle Unterstützung |
| Professionelle Unterstützung | Keine (aufgegeben) | Kommerziell mit SLA |
| C#-Integration | Über Wrapper von Drittanbietern | Direkt, regelmäßig aktualisiert |
Betroffene Wrapper-Bibliotheken
Alle .NET-Wrapper für wkhtmltopdf erben die gleichen Schwachstellen:
| Wrapper-Bibliothek | Status | Sicherheitsrisiko |
|---|---|---|
| DinkToPdf | Aufgegeben | KRITISCH |
| Rotativa | Aufgegeben | KRITISCH |
| TuesPechkin | Aufgegeben | KRITISCH |
| WkHtmlToPdf-DotNet | Aufgegeben | KRITISCH |
| NReco.PdfGenerator | Verwendet wkhtmltopdf | KRITISCH |
Wenn Ihre Anwendung eine dieser Bibliotheken verwendet, ist sie anfällig für CVE-2022-35583.
Unterschiede in der API-Architektur
Die API-Muster zwischen wkhtmltopdf-Wrappern undIronPDFweisen erhebliche Unterschiede in Bezug auf Komplexität und Benutzerfreundlichkeit auf.
wkhtmltopdf Konfigurationsmuster
wkhtmltopdf-Wrapper erfordern die Erstellung von Dokumentobjekten mit verschachtelten Einstellungskonfigurationen:
// NuGet: Install-Package WkHtmlToPdf-DotNet
using WkHtmlToPdfDotNet;
using WkHtmlToPdfDotNet.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientierung= Orientation.Portrait,
PaperSize = PaperKind.A4
},
Objects = {
new ObjectSettings()
{
HtmlContent = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
}
}
// NuGet: Install-Package WkHtmlToPdf-DotNet
using WkHtmlToPdfDotNet;
using WkHtmlToPdfDotNet.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientierung= Orientation.Portrait,
PaperSize = PaperKind.A4
},
Objects = {
new ObjectSettings()
{
HtmlContent = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Dieses Muster erfordert die Erstellung eines SynchronizedConvertermit PdfTools, die Konstruktion eines HtmlToPdfDocumentmit GlobalSettings und Objects Sammlungen und das manuelle Schreiben von Byte-Arrays in Dateien.
IronPDFVereinfachtes Muster
IronPDF verwendet einen schlanken Ansatz mit der Klasse ChromePdfRenderer:
// 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");
}
}
// 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");
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Die Klasse ChromePdfRenderer beseitigt die verschachtelten Konfigurationsobjekte und liefert ein PdfDocument mit integrierten Speichermethoden. Eine umfassende Anleitung zur HTML-Konvertierung finden Sie im HTML to PDF tutorial.
URL zu PDF Konvertierung
Die Konvertierung von Webseiten in PDF zeigt den Komplexitätsunterschied zwischen den Ansätzen.
wkhtmltopdf Implementierung
wkhtmltopdf verwendet die Eigenschaft Page innerhalb von ObjectSettings, um URLs anzugeben:
// NuGet: Install-Package WkHtmlToPdf-DotNet
using WkHtmlToPdfDotNet;
using WkHtmlToPdfDotNet.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientierung= 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 WkHtmlToPdf-DotNet
using WkHtmlToPdfDotNet;
using WkHtmlToPdfDotNet.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientierung= 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
IronPDFImplementierung
IronPDF bietet eine eigene RenderUrlAsPdf-Methode:
// 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
Die RenderUrlAsPdf-Methode nutzt die Chromium-Engine, um Seiten mit vollständiger JavaScript-Ausführung und moderner CSS-Unterstützung zu rendern - Fähigkeiten, die durch die 2015er WebKit-Engine von IronPdf eingeschränkt sind.
Benutzerdefinierte PDF-Einstellungen
Die Konfiguration von Seitenabmessungen, Rändern und Ausrichtung zeigt die strukturellen Unterschiede zwischen den APIs.
wkhtmltopdf Benutzerdefinierte Einstellungen
wkhtmltopdf benötigt verschachtelte GlobalSettings mit MarginSettings Objekten:
// NuGet: Install-Package WkHtmlToPdf-DotNet
using WkHtmlToPdfDotNet;
using WkHtmlToPdfDotNet.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientierung= Orientation.Landscape,
PaperSize = PaperKind.A4,
Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
},
Objects = {
new ObjectSettings()
{
Page = "input.html",
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("custom-output.pdf", pdf);
}
}
// NuGet: Install-Package WkHtmlToPdf-DotNet
using WkHtmlToPdfDotNet;
using WkHtmlToPdfDotNet.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientierung= Orientation.Landscape,
PaperSize = PaperKind.A4,
Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
},
Objects = {
new ObjectSettings()
{
Page = "input.html",
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("custom-output.pdf", pdf);
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
IronPDFBenutzerdefinierte Einstellungen
IronPDF verwendet RenderingOptions-Eigenschaften für die direkte Konfiguration:
// 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 = 10;
renderer.RenderingOptions.MarginRight = 10;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("custom-output.pdf");
}
}
// 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 = 10;
renderer.RenderingOptions.MarginRight = 10;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("custom-output.pdf");
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
API-Mapping-Referenz
Teams, die eine Umstellung von wkhtmltopdf aufIronPDFerwägen, werden dieses Mapping hilfreich finden, um Konzeptäquivalenzen zu verstehen:
CLI-zu-C#-API-Zuordnung
| wkhtmltopdf CLI-Option | IronPDF-Äquivalent | Notizen |
|---|---|---|
wkhtmltopdf input.html output.pdf |
renderer.RenderHtmlFileAsPdf() |
Datei zu PDF |
wkhtmltopdf URL Ausgabe.pdf |
renderer.RenderUrlAsPdf() |
URL zu PDF |
--Seitengröße A4 |
RenderingOptions.PaperSize = PdfPaperSize.A4 |
Papierformat |
--Seitengröße Letter |
RenderingOptions.PaperSize = PdfPaperSize.Letter |
US-Brief |
--Orientierung Landschaft |
RenderingOptions.PaperOrientation = Querformat |
Orientierung |
--margin-top 10mm |
RenderingOptions.MarginTop = 10 |
Ränder in mm |
--margin-bottom 10mm |
RenderingOptions.MarginBottom = 10 |
|
--margin-left 10mm |
RenderingOptions.MarginLeft = 10 |
|
--margin-right 10mm |
RenderingOptions.MarginRight = 10 |
|
--header-html header.html |
RenderingOptions.HtmlHeader |
HTML-Kopfzeile |
--footer-html footer.html |
RenderingOptions.HtmlFooter |
HTML-Fußzeile |
--footer-center "[Seite]" |
{Seite} Platzhalter |
Seitenzahl |
--footer-center "[toPage]" |
{Gesamtseiten} Platzhalter |
Seiten insgesamt |
--javascript einschalten |
Standardmäßig aktiviert | JavaScript |
--javascript-verzögerung 500 |
RenderingOptions.WaitFor.RenderDelay = 500 |
JS-Verzögerung |
--print-media-type |
RenderingOptions.CssMediaType = Print |
CSS-Medien |
--dpi 300 |
RenderingOptions.Dpi = 300 |
DPI-Einstellung |
--Graustufen |
RenderingOptions.GrayScale = true |
Graustufen |
--zoom 0.8 |
RenderingOptions.Zoom = 80 |
Zoom (%) |
C# Wrapper API Mapping
| wkhtmltopdf Wrapper | IronPDF | Notizen |
|---|---|---|
SynchronizedConverter |
ChromePdfRenderer |
Haupt-Renderer |
HtmlToPdfDocument |
RenderingOptions |
Konfiguration |
GlobalSettings.Out |
pdf.SaveAs() |
Ausgabedatei |
GlobalSettings.PaperSize |
RenderingOptions.PaperSize |
Papierformat |
GlobalSettings.Orientation |
RenderingOptions.PaperOrientation |
Orientierung |
GlobalSettings.Margins |
RenderingOptions.Margin* |
Einzelne Ränder |
ObjektEinstellungen.Seite |
RenderHtmlFileAsPdf() |
Datei-Eingabe |
ObjectSettings.HtmlContent |
RenderHtmlAsPdf() |
HTML-Zeichenkette |
HeaderSettings.Center |
TextHeader.CenterText |
Kopfzeilen-Text |
FooterSettings.Center |
TextFooter.CenterText |
Text in der Fußzeile |
converter.Convert(doc) |
renderer.RenderHtmlAsPdf() |
PDF generieren |
Platzhalter-Syntax-Zuordnung
| wkhtmltopdf Platzhalter | IronPDFPlatzhalter |
|---|---|
[Seite] |
{Seite} |
[bisSeite] |
{Gesamtseiten} |
[Datum] |
{Datum} |
[Zeit] |
{Zeit} |
[Titel] |
{html-title} |
[url] |
{url} |
Wenn Teams den Wechsel von wkhtmltopdf zuIronPDFerwägen
Es gibt mehrere Szenarien, die Entwicklerteams häufig dazu veranlassen,IronPDFals Alternative zu wkhtmltopdf zu prüfen:
Anforderungen an die Sicherheit
Organisationen, die Sicherheitsanforderungen erfüllen müssen (SOC 2, PCI DSS, HIPAA), können keine Anwendungen mit bekannten kritischen Schwachstellen akzeptieren. Der Schweregrad 9.8 von CVE-2022-35583 löst in den meisten Sicherheits-Frameworks sofortige Behebungsanforderungen aus.
Moderne CSS-Framework-Übernahme
Teams, die Bootstrap 5, Tailwind CSS oder benutzerdefinierte CSS-Grid-Layouts verwenden, stellen fest, dass wkhtmltopdf diese nicht korrekt darstellen kann. Der WebKit-Engine von 2015 fehlt die Unterstützung für CSS-Gitter vollständig und die Flexbox-Implementierung ist nicht mehr vorhanden.
JavaScript-Anwendungsanforderungen
Anwendungen, die moderne JavaScript-Funktionen verwenden - ES6+-Syntax einschließlich Pfeilfunktionen, async/await, Klassen und Template-Literalen - werden in wkhtmltopdf nicht funktionieren. Die Chromium-Engine vonIronPDFbietet vollständige JavaScript-Unterstützung.
Cloud- und Container-Einsätze
Moderne Bereitstellungsstrategien, die Docker, Kubernetes oder Cloud-Plattformen verwenden, profitieren von der containerfreundlichen Architektur von IronPDF. Sicherheitsscans von wkhtmltopdf-Binärdateien in Containern werden die CVE-Schwachstelle aufzeigen.
Langfristige Wartungsfragen
Da für wkhtmltopdf keine zukünftigen Updates zu erwarten sind, sehen sich die Teams mit zunehmenden technischen Schulden konfrontiert, da sich die Webstandards weiterentwickeln. Die aktive Entwicklung vonIronPDFgewährleistet die kontinuierliche Kompatibilität mit zukünftigen .NET-Versionen, einschließlich .NET 10, das für 2026 erwartet wird.
Zusätzliche IronPDF-Fähigkeiten
Neben der HTML-zu-PDF-Konvertierung bietetIronPDFFunktionen zur Dokumentenmanipulation, die wkhtmltopdf nicht bieten kann:
- Zusammenführung von PDFs: Kombinieren Sie mehrere Dokumente zu einer einzigen Datei
- Dokumente aufteilen: Seitenbereiche in separate PDFs extrahieren
- Digitale Signaturen: Anwendung kryptografischer Signaturen für die Authentizität von Dokumenten
- Wasserzeichen: Hinzufügen von Text- oder Bild-Wasserzeichen
- PDF/A-Konformität: Erzeugen von Dokumenten nach Archivierungsstandard
- Formularausfüllung: PDF-Formularfelder programmatisch ausfüllen
- Passwortschutz: PDFs mit Benutzer- und Eigentümerpasswörtern verschlüsseln
- Kopf- und Fußzeilen: Automatische Seitennummerierung und Branding mit vollständiger HTML/CSS-Unterstützung
Async-Unterstützung
IronPDF bietet async/await-Unterstützung für die Leistung von Webanwendungen:
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
return pdf.BinaryData;
}
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
return pdf.BinaryData;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Dies verhindert das Blockieren von Threads in hochbelasteten Webanwendungen - eine Fähigkeit, die mit den nur synchronen Wrappern von wkhtmltopdf nicht verfügbar ist.
.NET-Kompatibilität und Zukunftsfähigkeit
die Aufgabe von wkhtmltopdf bedeutet, dass es keine Kompatibilitätstests oder Updates für neuere .NET-Versionen gibt.IronPDFwird aktiv weiterentwickelt und regelmäßig aktualisiert, um die Kompatibilität mit .NET 8, .NET 9 und zukünftigen Versionen, einschließlich .NET 10, das für 2026 erwartet wird, zu gewährleisten. Die async/await-Unterstützung in der gesamten API der Bibliothek entspricht den modernen C#-Entwicklungspraktiken, einschließlich der für C# 14 erwarteten Funktionen.
Abschluss
Die Unterschiede zwischen wkhtmltopdf undIronPDFsind in Bezug auf Sicherheit, Rendering-Funktionen und langfristige Rentabilität erheblich. die kritische SSRF-Schwachstelle von wkhtmltopdf (CVE-2022-35583) in Verbindung mit der Aufgabe von Projekten schafft eine unhaltbare Sicherheitslage für Produktionsanwendungen. Die WebKit-Engine von 2015 kann kein modernes CSS-Grid verarbeiten, hat keine Unterstützung für Flexbox und scheitert an ES6+ JavaScript.
Die Chromium-basierte Rendering-Engine vonIronPDFbietet volle Unterstützung für moderne Webstandards und enthält keine bekannten CVEs. Das vereinfachte API-Design - Methoden wie RenderHtmlAsPdf()und SaveAs() anstelle von verschachtelten Konfigurationsobjekten - reduziert die Komplexität des Codes und bietet gleichzeitig Funktionen wie PDF-Manipulation, digitale Signaturen und asynchrone Unterstützung, die wkhtmltopdf nicht bieten kann.
Teams, die derzeit wkhtmltopdf oder dessen Wrapper-Bibliotheken (DinkToPdf, Rotativa, TuesPechkin) verwenden, müssen aufgrund der Sicherheitsaspekte umgehend Alternativen prüfen. Die API-Zuordnung zwischen den CLI-Optionen von wkhtmltopdf und den RenderingOptions vonIronPDFist einfach, undIronPDFerfordert durchweg weniger Code und eliminiert gleichzeitig die Sicherheitsrisiken von wkhtmltopdf.
Weitere Anleitungen zur Implementierung finden Sie in der IronPDF-Dokumentation und den Tutorials, die spezielle Anwendungsfälle und erweiterte Funktionen behandeln.