IRONSOFTWAREHOME

Iron Suite for .NET

10 bibliotek .NET. Jeden kompletny pakiet dokumentów.

IRONPDF
IRONWORD
IRONXL
IRONPPT
IRONOCR
IRONBARCODE
IRONQR
IRONPRINT
IRONZIP
IRONWEBSCRAPER
PORÓWNANIE

Rotativa vs IronPDF: Przewodnik porównania technicznego

Curtis Chau
Curtis Chau
Updated: 28 czerwca 2026

Kiedy programiści .NET oceniają rozwiązania do generowania plików PDF,Rotativai IronPDFreprezentują zasadniczo różne podejścia, charakteryzujące się odmiennymi podstawami architektonicznymi i ścieżkami rozwoju.Rotativawykorzystuje narzędzie wkhtmltopdf do konwersji treści HTML do formatu PDF w aplikacjach ASP.NET MVC, podczas gdy IronPDFzapewnia nowoczesny silnik renderujący oparty na Chromium, kompatybilny ze wszystkimi typami projektów .NET. Niniejsze porównanie techniczne analizuje obie biblioteki pod kątem aspektów, które mają największe znaczenie dla profesjonalnych programistów i architektów podejmujących decyzje dotyczące generowania plików PDF dla aplikacji .NET w 2025 roku i później.

Zrozumienie Rotativa

Rotativa to biblioteka open source zaprojektowana specjalnie dla aplikacji ASP.NET MVC. Obejmuje narzędzie wiersza poleceń wkhtmltopdf do konwersji treści HTML do formatu PDF. Biblioteka zapewnia MVC-specyficzne typy wyników akcji, takie jak ViewAsPdf i UrlAsPdf, które integrują się bezpośrednio z wzorcem kontrolera MVC.

W swej podstawowej wersjiRotativawykorzystuje silnik renderujący Qt WebKit 4.8 biblioteki wkhtmltopdf z 2012 roku. Oznacza to, że biblioteka nie może renderować nowoczesnych funkcji CSS, takich jak Flexbox czy CSS Grid, a wykonywanie kodu JavaScript jest zawodne ze względu na brak obsługi ES6+.

**Ważna uwaga:**Rotativaod lat nie jest aktualizowana ani utrzymywana. Podstawowy projekt wkhtmltopdf został oficjalnie porzucony w grudniu 2022 r., a osoby odpowiedzialne za jego utrzymanie wyraźnie oświadczyły, że nie będą naprawiać luk w zabezpieczeniach. Obejmuje to CVE-2022-35583, krytyczną lukę w zabezpieczeniach typu Server-Side Request Forgery (SSRF) o poziomie zagrożenia 9,8/10.

Zrozumienie IronPDF

IronPDF zapewnia nowoczesne rozwiązanie do generowania plików PDF oparte na silniku Chromium dla aplikacji .NET. Biblioteka współpracuje z każdym typem projektu .NET, w tym z ASP.NET MVC, Razor Pages, Blazor, minimalnymi interfejsami API, aplikacjami konsolowymi i projektami desktopowymi.

Architektura IronPDFoddziela renderowanie HTML od generowania plików PDF, zapewniając programistom większą elastyczność w projektowaniu struktury aplikacji. Klasa ChromePdfRenderer obsługuje wszystkie operacje konwersji z pełnym wsparciem dla nowoczesnych CSS3, JavaScript ES6+ i wzorców async/await.

Porównanie zabezpieczeń

Poziom bezpieczeństwa tych bibliotek znacznie się różni:

RyzykoRotativaIronPDF
CVE-2022-35583 (SSRF)Podatny na atakiChronione
Lokalny dostęp do plikówPodatny na atakiOdizolowany
Dostęp do sieci wewnętrznejPodatny na atakiOgraniczone
Poprawki bezpieczeństwaNigdy (porzucone)Regularne aktualizacje
Aktywny rozwójPorzuconyComiesięczne wydania

