Rotativa vs IronPDF: Teknik Karşılaştırma Rehberi
.NET geliştiricileri PDF oluşturma çözümlerini değerlendirirken,RotativaveIronPDFtemelde farklı yaklaşımlar ve farklı mimari temeller ve bakım yol haritaları ile temsil eder. Rotativa, ASP.NET MVC uygulamaları içinde HTML içeriğini PDF formatına dönüştürmek için wkhtmltopdf aracını kullanırken, IronPDF, tüm .NET proje türleriyle uyumlu modern bir Chromium tabanlı işleme motoru sağlar. Bu teknik karşılaştırma, profesyonel geliştiriciler ve 2025 ve sonrası için .NET uygulamaları için PDF oluşturma kararları veren mimarlar için önemli olan boyutlar boyunca her iki kütüphaneyi inceler.
Rotativa'yı Anlamak
Rotativa, özel olarak ASP.NET MVC uygulamaları için tasarlanmış açık kaynak kodlu bir kütüphanedir. HTML içeriğini PDF formatına dönüştürmek için wkhtmltopdf komut satırı aracını kapsar. Kutuphanede, MVC controller kalibi ile dogrudan entegre olan ViewAsPdf ve UrlAsPdf gibi MVC'ye ozel aksiyon sonuclari saglanir.
Özünde, Rotativa, 2012'den kalma wkhtmltopdf'nin Qt WebKit 4.8 işleme motorunu kullanır. Bu, kütüphanenin Flexbox veya CSS Grid gibi modern CSS özelliklerini işleyemeyeceği ve JavaScript çalıştırmasının, ES6+ desteği olmadan güvensiz olduğu anlamına gelir.
Kritik Dikkat:Rotativayıllardır güncelleme veya bakım almamıştır. Altında yatan wkhtmltopdf, Aralık 2022'de resmi olarak terk edilmiştir ve geliştiriciler, güvenlik açıklarını düzeltmeyeceklerini açıkça belirtmişlerdir. Bu durum, şiddet derecesi 9,8/10 olan CVE-2022-35583 kritik Sunucu Tarafı İstek Sahteciliği (SSRF) güvenlik açığını içerir.
IronPDF'yi Anlama
IronPDF .NET uygulamaları için modern, Chromium tabanlı bir PDF oluşturma çözümü sağlar. Kütüphane, ASP.NET MVC, Razor Pages, Blazor, minimal API'ler, konsol uygulamaları ve masaüstü projelerini de içeren her tür .NET proje türü ile çalışır.
IronPDF'nin mimarisi, geliştiricilerin uygulamalarını yapılandırma şeklinde daha fazla esneklik sağlayarak HTML renderlama işini PDF oluşturma işinden ayırır. ChromePdfRenderer sinifi, modern CSS3, JavaScript ES6+ ve async/await desenleri icin tam destekle tüm donusum işlemlerini yonetir.
Güvenlik Karşılaştırması
Bu kütüphanelerin güvenlik duruşu dramatik bir şekilde farklıdır:
| Risk | Rotativa | IronPDF |
|---|---|---|
| CVE-2022-35583 (SSRF) | Savunmasız | Korumalı |
| Yerel Dosya Erişimi | Savunmasız | Sanallaştırılmış |
| Dahili Ağ Erişimi | Savunmasız | Kısıtlanmış |
| Güvenlik Yamalar | Asla (terk edilmiş) | Düzenli güncellemeler |
| Aktif Geliştirme | Terk edilmiş | Aylık sürümler |
CVE-2022-35583 güvenlik açığı, saldırganların dahili ağ kaynaklarına, bulut meta verisi uç noktalarına ve hassas yapılandırmaya erişmeyi, hazırlanmış HTML içeriği aracılığıyla sağlıyor. Wkhtmltopdf hiçbir zaman yamanmadığı için, Rotativa'yı kullanan her uygulama bu kritik güvenlik açığına karşı kalıcı bir şekilde maruz kalmaya devam eder.
Proje Uyumluluğu
Rotativa'nın en önemli sınırlaması, yalnızca ASP.NET MVC'ye odaklanmasıdır:
| Özellik | Rotativa | IronPDF |
|---|---|---|
| ASP.NET MVC | Evet | Evet |
| Razor Sayfaları | Desteklenmiyor | Desteklenir |
| Blazor | Desteklenmiyor | Desteklenir |
| Minimal API'ler | Desteklenmiyor | Desteklenir |
| Konsol Uygulamaları | Desteklenmiyor | Desteklenir |
| Masaüstü Uygulamaları | Desteklenmiyor | Desteklenir |
Rotativa, ASP.NET MVC 5 ve öncesi için tasarlanmıştır, kontrolcü eylem sonucu desenine dayanır. Bu mimari, modern .NET Core uygulamalarında Razor Sayfaları, Blazor veya minimal API'ler kullanan projeler için uygun değildir.
HTML'den PDF'e Dönüşüm
HTML'den PDF'e dönüştürme için kod desenleri, temel mimari farkları ortaya koymaktadır.
Rotativa HTML Dönüştürme
Rotativa, MVC kontrolcü bağlamını gerektirir ve eylem sonucu desenlerini kullanır:
// 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
};
}
}
}Imports Microsoft.AspNetCore.Mvc
Imports Rotativa.AspNetCore
Imports System.Threading.Tasks
Namespace RotativaExample
Public Class PdfController
Inherits Controller
Public Async Function GeneratePdf() As Task(Of IActionResult)
Dim htmlContent As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
' Rotativa requires returning a ViewAsPdf result from MVC controller
Return New ViewAsPdf() With {
.ViewName = "PdfView",
.PageSize = Rotativa.AspNetCore.Options.Size.A4
}
End Function
End Class
End NamespaceRotativa'nın yaklaşımı, PDF oluşturmayı MVC görünümleri ve kontrolcüleri ile bağlar. ViewAsPdf aksiyon sonucu bir Razor gorunumunu cagirir ve PDF'ye cevirir, ancak bir gorunum olmadan dogrudan duz HTML metinlerini kabul edemez.
IronPDF HTML Donusumu
IronPDF, MVC bağlamı gerektirmeden doğrudan HTML dizesi dönüştürme sağlar:
// 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!");
}
}
}Imports IronPdf
Imports System
Namespace IronPdfExample
Class Program
Shared Sub Main(ByVal args As String())
Dim renderer = New ChromePdfRenderer()
Dim htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF generated successfully!")
End Sub
End Class
End NamespaceRenderHtmlAsPdf yöntemi, doğrudan HTML içeriğini kabul eder, böylece herhangi bir uygulama bağlamından—konsol uygulamaları, arka plan servisleri veya herhangi bir tür web uygulamalarından üretim sağlanır.
URL'den PDF'e Donusum
Canlı web sayfalarını PDF'e dönüştürmek, her iki kütüphanenin de gezinme ve işleme nasıl ele aldığını gösterir.
Rotativa URL Dönüştürme
// 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
};
}
}
}Imports Microsoft.AspNetCore.Mvc
Imports Rotativa.AspNetCore
Imports System.Threading.Tasks
Namespace RotativaExample
Public Class UrlPdfController
Inherits Controller
Public Async Function ConvertUrlToPdf() As Task(Of IActionResult)
' Rotativa works within MVC framework and returns ActionResult
Return New UrlAsPdf("https://www.example.com") With {
.FileName = "webpage.pdf",
.PageSize = Rotativa.AspNetCore.Options.Size.A4,
.PageOrientation = Rotativa.AspNetCore.Options.Orientation.Portrait
}
End Function
End Class
End NamespaceRotativa'nın UrlAsPdf sonuc turu MVC controller baglamini gerektirir ve bir aksiyon sonucu dondurur. URL'nin wkhtmltopdf üzerinden işlenmesinin, saldırganların iç ağ kaynaklarına potansiyel erişim sağlamasına izin vererek SSRF güvenlik açığını ortaya çıkardığını unutmayın.
IronPDF URL Dönüştürme
// 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!");
}
}
}Imports IronPdf
Imports System
Namespace IronPdfExample
Class Program
Shared Sub Main(ByVal args As String())
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
Console.WriteLine("URL converted to PDF successfully!")
End Sub
End Class
End NamespaceIronPDF'nin RenderUrlAsPdf yöntemi, herhangi bir web çerçevesine bağımlı olmadan çalışır ve SSRF saldırılarını önleyen güvenlik kısıtlamalarına sahiptir.
Baslik ve Altbilgi Uygulamasi
Belge başlıkları ve altbilgileri, önemli API tasarım farklılıklarını gösterir.
Rotativa Başlıkları ve Altbilgileri
Rotativa, dize olarak geçirilen komut satırı anahtarlarını kullanır:
// 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]\""
};
}
}
}Imports Microsoft.AspNetCore.Mvc
Imports Rotativa.AspNetCore
Imports Rotativa.AspNetCore.Options
Imports System.Threading.Tasks
Namespace RotativaExample
Public Class HeaderFooterController
Inherits Controller
Public Async Function GeneratePdfWithHeaderFooter() As Task(Of IActionResult)
Return New ViewAsPdf("Report") With {
.PageSize = Size.A4,
.PageMargins = New Margins(20, 10, 20, 10),
.CustomSwitches = "--header-center ""Page Header"" --footer-center ""Page [page] of [toPage]"""
}
End Function
End Class
End NamespaceCustomSwitches ozelligi, wkhtmltopdf'ye duz komut satiri argumanlarini aktarir. Bu yaklaşım tür güvenliği, IntelliSense desteği ve derleme zamanı kontrolünden yoksundur. Anahtar sözdizimindeki hatalar yalnızca çalışma zamanında ortaya çıkar.
IronPDF Üst Bilgi ve Alt Bilgileri
IronPDF, başlık ve altbilgi yapılandırması için yazılı özellikler sağlar:
// 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!");
}
}
}Imports IronPdf
Imports IronPdf.Rendering
Imports System
Namespace IronPdfExample
Class Program
Shared Sub Main(ByVal args As String())
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Page Header",
.DrawDividerLine = True
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.CenterText = "Page {page} of {total-pages}",
.DrawDividerLine = True
}
Dim htmlContent = "<h1>Report Title</h1><p>Report content goes here.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("report.pdf")
Console.WriteLine("PDF with headers and footers created successfully!")
End Sub
End Class
End NamespaceIronPDF'nin TextHeaderFooter sınıfı, IntelliSense desteği, derleme zamanı tür kontrolü ve net özellik adları sağlar. Yer tutucu soz dizimi farkli: Rotativa, [page] ve [toPage] kullanirken IronPDF, {page} ve {total-pages} kullanir.
Yer Tutucu Söz Dizimi Referansı
| RotativaYer Tutucu | IronPDF Yer Tutucu |
|---|---|
[page] | {page} |
[topage] | {total-pages} |
[date] | {date} |
[time] | {time} |
[title] | {html-title} |
[sitepage] | {url} |
Özellik Karşılaştırma Matrisi
| Özellik | Rotativa | IronPDF |
|---|---|---|
| Güvenlik | Kritik CVE'ler (düzeltilmemiş) | Güvenlik açığı yok |
| HTML İşleme | Güncel olmayan WebKit (2012) | Modern Chromium |
| CSS3 | Kısmi destek | Desteklenir |
| Flexbox/Grid | Desteklenmiyor | Desteklenir |
| JavaScript | Güvenilmez | Tam ES6+ |
| ASP.NET Core | Sınırlı bağlantı noktaları | Doğal destek |
| Razor Sayfaları | Desteklenmiyor | Desteklenir |
| Blazor | Desteklenmiyor | Desteklenir |
| PDF Manipulasyonu | Mevcut değil | Desteklenir |
| Dijital İmzalar | Mevcut değil | Desteklenir |
| PDF/A Uyumluluğu | Mevcut değil | Desteklenir |
| Async/Await | Yalnızca eşzamanlı | Tam asenkron |
| Aktif Bakım | Terk edilmiş | Haftalık güncellemeler |
API Eslestirme Referansi
Rotativa'dan IronPDF'e geçişi değerlendiren ekipler, eşdeğer işlemlerin bu haritalandırmasına başvurabilir:
| RotativaSınıfı | IronPDF Eşdeğeri |
|---|---|
ViewAsPdf | ChromePdfRenderer |
ActionAsPdf | ChromePdfRenderer.RenderUrlAsPdf() |
UrlAsPdf | ChromePdfRenderer.RenderUrlAsPdf() |
Orientation enum | PdfPaperOrientation enum |
Size enum | PdfPaperSize enum |
Margins | RenderingOptions.Margin* |
CustomSwitches | RenderingOptions.* |
İş Parçacığı Sorunu
Rotativa, wkhtmltopdf'in iş parçacığı sınırlamalarını devralır:
//Rotativa- Blocks the thread
public ActionResult GeneratePdf()
{
return new ViewAsPdf("Report");
// This blocks the request thread until PDF is complete
// Poor scalability under load
}//Rotativa- Blocks the thread
public ActionResult GeneratePdf()
{
return new ViewAsPdf("Report");
// This blocks the request thread until PDF is complete
// Poor scalability under load
}'Rotativa- Blocks the thread
Public Function GeneratePdf() As ActionResult
Return New ViewAsPdf("Report")
' This blocks the request thread until PDF is complete
' Poor scalability under load
End FunctionIronPDF, tam asenkron destek sağlar:
//IronPDF-Tam asenkronsupport
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
}//IronPDF-Tam asenkronsupport
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
}Imports System.Threading.Tasks
Imports IronPdf
Public Async Function GeneratePdf() As Task(Of IActionResult)
Dim renderer As New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync(html)
Return File(pdf.BinaryData, "application/pdf")
' Non-blocking, better scalability
End FunctionRotativa'daki yalnızca senkron desen istek iş parçacıklarını engeller ve yük altındaki uygulama ölçeklenebilirliğini azaltır. IronPDF'nin asenkron desteği, yüksek verim senaryolarında daha iyi kaynak kullanımını sağlar.
Dağıtım Hususları
Rotativa, dağıtım ortamları arasında wkhtmltopdf ikili dosyalarını yönetmeyi gerektirir:
- x86/x64/Linux/Mac platformları için farklı ikili dosyalar
- Manuel PATH ortam yapılandırması
- Tüm ikili sürümlerde güvenlik açıkları
- Docker görüntülerinin wkhtmltopdf yüklemesini içermesi gerekir
IronPDF, dış ikili yönetim olmadan NuGet paketlemesi yoluyla dağıtımı basitleştirir.
TakımlarınRotativaGeçişini Düşündüğü Zaman
Bir dizi faktör, geliştirme ekiplerini Rotativa'ya alternatifleri değerlendirmeye iter:
Güvenlik gereksinimleri, CVE-2022-35583 için güvenlik tarayıcıları bayrak çektiğinde kritik hale gelir. Wkhtmltopdf asla yamalanmayacağından, güvenlik denetimlerine veya uyumluluk gereksinimlerine tabi olan kuruluşlar Rotativa'dan uzaklaşmalıdır.
Modern .NET kabulü, ekipler Razor Pages, Blazor veya minimal API'lere geçtiğinde uyumsuzluk yaratır. Rotativa'nın yalnızca MVC mimarisi bu modern desenleri destekleyemez.
CSS işleme sınırlamaları, tasarımlar Flexbox veya CSS Grid kullandığında belge kalitesini etkiler. Rotativa'nın 2012'den kalma WebKit motoru, bu düzenleri doğru bir şekilde işleyemez.
JavaScript güvenilirliği, dinamik içeriğin işlenmesini etkiler. Tarayıcılarda çalışan karmaşık JavaScript, genellikle wkhtmltopdf'nin sınırlı JavaScript desteğiyle başarısız olur veya yanlış şekilde işlenir.
Asenkron ölçeklenebilirlik, yüksek verim uygulamaları için önemlidir. Rotativa'nın yalnızca senkron deseni iş parçacıklarını engellerken,IronPDFdaha iyi kaynak kullanımı için tam async/await desteği sağlar.
Güçlü Yönler ve Tavizler
Rotativa'nın Güçlü Yönleri
- Basit MVC entegrasyonu temel kullanımlar için
- Açık kaynak (MIT Lisansı)
- Eski MVC uygulamaları için tanıdık desen
- Ticari lisanslama maliyeti yok
Rotativa'nın Sınırlamaları
- Yalnızca ASP.NET MVC—Razor Pages, Blazor veya minimal API'ler yok
- Terk edilmiş—güncellemeler veya bakım yok
- Asla yamalanmayacak kritik güvenlik açıkları
- Güncel olmayan WebKit işleme motoru (2012)
- Flexbox veya CSS Grid desteği yok
- Güvenilmez JavaScript yürütme
- Yalnızca senkron—kötü ölçeklenebilirlik
- PDF işleme yetenekleri yok
- Dijital imzalar veya PDF/A uyumluluğu yok
IronPDF'nin Gucleri
- Herhangi bir .NET proje türüyle çalışır
- Tam CSS3/JavaScript desteği ile modern Chromium işleme
- Düzenli güvenlik güncellemeleri ile aktif bakım
- Tam async/await desteği
- Kapsamlı PDF manipulation özellikleri
- Dijital imzalar ve güvenlik
- PDF/A arşiv uyumluluğu
- Profesyonel destek ve dökümantasyon
IronPDF dusunulecekler
- Ticari lisanslama modeli
- Lisans anahtarı başlatması gerektirir
Sonuç
Rotativa, aktif bakıldığında, ASP.NET MVC uygulamalarında PDF oluşturma için doğrudan bir çözüm sağladı. Bununla birlikte, kütüphanenin terkedilmesi, temelindeki wkhtmltopdf'de düzeltilmemiş kritik güvenlik açıkları ile birleşerek, üretim uygulamaları için önemli bir risk yaratıyor.
Rotativa'yı şu anda kullanan ekipler için, güvenlik açıkları, yalnızca MVC mimarisi ve güncel olmayan işleme yetenekleri kombinasyonu, alternatifleri değerlendirmek için ikna edici sebepler sunar. 2026'da .NET 10 ve C# 14'ü hedefleyen yeni projeler için Rotativa'nın mimarisi Razor Pages, Blazor veya minimal API'ler gibi modern desenleri destekleyemez.
IronPDF bu sınırlamaları modern bir Chromium işleme motoru, çapraz-platform .NET uyumluluğu, aktif bakım ve Rotativa'nın asla sunmadığı kapsamlı PDF manipülasyon yetenekleri ile çözer. Rotativa'dan IronPDF'ye gecis yolu, esas olarak MVC aksiyon sonuclarinin dogrudan ChromePdfRenderer cagirilari ile değiştirilmesini ve ustbilgi ile altbilgilerdeki yer tutucu soz diziminin güncellenmesini icerir.
Uygulama rehberliği için, IronPDF ASP.NET Core eğitimi ve modern .NET uygulamaları için PDF oluşturma örüntülerini kapsayan dökümantasyonu keşfedin.
