Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Wie man von Rotativa zu IronPDF in C# migriert

Migrieren Sie von Rotativazu IronPDF: Vollständiger C#-Migrationsleitfaden

Die Migration von RotativazuIronPDFbehebt kritische Sicherheitslücken und modernisiert gleichzeitig Ihren PDF-Erzeugungsworkflow. Dieses Handbuch bietet einen vollständigen, schrittweisen Migrationspfad, der die verlassene wkhtmltopdf-Abhängigkeit beseitigt, Unterstützung für modernes CSS und JavaScript ermöglicht und plattformübergreifende Kompatibilität über ASP.NET MVC hinaus bietet.

Warum von RotativazuIronPDFmigrieren

Rotativaverstehen

Rotativa ist seit langem eine beliebte Wahl unter Entwicklern für die Erstellung von PDFs in C#. Sie nutzt das Tool wkhtmltopdf, um HTML-Inhalte in das PDF-Format zu konvertieren. Rotativaist eine Open-Source-Bibliothek, die speziell für ASP.NET MVC-Anwendungen entwickelt wurde. Obwohl Rotativaein großes Publikum angezogen hat, stellt die Tatsache, dass es sich auf eine veraltete Technologie stützt, eine Herausforderung dar, die vielleicht nicht jedem Entwickler sofort klar ist.

Im Kern bietet Rotativaeine einfache Möglichkeit, die PDF-Erzeugung in ASP.NET MVC-Projekte zu integrieren, wobei wkhtmltopdf für seine Backend-Funktionalitäten genutzt wird.

Kritischer Sicherheitshinweis

Rotativa umhüllt wkhtmltopdf, das KRITISCHE UNGESCHÜTZTE SICHERHEITSMÄNGEL aufweist.

Attribut Wert
CVE ID CVE-2022-35583
Schweregrad KRITISCH (9.8/10)
Attack Vector Netzwerk
Status WIRD NIE GEPATCHT WERDEN
Betroffen ALLE Rotativa-Versionen

wkhtmltopdf wurde im Dezember 2022 offiziell aufgegeben. Die Betreuer haben ausdrücklich erklärt, dass sie keine Sicherheitslücken beheben werden. Jede Anwendung, die Rotativaverwendet, wird permanent offengelegt.

Wie die Attacke funktioniert

<!-- Attacker submits this content via your MVC model -->
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-database:5432/admin" />
<!-- Attacker submits this content via your MVC model -->
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-database:5432/admin" />
HTML

Auswirkung:

  • Zugang zu AWS/Azure/GCP-Cloud-Metadaten-Endpunkten
  • Stehlen von internen API-Daten und Anmeldeinformationen
  • Port-Scan interner Netzwerke
  • Exfiltrieren sensibler Konfiguration

Die Technologie-Krise

Rotativa umhüllt wkhtmltopdf, das verwendet:

  • Qt WebKit 4.8 (ab 2012)
  • Keine Flexbox-Unterstützung
  • Keine CSS-Grid-Unterstützung
  • Defekte JavaScript-Ausführung
  • Keine ES6+-Unterstützung

Vergleich zwischen Rotativaund IronPDF

Feature Rotativa IronPDF
Projektkompatibilität Nur ASP.NET MVC Jeder .NET-Projekttyp (MVC, Razor Pages, Blazor, etc.)
Wartung Aufgegeben Aktiv gewartet
Sicherheit Anfällig aufgrund von wkhtmltopdf-Abhängigkeiten (CVE-2022-35583) Regelmäßige Updates und Sicherheitspatches
HTML-Rendering Veraltetes WebKit Modernes Chromium
CSS3 Teilweise Volle Unterstützung
Flexbox/Grid Nicht unterstützt Volle Unterstützung
JavaScript Unzuverlässig Vollständig ES6+
Razor-Seiten Nicht unterstützt Volle Unterstützung
Blazor Nicht unterstützt Volle Unterstützung
PDF-Bearbeitung Nicht verfügbar Voll
Digitale Signaturen Nicht verfügbar Voll
PDF/A-Konformität Nicht verfügbar Voll
Async/Await Nur synchron Vollständig asynchron
Open Source Ja, MIT-Lizenz Nein, kommerzielle Lizenz

Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, bietetIronPDFmodernes Chromium-Rendering und plattformübergreifende Unterstützung, die Rotativanicht bieten kann.


Bevor Sie beginnen