Luka CVE-2022-35583 umożliwia atakującym dostęp do wewnętrznych zasobów sieciowych, punktów końcowych metadanych w chmurze oraz poufnych ustawień konfiguracyjnych za pośrednictwem spreparowanej treści HTML. Ponieważ wkhtmltopdf nigdy nie zostanie załatany, każda aplikacja korzystająca zRotativapozostaje na stałe narażona na tę krytyczną lukę.

Zgodność projektu

Największym ograniczeniem Rotativy jest jej wyłączna koncentracja na ASP.NET MVC:

FunkcjaRotativaIronPDF
ASP.NET MVCTakTak
Razor PagesNieobsługiwaneObsługiwane
BlazorNieobsługiwaneObsługiwane
Minimalne interfejsy APINieobsługiwaneObsługiwane
Aplikacje konsoloweNieobsługiwaneObsługiwane
Aplikacje desktopoweNieobsługiwaneObsługiwane

Rotativa została zaprojektowana dla ASP.NET MVC 5 i wcześniejszych wersji, opierając się na wzorcu wyników akcji kontrolera. Taka architektura sprawia, że nie nadaje się ona do nowoczesnych aplikacji .NET Core wykorzystujących Razor Pages, Blazor lub minimalne interfejsy API.

Konwersja HTML do PDF

Wzorce kodu służące do konwersji HTML na PDF ujawniają fundamentalne różnice architektoniczne.

Konwersja HTML Rotativa

Rotativa wymaga kontekstu kontrolera MVC i wykorzystuje wzorce wyników akcji:

// 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
            };
        }
    }
}
C#

PodejścieRotativałączy generowanie plików PDF z widokami i kontrolerami MVC. Wynik akcji ViewAsPdf renderuje widok Razor i konwertuje go na PDF, ale nie może bezpośrednio akceptować surowych łańcuchów HTML bez widoku.

Konwersja HTML w IronPDF

IronPDF zapewnia bezpośrednią konwersję ciągów znaków HTML bez konieczności stosowania kontekstu MVC:

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

Metoda RenderHtmlAsPdf akceptuje bezpośrednio zawartość HTML, umożliwiając generowanie plików PDF z dowolnego kontekstu aplikacji — aplikacji konsolowych, usług działających w tle lub aplikacji internetowych dowolnego typu.

Konwersja adresów URL do formatu PDF

Konwersja aktywnych stron internetowych do formatu PDF pokazuje, w jaki sposób każda biblioteka obsługuje nawigację i renderowanie.

Konwersja adresów URL 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
            };
        }
    }
}

Typ wyniku UrlAsPdfRotativawymaga kontekstu kontrolera MVC i zwraca wynik akcji. Należy pamiętać, że renderowanie adresów URL za pomocą wkhtmltopdf naraża system na lukę SSRF, umożliwiając atakującym potencjalny dostęp do zasobów sieci wewnętrznej.

Konwersja adresów URL w 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!");
        }
    }
}

Metoda RenderUrlAsPdf firmy IronPDFdziała niezależnie od jakiegokolwiek frameworka internetowego, z wbudowanymi ograniczeniami bezpieczeństwa, które zapobiegają atakom SSRF.

Implementacja nagłówków i stopek

Nagłówki i stopki dokumentów pokazują istotne różnice w projektowaniu API.

Nagłówki i stopki Rotativa

Rotativa wykorzystuje przełączniki wiersza poleceń przekazywane jako ciągi znaków:

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

Właściwość CustomSwitches przekazuje surowe argumenty wiersza poleceń do wkhtmltopdf. Takie podejście nie zapewnia bezpieczeństwa typów, obsługi IntelliSense ani sprawdzania w czasie kompilacji. Błędy w składni switch pojawiają się dopiero w czasie wykonywania.

Nagłówki i stopki IronPDF

IronPDF udostępnia właściwości typowane do konfiguracji nagłówków i stopek:

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

Klasa TextHeaderFooter firmy IronPDFzapewnia obsługę IntelliSense, sprawdzanie typów w czasie kompilacji oraz przejrzyste nazwy właściwości. Składnia symboli zastępczych różni się:Rotativaużywa [page] i [toPage], podczas gdy IronPDFużywa {page} i {total-pages}.

Odnośnik do składni symboli zastępczych

Rotativa PlaceholderIronPDF Placeholder
[page]{page}
[topage]{total-pages}
[date]{date}
[time]{time}
[title]{html-title}
[sitepage]{url}

Tabela porównawcza funkcji

FunkcjaRotativaIronPDF
BezpieczeństwoKrytyczne luki CVE (niezałatane)Brak luk w zabezpieczeniach
Renderowanie HTMLPrzestarzały WebKit (2012)Nowoczesny Chromium
CSS3Częściowe wsparcieObsługiwane
Flexbox/GridNieobsługiwaneObsługiwane
JavaScriptNiewiarygodnePełna obsługa ES6+
ASP.NET CoreOgraniczone portyWsparcie native
Razor PagesNieobsługiwaneObsługiwane
BlazorNieobsługiwaneObsługiwane
Manipulacja plikami PDFNiedostępneObsługiwane
Podpisy cyfroweNiedostępneObsługiwane
Zgodność z PDF/ANiedostępneObsługiwane
Async/AwaitTylko synchronicznePełna asynchroniczność
Aktywna konserwacjaPorzuconyCotygodniowe aktualizacje

Przewodnik po mapowaniu API

Zespoły oceniające migrację zRotativado IronPDFmogą skorzystać z poniższego zestawienia równoważnych operacji:

KlasaRotativaOdpowiednik IronPDF
ViewAsPdfChromePdfRenderer
ActionAsPdfChromePdfRenderer.RenderUrlAsPdf()
UrlAsPdfChromePdfRenderer.RenderUrlAsPdf()
Orientation wyliczeniePdfPaperOrientation wyliczenie
Size wyliczeniePdfPaperSize wyliczenie
MarginsRenderingOptions.Margin*
CustomSwitchesRenderingOptions.*

Problem z wątkami

Rotativa dziedziczy ograniczenia wkhtmltopdf dotyczące wątków:

//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 zapewnia pełną obsługę asynchroniczną:

//IronPDF- Pełna asynchroniczność support
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
}

Wzorce wyłącznie synchroniczne wRotativablokują wątki żądań, co ogranicza skalowalność aplikacji pod obciążeniem. Obsługa trybu asynchronicznego w IronPDFumożliwia lepsze wykorzystanie zasobów w scenariuszach o dużej przepustowości.

Kwestie związane z wdrożeniem

Rotativa wymaga zarządzania plikami binarnymi wkhtmltopdf w różnych środowiskach wdrożeniowych:

  • Różne pliki binarne dla platform x86/x64/Linux/Mac
  • Ręczna konfiguracja środowiska PATH
  • Luki w zabezpieczeniach we wszystkich wersjach binarnych
  • Obrazy Docker muszą zawierać instalację wkhtmltopdf

IronPDF upraszcza wdrażanie dzięki pakietom NuGet bez konieczności zewnętrznego zarządzania plikami binarnymi.

Kiedy zespoły rozważają migrację do Rotativa

Kilka czynników skłania zespoły programistów do rozważenia alternatyw dla Rotativa:

Wymagania bezpieczeństwa stają się krytyczne, gdy skanery podatności wykrywają lukę CVE-2022-35583. Ponieważ wkhtmltopdf nigdy nie zostanie załatany, organizacje podlegające audytom bezpieczeństwa lub wymogom zgodności muszą odejść od Rotativa.

Wdrażanie nowoczesnego .NET powoduje niekompatybilność, gdy zespoły przechodzą na Razor Pages, Blazor lub minimalne API. ArchitekturaRotativaoparta wyłącznie na MVC nie obsługuje tych nowoczesnych wzorców.

Ograniczenia renderowania CSS wpływają na jakość dokumentu, gdy w projektach wykorzystuje się Flexbox lub CSS Grid. Przestarzały silnik WebKit firmyRotativaz 2012 roku nie jest w stanie poprawnie renderować tych układów.