Voraussetzungen

  1. .NET-Umgebung: .NET Framework 4.6.2+ oder .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Access: Fähigkeit, NuGet-Pakete zu installieren
  3. IronPDF Lizenz: Beziehen Sie Ihren Lizenzschlüssel von ironPdf.com

NuGet-Paketänderungen

# Remove Rotativa
dotnet remove package Rotativa
dotnet remove package Rotativa.AspNetCore

# Install IronPDF
dotnet add package IronPdf
# Remove Rotativa
dotnet remove package Rotativa
dotnet remove package Rotativa.AspNetCore

# Install IronPDF
dotnet add package IronPdf
SHELL

Entferne wkhtmltopdf-Binärdateien

Löschen Sie diese Dateien aus Ihrem Projekt:

  • wkhtmltopdf.exe
  • wkhtmltox.dll
  • Alle Rotativa/-Ordner

Diese sind die Quelle von CVE-2022-35583.IronPDFbenötigt keine nativen Binärdateien.

Lizenz-Konfiguration

// Add in Program.cs or Startup.cs
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add in Program.cs or Startup.cs
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Komplette API-Referenz

Namensraumänderungen

// Before: Rotativa
using Rotativa;
using Rotativa.Options;
using Rotativa.AspNetCore;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: Rotativa
using Rotativa;
using Rotativa.Options;
using Rotativa.AspNetCore;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Kernklassen-Zuordnungen

Rotativa-Klasse IronPDF-Äquivalent Notizen
AlsPdf ansehen ChromePdfRenderer HTML rendern
AktionAlsPdf ChromePdfRenderer.RenderUrlAsPdf() URL rendern
UrlAsPdf ChromePdfRenderer.RenderUrlAsPdf() URL rendern
Orientierung enum PdfPaperOrientation enum Orientierung
Größe enum PdfPaperSize enum Papierformat

Seitenplatzhalter-Konvertierung

RotativaPlatzhalter IronPDFPlatzhalter
[Seite] {Seite}
[topage] {Gesamtseiten}
[Datum] {Datum}
[Zeit] {Zeit}
[Titel] {html-title}
[sitepage] {url}

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML in PDF

Vor (Rotativa):

// NuGet: Install-Package Rotativa.Core
using Microsoft.AspNetCore.Mvc;
using Rotativa.AspNetCore;
using System.Threading.Tasks;

namespace RotativaExample
{
    public class PdfController : Controller
    {
        public async Task<IActionResult> GeneratePdf()
        {
            var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";

            // Rotativarequires returning a ViewAsPdf result from MVC controller
            return new ViewAsPdf()
            {
                ViewName = "PdfView",
                PageSize = Rotativa.AspNetCore.Options.Size.A4
            };
        }
    }
}
// NuGet: Install-Package Rotativa.Core
using Microsoft.AspNetCore.Mvc;
using Rotativa.AspNetCore;
using System.Threading.Tasks;

namespace RotativaExample
{
    public class PdfController : Controller
    {
        public async Task<IActionResult> GeneratePdf()
        {
            var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";

            // Rotativarequires returning a ViewAsPdf result from MVC controller
            return new ViewAsPdf()
            {
                ViewName = "PdfView",
                PageSize = Rotativa.AspNetCore.Options.Size.A4
            };
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

namespace IronPdfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var renderer = new ChromePdfRenderer();
            var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";

            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            pdf.SaveAs("output.pdf");

            Console.WriteLine("PDF generated successfully!");
        }
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

namespace IronPdfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var renderer = new ChromePdfRenderer();
            var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";

            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            pdf.SaveAs("output.pdf");

            Console.WriteLine("PDF generated successfully!");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dieses Beispiel verdeutlicht den grundlegenden architektonischen Unterschied. Rotativaerfordert die Rückgabe eines ViewAsPdf-Ergebnisses aus einer MVC-Controller-Aktion und bindet Sie an das ASP.NET MVC-Framework. Das Muster funktioniert nur innerhalb der MVC-Anfrage-Pipeline und erfordert eine Razor-Ansicht zum Rendern.

IronPDF funktioniert überall: Konsolenanwendungen, Web-APIs, Blazor, Razor Pages oder jede Art von .NET-Projekt. Sie rufen RenderHtmlAsPdf() mit einem HTML-String auf und speichern das Ergebnis. Kein MVC-Controller erforderlich, keine View-Abhängigkeit. Umfassende Beispiele finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: Konvertierung von URL in PDF

Vor (Rotativa):

// NuGet: Install-Package Rotativa.Core
using Microsoft.AspNetCore.Mvc;
using Rotativa.AspNetCore;
using System.Threading.Tasks;

namespace RotativaExample
{
    public class UrlPdfController : Controller
    {
        public async Task<IActionResult> ConvertUrlToPdf()
        {
            // Rotativaworks within MVC framework and returns ActionResult
            return new UrlAsPdf("https://www.example.com")
            {
                FileName = "webpage.pdf",
                PageSize = Rotativa.AspNetCore.Options.Size.A4,
                PageOrientation = Rotativa.AspNetCore.Options.Orientation.Portrait
            };
        }
    }
}
// NuGet: Install-Package Rotativa.Core
using Microsoft.AspNetCore.Mvc;
using Rotativa.AspNetCore;
using System.Threading.Tasks;

namespace RotativaExample
{
    public class UrlPdfController : Controller
    {
        public async Task<IActionResult> ConvertUrlToPdf()
        {
            // Rotativaworks within MVC framework and returns ActionResult
            return new UrlAsPdf("https://www.example.com")
            {
                FileName = "webpage.pdf",
                PageSize = Rotativa.AspNetCore.Options.Size.A4,
                PageOrientation = Rotativa.AspNetCore.Options.Orientation.Portrait
            };
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

namespace IronPdfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var renderer = new ChromePdfRenderer();

            var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
            pdf.SaveAs("webpage.pdf");

            Console.WriteLine("URL converted to PDF successfully!");
        }
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

namespace IronPdfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var renderer = new ChromePdfRenderer();

            var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
            pdf.SaveAs("webpage.pdf");

            Console.WriteLine("URL converted to PDF successfully!");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Die Klasse UrlAsPdfvon Rotativaerfordert die Rückgabe eines ActionResult von einem MVC-Controller. Die Methode RenderUrlAsPdf() vonIronPDFkann aus jedem Kontext heraus aufgerufen werden und gibt direkt ein PdfDocument-Objekt zurück. Das URL-Rendering verwendet modernes Chromium anstelle der anfälligen und veralteten WebKit-Engine von wkhtmltopdf. Erfahren Sie mehr in unseren Tutorials.

Beispiel 3: Kopf- und Fußzeilen mit Seitenzahlen

Vor (Rotativa):

// NuGet: Install-Package Rotativa.Core
using Microsoft.AspNetCore.Mvc;
using Rotativa.AspNetCore;
using Rotativa.AspNetCore.Options;
using System.Threading.Tasks;

namespace RotativaExample
{
    public class HeaderFooterController : Controller
    {
        public async Task<IActionResult> GeneratePdfWithHeaderFooter()
        {
            return new ViewAsPdf("Report")
            {
                PageSize = Size.A4,
                PageMargins = new Margins(20, 10, 20, 10),
                CustomSwitches = "--header-center \"Page Header\" --footer-center \"Page [page] of [toPage]\""
            };
        }
    }
}
// NuGet: Install-Package Rotativa.Core
using Microsoft.AspNetCore.Mvc;
using Rotativa.AspNetCore;
using Rotativa.AspNetCore.Options;
using System.Threading.Tasks;

namespace RotativaExample
{
    public class HeaderFooterController : Controller
    {
        public async Task<IActionResult> GeneratePdfWithHeaderFooter()
        {
            return new ViewAsPdf("Report")
            {
                PageSize = Size.A4,
                PageMargins = new Margins(20, 10, 20, 10),
                CustomSwitches = "--header-center \"Page Header\" --footer-center \"Page [page] of [toPage]\""
            };
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

namespace IronPdfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var renderer = new ChromePdfRenderer();

            renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
            {
                CenterText = "Page Header",
                DrawDividerLine = true
            };

            renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
            {
                CenterText = "Page {page} of {total-pages}",
                DrawDividerLine = true
            };

            var htmlContent = "<h1>Report Title</h1><p>Report content goes here.</p>";
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            pdf.SaveAs("report.pdf");

            Console.WriteLine("PDF with headers and footers created successfully!");
        }
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

namespace IronPdfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var renderer = new ChromePdfRenderer();

            renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
            {
                CenterText = "Page Header",
                DrawDividerLine = true
            };

            renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
            {
                CenterText = "Page {page} of {total-pages}",
                DrawDividerLine = true
            };

            var htmlContent = "<h1>Report Title</h1><p>Report content goes here.</p>";
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            pdf.SaveAs("report.pdf");

            Console.WriteLine("PDF with headers and footers created successfully!");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Rotativa verwendet CustomSwitches, um Befehlszeilenargumente an wkhtmltopdf zu übergeben, einschließlich Kopf- und Fußzeilenkonfiguration mit Platzhaltern wie [Seite]und [toPage]. Dieser auf Zeichenketten basierende Ansatz ist fehleranfällig und bei der Kompilierung schwer zu validieren.

IronPDF verwendet stark typisierte TextHeaderFooter-Objekte mit Eigenschaften wie CenterText und DrawDividerLine. Die Syntax der Platzhalter ändert sich von [Seite] zu {Seite} und von [bisSeite] zu {Gesamtseiten}. Typisierte Eigenschaften bieten IntelliSense, Kompilierbarkeitsprüfung und kein Risiko von Tippfehlern.


Das Problem der MVC-Architektur

Rotativa wurde für ASP.NET MVC 5 und früher entwickelt:

// ❌ Rotativa- Only works with classic MVC pattern
public class InvoiceController : Controller
{
    public ActionResult InvoicePdf(int id)
    {
        var model = GetInvoice(id);
        return new ViewAsPdf("Invoice", model);  // Tied to MVC Views
    }
}

// Problems:
// - No Razor Pages support
// - No Blazor support
// - No minimal APIs support
// - No ASP.NET Core native integration
// ❌ Rotativa- Only works with classic MVC pattern
public class InvoiceController : Controller
{
    public ActionResult InvoicePdf(int id)
    {
        var model = GetInvoice(id);
        return new ViewAsPdf("Invoice", model);  // Tied to MVC Views
    }
}

// Problems:
// - No Razor Pages support
// - No Blazor support
// - No minimal APIs support
// - No ASP.NET Core native integration
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF trennt das Rendering von Ansichten von der PDF-Generierung, was tatsächlich flexibler ist - Sie können jede HTML-Datei rendern, nicht nur MVC-Ansichten.


Async-Muster-Migration

Rotativa blockiert das Thema;IronPDFunterstützt vollständig async/await:

// ❌ Rotativa- Blocks the thread
public ActionResult GeneratePdf()
{
    return new ViewAsPdf("Report");
    // This blocks the request thread until PDF is complete
    // Poor scalability under load
}

// ✅IronPDF- Vollständig asynchronsupport
public async Task<IActionResult> GeneratePdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = await renderer.RenderHtmlAsPdfAsync(html);
    return File(pdf.BinaryData, "application/pdf");
    // Non-blocking, better scalability
}
// ❌ Rotativa- Blocks the thread
public ActionResult GeneratePdf()
{
    return new ViewAsPdf("Report");
    // This blocks the request thread until PDF is complete
    // Poor scalability under load
}

// ✅IronPDF- Vollständig asynchronsupport
public async Task<IActionResult> GeneratePdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = await renderer.RenderHtmlAsPdfAsync(html);
    return File(pdf.BinaryData, "application/pdf");
    // Non-blocking, better scalability
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Neue Funktionen nach der Migration

Nach der Umstellung aufIronPDFerhalten Sie Funktionen, die Rotativanicht bieten kann:

PDF-Zusammenführung

var merged = PdfDocument.Merge(pdf1, pdf2, pdf3);
merged.SaveAs("complete.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2, pdf3);
merged.SaveAs("complete.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Digitale Signaturen

var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Passwortschutz

pdf.SecuritySettings.UserPassword = "secret";
pdf.SecuritySettings.UserPassword = "secret";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Wasserzeichen

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDF/A Archivierungskonformität

pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3b);
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3b);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Moderne CSS-Unterstützung

// This now works (broke in Rotativa)
var html = @"
    <div style='display: flex; justify-content: space-between;'>
        <div>Left</div>
        <div>Right</div>
    </div>
    <div style='display: grid; grid-template-columns: 1fr 1fr 1fr;'>
        <div>Col 1</div><div>Col 2</div><div>Col 3</div>
    </div>";
var pdf = renderer.RenderHtmlAsPdf(html);  // Works!
// This now works (broke in Rotativa)
var html = @"
    <div style='display: flex; justify-content: space-between;'>
        <div>Left</div>
        <div>Right</div>
    </div>
    <div style='display: grid; grid-template-columns: 1fr 1fr 1fr;'>
        <div>Col 1</div><div>Col 2</div><div>Col 3</div>
    </div>";
var pdf = renderer.RenderHtmlAsPdf(html);  // Works!
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Migrations-Checkliste

Vor der Migration

  • [Identifiziere alle Rotativa-Verwendungen in der Codebasis
  • [Dokument CustomSwitches für die Konvertierung in RenderingOptions
  • [Beachten Sie die Syntax der Kopf-/Fußzeilen-Platzhalter für die Konvertierung ([Seite]{Seite})
  • [Den IronPDF-Lizenzschlüssel erhalten Sie von ironpdf.com

Paketänderungen

  • [Entfernen der NuGet-Pakete Rotativa und Rotativa.AspNetCore
  • [wkhtmltopdf-Binärdateien löschen (wkhtmltopdf.exe, wkhtmltox.dll)
  • [Installieren Sie das NuGet-Paket IronPdf

Code-Änderungen

  • [Aktualisierung von Namensraum-Importen (Verwendung von Rotativa;Verwendung von IronPdf;)
  • [Ersetzen Sie AlsPdf ansehendurch ChromePdfRenderer+ RenderHtmlAsPdf()
  • [Ersetze UrlAsPdfmit RenderUrlAsPdf()
  • [Umwandlung von CustomSwitches in RenderingOptions-Eigenschaften
  • [Aktualisieren Sie die Syntax der Platzhalter ([Seite]{Seite}, [Oberseite]{Gesamtseiten})
  • [Ersetzen Sie PageMargins durch individuelle MarginTop/MarginBottom/MarginLeft/MarginRight
  • [Gegebenenfalls in async-Muster ändern
  • [Lizenzinitialisierung beim Starten der Anwendung hinzufügen

Post-Migration

  • [Überprüfen Sie, ob die PDF-Generierung korrekt funktioniert
  • [Vergleich der PDF-Ausgabequalität (Chromium rendert genauer)
  • [Überprüfen Sie die Verbesserungen beim CSS-Rendering (Flexbox/Grid funktionieren jetzt)
  • [Test der JavaScript-Ausführung (jetzt zuverlässig mit Chromium)
  • [Überprüfen Sie, ob der Sicherheitsscan erfolgreich war (keine weiteren CVE-2022-35583-Flags)
  • [Docker-Konfigurationen aktualisieren, um die wkhtmltopdf-Installation zu entfernen

Abschluss

Während Rotativain der Vergangenheit eine einfache Lösung für die PDF-Generierung in ASP.NET MVC-Anwendungen bot, stellen die Abhängigkeit von einem veralteten Technologie-Stack und die Vernachlässigung der Wartung eine große Herausforderung dar. Die kritische Sicherheitslücke CVE-2022-35583wird nie gepatcht werden, wodurch jede Rotativa-Anwendung dauerhaft gefährdet ist.

Die wichtigsten Änderungen bei dieser Migration sind:

  1. Sicherheit: Kritische SSRF-Schwachstelle (CVE-2022-35583) → Geschützt
  2. Architektur: MVC-only → Jeder .NET-Projekttyp
  3. Rendering Engine: Veraltetes WebKit (2012) → Modernes Chromium
  4. CSS-Unterstützung: Teilweise (keine Flexbox/Grid) → Volle CSS3-Unterstützung
  5. JavaScript: Unzuverlässig → Volle ES6+ Unterstützung
  6. Muster: AlsPdf ansehenreturn type → ChromePdfRenderer+ RenderHtmlAsPdf()
  7. URL-Rendering: UrlAsPdfRenderUrlAsPdf()
  8. Kopf-/Fußzeilen: CustomSwitches Strings → Typisierte TextHeaderFooter Objekte
  9. Platzhalter: [Seite], [Oberseite]{Seite}, {Gesamtseiten}
  10. Async-Unterstützung: Nur synchron → Voll async/await
  11. Wartung: Abgebrochen → Wöchentliche Updates

Für Entwickler, die an einer vielseitigen und sicheren PDF-Erzeugung für verschiedene .NET-Anwendungen interessiert sind, istIronPDFdie bessere Wahl.IronPDFgewährleistet nicht nur die Kompatibilität mit einer Vielzahl von Anwendungen, sondern bietet auch kontinuierlichen Support und Updates, was in der heutigen, sich schnell entwickelnden technischen Landschaft von entscheidender Bedeutung ist.

Entdecken Sie die vollständige IronPDF-Dokumentation, Tutorials und API-Referenz, um Ihre Rotativa-Migration zu beschleunigen.

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