Niezawodność JavaScriptu wpływa na dynamiczne renderowanie treści. Złożony kod JavaScript działający w przeglądarkach często nie działa lub jest wyświetlany nieprawidłowo ze względu na ograniczoną obsługę JavaScript przez wkhtmltopdf.

Skalowalność asynchroniczna ma znaczenie w przypadku aplikacji o dużej przepustowości. Wzorzec wyłącznie synchroniczny Rotivaty blokuje wątki, podczas gdy IronPDFobsługuje pełną funkcję async/await w celu lepszego wykorzystania zasobów.

Zalety i kompromisy

Atuty Rotativa

  • Prosta integracja z MVC dla podstawowych przypadków użycia
  • Oprogramowanie open source (licencja MIT)
  • Znany wzorzec dla starszych aplikacji MVC
  • Brak kosztów licencji komercyjnych

Ograniczenia Rotativa

  • Tylko ASP.NET MVC — bez Razor Pages, Blazor ani minimalnych interfejsów API
  • Porzucone — brak aktualizacji i konserwacji
  • Krytyczne luki w zabezpieczeniach, które nigdy nie zostaną załatane
  • Przestarzały silnik renderujący WebKit (2012)
  • Brak obsługi Flexbox lub CSS Grid
  • Niewiarygodne wykonywanie kodu JavaScript
  • Tylko synchroniczne — słaba skalowalność
  • Brak możliwości edycji plików PDF
  • Brak podpisów cyfrowych ani zgodności z formatem PDF/A

Atuty IronPDF

  • Działa z każdym typem projektu .NET
  • Nowoczesny silnik renderujący Chromium z pełną obsługą CSS3/JavaScript
  • Aktywnie utrzymywany z regularnymi aktualizacjami zabezpieczeń
  • Pełna obsługa async/await
  • Kompleksowe funkcje obróbki plików PDF
  • Podpisy cyfrowe i bezpieczeństwo
  • Zgodność z formatem archiwizacji PDF/A
  • Profesjonalne wsparcie i dokumentacja

Uwagi dotyczące IronPDF

  • Komercyjny model licencjonowania
  • Wymaga inicjalizacji klucza licencyjnego

Wnioski

Rotativa zapewniała proste rozwiązanie do generowania plików PDF w aplikacjach ASP.NET MVC, gdy była aktywnie utrzymywana. Jednak zaprzestanie rozwoju biblioteki w połączeniu z krytycznymi, niezałatanymi lukami w zabezpieczeniach jej podstawy wkhtmltopdf stwarza poważne ryzyko dla aplikacji produkcyjnych.

Dla zespołów korzystających obecnie z Rotativy połączenie luk w zabezpieczeniach, architektury opartej wyłącznie na MVC oraz przestarzałych możliwości renderowania stanowi istotny powód do rozważenia alternatywnych rozwiązań. W przypadku nowych projektów opartych na .NET 10 i C# 14 w 2026 r. architekturaRotativanie będzie w stanie obsługiwać nowoczesnych wzorców, takich jak Razor Pages, Blazor czy minimalne interfejsy API.

IronPDF rozwiązuje te ograniczenia dzięki nowoczesnemu silnikowi renderowania Chromium, kompatybilności z platformą .NET, aktywnej konserwacji oraz wszechstronnym możliwościom manipulacji plikami PDF, którychRotativanigdy nie oferowała. Ścieżka migracji zRotativado IronPDFpolega głównie na zastąpieniu wyników akcji MVC bezpośrednimi wywołaniami ChromePdfRenderer oraz aktualizacji składni symboli zastępczych w nagłówkach i stopkach.


Aby uzyskać wskazówki dotyczące wdrożenia, zapoznaj się z samouczkiem IronPDF ASP.NET Core oraz dokumentacją dotyczącą wzorców generowania plików PDF dla nowoczesnych aplikacji .NET Core.

Zwróć uwagę: Rotativa i wkhtmltopdf są zarejestrowanymi znakami towarowymi ich właścicieli. Ta strona nie jest powiązana, polecana ani sponsorowana przezRotativalub wkhtmltopdf. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.
Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta