Jak przekonwertować widoki ASP.NET MVC na PDF: IronPDF vs iTextSharp
Full Comparison
Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.
Konwersja widoków ASP.NET MVC do dokumentów PDF jest podstawowym wymogiem w nowoczesnych aplikacjach internetowych. Niezależnie od tego, czy generujesz faktury, raporty czy certyfikaty, wyzwanie jest jasne: jak przekształcić widoki Razor w profesjonalne pliki PDF, zachowując formatowanie i styl? W niniejszym przewodniku porównano starszą bibliotekę iTextSharp z IronPDF — nowoczesnym rozwiązaniem opartym na silniku Chromium — aby umożliwić wybór odpowiedniego narzędzia do generowania plików PDF.

Dlaczego warto konwertować widoki MVC do formatu PDF?
Firmy polegają na generowaniu plików PDF w niezliczonych kluczowych operacjach. Systemy fakturowania wymagają dokumentów rozliczeniowych zabezpieczonych przed fałszerstwem. Działy kadr generują świadectwa pracy i umowy. Zespoły sprzedaży przygotowują oferty i propozycje. Platformy edukacyjne wydają certyfikaty ukończenia. Każdy scenariusz wymaga generowania plików PDF po stronie serwera, które zachowuje spójne formatowanie na wszystkich urządzeniach i platformach.
Zgodnie z dokumentacją .NET Core, widoki Razor stanowią doskonały system szablonów do generowania treści dynamicznych, które można następnie przekonwertować do formatu PDF. Kluczowe pytanie brzmi: która biblioteka zapewnia najbardziej dokładne, łatwe w utrzymaniu i zgodne z prawem rozwiązanie.

W jaki sposób iTextSharp obsługuje konwersję MVC do PDF?
iTextSharp od ponad dziesięciu lat jest podstawowym narzędziem do generowania plików PDF w środowisku .NET. Pierwotnie przeniesiona z biblioteki Java iText, zapewnia niskopoziomową kontrolę nad tworzeniem plików PDF. Jednak podejście do konwersji HTML wskazuje na jego wiek, szczególnie w przypadku nowoczesnych treści internetowych.
Instalacja iTextSharp
Aby dodać iTextSharp do projektu ASP.NET Core MVC, zainstaluj pakiet NuGet za pomocą konsoli menedżera pakietów:
Install-Package iTextSharp
Install-Package iTextSharp

Podstawowa implementacja z wykorzystaniem iTextSharp
Oto kompletny przykład pokazujący, jak przekonwertować widok MVC do formatu PDF przy użyciu klasy XMLWorkerHelper biblioteki iTextSharp w projekcie ASP.NET MVC:
using iTextSharp.text;
using iTextSharp.tool.xml;
using iTextSharp.text.pdf;
using System.IO;
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult GeneratePDF()
{
// Create a simple invoice HTML
string invoiceHtml = @"
<h1>Invoice #1001</h1>
<p>Date: " + DateTime.Niew.ToString("MM/dd/yyyy") + @"</p>
<table border='1'>
<tr><th>Item</th><th>Price</th></tr>
<tr><td>Product A</td><td>$99.99</td></tr>
<tr><td>Product B</td><td>$149.99</td></tr>
</table>
<p><strong>Total: $249.98</strong></p>";
// Create PDF document using iTextSharp
using var stream = new MemoryStream();
var document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();
using (var srHtml = new StringReader(invoiceHtml))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, srHtml);
}
document.Close();
// Return the PDF file
return new FileContentResult(stream.ToArray(), "application/pdf")
{
FileDownloadName = "invoice.pdf"
};
}
}
using iTextSharp.text;
using iTextSharp.tool.xml;
using iTextSharp.text.pdf;
using System.IO;
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult GeneratePDF()
{
// Create a simple invoice HTML
string invoiceHtml = @"
<h1>Invoice #1001</h1>
<p>Date: " + DateTime.Niew.ToString("MM/dd/yyyy") + @"</p>
<table border='1'>
<tr><th>Item</th><th>Price</th></tr>
<tr><td>Product A</td><td>$99.99</td></tr>
<tr><td>Product B</td><td>$149.99</td></tr>
</table>
<p><strong>Total: $249.98</strong></p>";
// Create PDF document using iTextSharp
using var stream = new MemoryStream();
var document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();
using (var srHtml = new StringReader(invoiceHtml))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, srHtml);
}
document.Close();
// Return the PDF file
return new FileContentResult(stream.ToArray(), "application/pdf")
{
FileDownloadName = "invoice.pdf"
};
}
}
Imports iTextSharp.text
Imports iTextSharp.tool.xml
Imports iTextSharp.text.pdf
Imports System.IO
Public Class HomeController
Inherits Controller
Public Function Index() As ActionResult
Return View()
End Function
Public Function GeneratePDF() As ActionResult
' Create a simple invoice HTML
Dim invoiceHtml As String = "
<h1>Invoice #1001</h1>
<p>Date: " & DateTime.Now.ToString("MM/dd/yyyy") & "</p>
<table border='1'>
<tr><th>Item</th><th>Price</th></tr>
<tr><td>Product A</td><td>$99.99</td></tr>
<tr><td>Product B</td><td>$149.99</td></tr>
</table>
<p><strong>Total: $249.98</strong></p>"
' Create PDF document using iTextSharp
Using stream As New MemoryStream()
Dim document As New Document(PageSize.A4)
Dim writer As PdfWriter = PdfWriter.GetInstance(document, stream)
document.Open()
Using srHtml As New StringReader(invoiceHtml)
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, srHtml)
End Using
document.Close()
' Return the PDF file
Return New FileContentResult(stream.ToArray(), "application/pdf") With {
.FileDownloadName = "invoice.pdf"
}
End Using
End Function
End Class
Ten przykład tworzy podstawowy dokument PDF na podstawie treści HTML. Klasa XMLWorkerHelper przetwarza ciąg znaków HTML i dodaje elementy do dokumentu PDF przy użyciu modelu obiektowego. PdfWriter obsługuje rzeczywisty proces generowania pliku PDF, natomiast Document zarządza strukturą strony.
Wynik

Jakie są główne ograniczenia iTextSharp?
Klasa XMLWorkerHelper obsługuje podstawowe tagi HTML i wbudowany CSS. Niewoczesne właściwości CSS3, układy flexbox i systemy siatek nie są renderowane. Treści zależne od JavaScriptu znikają całkowicie. Złożone style, takie jak gradienty, cienie i transformacje, są ignorowane. Nawet standardowe klasy Bootstrap nie mają tu zastosowania, przez co starannie zaprojektowane widoki wyglądają na proste i nieprofesjonalne.
Wielu programistów zgłaszało te ograniczenia na Stack Overflow, co prowadziło do frustracji podczas próby konwersji widoków MVC do formatu PDF za pomocą iTextSharp.
Być może bardziej niepokojący jest model licencyjny iTextSharp. Biblioteka korzysta z licencji AGPL, która wymaga udostępnienia całej aplikacji na zasadach open source w przypadku korzystania z wersji darmowej. Ceny licencji komercyjnych zaczynają się od kilku tysięcy dolarów rocznie, co dla wielu firm jest zbyt wysokim kosztem. To ograniczenie licencyjne skłoniło wielu programistów do poszukiwania alternatyw, które lepiej odpowiadają potrzebom komercyjnego programowania. Jak wspomniano w dokumentacji platformy .NET firmy Microsoft, wybór bibliotek z odpowiednimi licencjami ma kluczowe znaczenie dla projektów komercyjnych.

Jak przekonwertować widoki MVC do formatu PDF za pomocą nowoczesnej biblioteki?
IronPDF to nowoczesne podejście do generowania plików PDF w ASP.NET Core MVC. Oparty na silniku renderującym Chromium, konwertuje HTML do formatu PDF dokładnie tak, jak wygląda w przeglądarce Google Chrome, zachowując wszystkie style, wykonanie kodu JavaScript oraz elementy responsywnego projektu.
Jak zainstalować IronPDF?
Dodaj IronPDF do swojego projektu za pomocą konsoli NuGet Package Manager:
Install-Package IronPdf
Install-Package IronPdf

Niewoczesna implementacja z wykorzystaniem IronPDF
Ta sama faktura, utworzona powyżej, wykorzystuje teraz nowoczesny CSS i pełne renderowanie HTML5 za pomocą ChromePdfRenderer firmy IronPDF:
using IronPdf;
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult GenerateModernPDF()
{
// Create a styled invoice HTML with modern CSS
string invoiceHtml = @"
<style>
body { font-family: 'Segoe UI', Arial; padding: 40px; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
th {
background-color: #f3f4f6;
padding: 12px;
text-align: left;
}
td {
padding: 12px;
border-bottom: 1px solid #e5e7eb;
}
.total {
font-size: 24px;
color: #10b981;
text-align: right;
margin-top: 20px;
}
</style>
<div class='invoice-header'>
<h1>Invoice #1001</h1>
<p>Date: " + DateTime.Niew.ToString("MMMM dd, yyyy") + @"</p>
</div>
<table>
<tr><th>Item</th><th>Quantity</th><th>Price</th></tr>
<tr><td>Premium Package</td><td>1</td><td>$99.99</td></tr>
<tr><td>Professional Services</td><td>2</td><td>$149.99</td></tr>
</table>
<div class='total'>Total: $249.98</div>
<p>Page numbers and additional content can be added to each page.</p>";
// Use Chromium engine for rendering
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(invoiceHtml);
// Set content disposition for download
Response.Headers.Append("Content-Disposition", "attachment; filename=modern-invoice.pdf");
// Return the PDF file with binary data
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
using IronPdf;
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult GenerateModernPDF()
{
// Create a styled invoice HTML with modern CSS
string invoiceHtml = @"
<style>
body { font-family: 'Segoe UI', Arial; padding: 40px; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
th {
background-color: #f3f4f6;
padding: 12px;
text-align: left;
}
td {
padding: 12px;
border-bottom: 1px solid #e5e7eb;
}
.total {
font-size: 24px;
color: #10b981;
text-align: right;
margin-top: 20px;
}
</style>
<div class='invoice-header'>
<h1>Invoice #1001</h1>
<p>Date: " + DateTime.Niew.ToString("MMMM dd, yyyy") + @"</p>
</div>
<table>
<tr><th>Item</th><th>Quantity</th><th>Price</th></tr>
<tr><td>Premium Package</td><td>1</td><td>$99.99</td></tr>
<tr><td>Professional Services</td><td>2</td><td>$149.99</td></tr>
</table>
<div class='total'>Total: $249.98</div>
<p>Page numbers and additional content can be added to each page.</p>";
// Use Chromium engine for rendering
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(invoiceHtml);
// Set content disposition for download
Response.Headers.Append("Content-Disposition", "attachment; filename=modern-invoice.pdf");
// Return the PDF file with binary data
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
Imports IronPdf
Public Class HomeController
Inherits Controller
Public Function Index() As ActionResult
Return View()
End Function
Public Function GenerateModernPDF() As ActionResult
' Create a styled invoice HTML with modern CSS
Dim invoiceHtml As String = "
<style>
body { font-family: 'Segoe UI', Arial; padding: 40px; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
th {
background-color: #f3f4f6;
padding: 12px;
text-align: left;
}
td {
padding: 12px;
border-bottom: 1px solid #e5e7eb;
}
.total {
font-size: 24px;
color: #10b981;
text-align: right;
margin-top: 20px;
}
</style>
<div class='invoice-header'>
<h1>Invoice #1001</h1>
<p>Date: " & DateTime.Now.ToString("MMMM dd, yyyy") & "</p>
</div>
<table>
<tr><th>Item</th><th>Quantity</th><th>Price</th></tr>
<tr><td>Premium Package</td><td>1</td><td>$99.99</td></tr>
<tr><td>Professional Services</td><td>2</td><td>$149.99</td></tr>
</table>
<div class='total'>Total: $249.98</div>
<p>Page numbers and additional content can be added to each page.</p>"
' Use Chromium engine for rendering
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(invoiceHtml)
' Set content disposition for download
Response.Headers.Append("Content-Disposition", "attachment; filename=modern-invoice.pdf")
' Return the PDF file with binary data
Return New FileContentResult(pdf.BinaryData, "application/pdf")
End Function
End Class
ChromePdfRenderer konwertuje kod HTML dokładnie tak, jak wyświetlałby go Chrome. Tła z gradientem, nowoczesne czcionki i wyrafinowana stylistyka są renderowane poprawnie. Renderer obsługuje złożone właściwości CSS, których iTextSharp nie jest w stanie przetworzyć, w tym flexbox, układy siatki oraz transformacje CSS renderowane jako statyczne ramki. Metoda RenderHtmlAsPdf sprawia, że konwersja HTML do PDF w MVC jest prosta.
Wynik

Rozpocznij bezpłatny okres próbny i poznaj nowoczesne generowanie plików PDF dzięki silnikowi renderowania opartemu na przeglądarce Chrome.

Jak wybrać między tymi dwiema bibliotekami PDF?
Porównując biblioteki iTextSharp i IronPDF for .NET pod kątem konwersji widoków w .NET MVC, można dostrzec kilka czynników wyraźnie odróżniających te biblioteki w zakresie jakości renderowania, doświadczenia programistów oraz licencji.
Porównanie funkcji
| Funkcja | iTextSharp | IronPDF |
|---|---|---|
| Wsparcie HTML5 | Ograniczone | Pełna |
| Renderowanie CSS3 | Tylko podstawowe | Zakończ |
| Wykonanie JavaScript | Nie | Tak |
| Obsługa Flexbox/Grid | Nie | Tak |
| Zgodność z Bootstrap | Częściowe | Pełna |
| Obsługa czcionek internetowych | Ograniczone | Zakończ |
| Grafika SVG | Nie | Tak |
| Responsywny projekt | Nie | Tak |
| Złożoność API | Niski poziom | Ogólny |
Kwestie licencyjne
Różnice w licencjonowaniu tych bibliotek mają znaczący wpływ na komercyjne tworzenie oprogramowania. Licencja AGPL iTextSharp nakłada zobowiązania prawne, których wiele firm nie może zaakceptować. Korzystanie z wersji darmowej wymaga udostępnienia całej aplikacji na licencji open source, w tym zastrzeżonej logiki biznesowej. To ograniczenie sprawia, że iTextSharp nie nadaje się do większości projektów komercyjnych, chyba że zakupisz kosztowną licencję komercyjną.
IronPDF oferuje proste licencje komercyjne już od $799 dla pojedynczego programisty. Licencja obejmuje rok aktualizacji i wsparcia technicznego, bez obowiązku udostępniania aplikacji na licencji open source. Ten przejrzysty model cenowy jest dostosowany do typowych budżetów na tworzenie oprogramowania, dzięki czemu profesjonalne generowanie plików PDF jest dostępne dla firm każdej wielkości podczas konwersji widoków MVC do formatu PDF w języku C#.

Analiza jakości wyników
Różnica w jakości renderowania staje się natychmiast widoczna po porównaniu wyników. iTextSharp generuje proste pliki PDF, które przypominają dokumenty z początku XXI wieku. Tabele nie mają odpowiedniego stylu, czcionki domyślnie przyjmują standardy systemowe, a nowoczesne elementy projektu całkowicie znikają. Powstałe pliki PDF wyglądają nieprofesjonalnie i nie pasują do wizerunku marki Twojej aplikacji.
IronPDF generuje pliki PDF o idealnej rozdzielczości, które pasują do Twojego projektu strony internetowej. Gradienty są renderowane dokładnie, niestandardowe czcionki wyświetlają się poprawnie, a złożone układy zachowują swoją strukturę. Silnik Chromium zapewnia, że pliki PDF wyglądają identycznie jak w widoku internetowym, zachowując tożsamość marki i profesjonalny wygląd we wszystkich generowanych dokumentach.
Jakie zaawansowane funkcje oferuje PDF Renderer?
Oprócz podstawowej konwersji HTML, IronPDF oferuje funkcje klasy Enterprise, które przyspieszają profesjonalne tworzenie plików PDF. Pełna dokumentacja API pokazuje szerokie możliwości biblioteki w zakresie konwersji widoków MVC do formatu PDF.
Nagłówki i stopki
Dodaj profesjonalne nagłówki i stopki z dynamiczną treścią:
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
HtmlHeader = new HtmlHeaderFooter
{
MaxHeight = 25,
HtmlFragment = "<div style='text-align: center'>Company Name</div>"
},
HtmlFooter = new HtmlHeaderFooter
{
MaxHeight = 20,
HtmlFragment = "<center>Page {page} of {total-pages}</center>"
}
}
};
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
HtmlHeader = new HtmlHeaderFooter
{
MaxHeight = 25,
HtmlFragment = "<div style='text-align: center'>Company Name</div>"
},
HtmlFooter = new HtmlHeaderFooter
{
MaxHeight = 20,
HtmlFragment = "<center>Page {page} of {total-pages}</center>"
}
}
};
Dim renderer = New ChromePdfRenderer With {
.RenderingOptions = New ChromePdfRenderOptions With {
.HtmlHeader = New HtmlHeaderFooter With {
.MaxHeight = 25,
.HtmlFragment = "<div style='text-align: center'>Company Name</div>"
},
.HtmlFooter = New HtmlHeaderFooter With {
.MaxHeight = 20,
.HtmlFragment = "<center>Page {page} of {total-pages}</center>"
}
}
}
Ta konfiguracja zapewnia spójny wizerunek marki na każdej stronie. Symbole zastępcze {page} i {total-pages} są automatycznie wypełniane prawidłowymi wartościami, co zapewnia dokładną paginację w całym dokumencie. Aby uzyskać więcej opcji konfiguracyjnych, zapoznaj się z przewodnikiem dotyczącym nagłówków i stopek.
Bezpieczeństwo i szyfrowanie
Chroń poufne dokumenty za pomocą haseł i uprawnień, korzystając z funkcji bezpieczeństwa IronPDF:
var pdf = renderer.RenderHtmlAsPdf(html);
// Add password protection
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
// Set permissions
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.PełnaPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
var pdf = renderer.RenderHtmlAsPdf(html);
// Add password protection
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
// Set permissions
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.PełnaPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Add password protection
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
' Set permissions
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.PełnaPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False
Te ustawienia zabezpieczeń zapobiegają nieautoryzowanemu dostępowi i kontrolują sposób, w jaki odbiorcy mogą korzystać z plików PDF po konwersji widoków MVC do formatu PDF. Możesz ograniczyć drukowanie, kopiowanie i edycję, zachowując pełną kontrolę właściciela. Więcej informacji można znaleźć w dokumentacji dotyczącej zabezpieczeń w formacie PDF.
Wynik

Obsługa pól formularzy
IronPDF konwertuje formularze HTML na interaktywne formularze PDF bez konieczności stosowania dodatkowych narzędzi:
string formHtml = @"
<form>
<label>Name:</label>
<input type='checkbox'> Accept Terms
<select name='country'>
<option>USA</option>
<option>Canada</option>
</select>
</form>";
var pdf = renderer.RenderHtmlAsPdf(formHtml);
string formHtml = @"
<form>
<label>Name:</label>
<input type='checkbox'> Accept Terms
<select name='country'>
<option>USA</option>
<option>Canada</option>
</select>
</form>";
var pdf = renderer.RenderHtmlAsPdf(formHtml);
Imports System
Dim formHtml As String = "
<form>
<label>Name:</label>
<input type='checkbox'> Accept Terms
<select name='country'>
<option>USA</option>
<option>Canada</option>
</select>
</form>"
Dim pdf = renderer.RenderHtmlAsPdf(formHtml)
Wynikowy plik PDF zachowuje interaktywność formularza, umożliwiając użytkownikom wypełnianie pól bezpośrednio w czytniku PDF. Ta funkcja eliminuje potrzebę stosowania oddzielnych narzędzi do tworzenia formularzy, upraszczając przepływ pracy z dokumentami. Zapoznaj się z dokumentacją formularzy, aby poznać dalsze opcje.
Wynik

Jak rozwiązać typowe problemy związane z generowaniem plików PDF?
Nawet w przypadku nowoczesnych bibliotek niektóre wyzwania wymagają konkretnych rozwiązań, aby zapewnić optymalny wynik w formacie PDF. Poniższe wzorce dotyczą najczęstszych problemów, z jakimi borykają się programiści podczas konwersji widoków MVC do formatu PDF.
Optymalizacja renderowania CSS
Aby uzyskać najlepsze wyniki przy złożonym CSS podczas konwersji plików HTML do formatu PDF, użyj zapytań o media drukowane:
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
To ustawienie stosuje reguły CSS specyficzne dla druku, optymalizując układy pod kątem wydruku PDF, a nie wyświetlania na ekranie. Połączenie tego z arkuszami stylów zoptymalizowanymi pod kątem druku zapewnia precyzyjną kontrolę nad podziałami stron, marginesami i typografią. Przewodnik po typach mediów CSS wyjaśnia dodatkowe opcje renderowania.
Czas wykonywania kodu JavaScript
Podczas konwersji treści dynamicznych należy poczekać na zakończenie wykonywania kodu JavaScript przed zapisaniem pliku PDF. Gwarantuje to, że wszystkie wywołania AJAX i operacje na DOM zostaną zakończone:
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // milliseconds
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // milliseconds
Ta konfiguracja gwarantuje, że wywołania AJAX zostaną zakończone, a operacje na DOM zakończą się przed rozpoczęciem generowania pliku PDF, co pozwala uchwycić w pełni wyrenderowany stan widoku MVC. W przypadku bibliotek wykresów i innych treści intensywnie wykorzystujących asynchroniczność może być konieczne zwiększenie wartości opóźnienia.
Wynik

Osadzanie czcionek i formatowanie dokumentów
Upewnij się, że niestandardowe czcionki wyświetlają się poprawnie, osadzając je bezpośrednio w kodzie HTML za pomocą adresów URI danych zakodowanych w base64:
@font-face {
font-family: 'CustomFont';
src: url(data:font/woff2;base64,[base64-encoded-font]) format('woff2');
}
Osadzenie czcionek bezpośrednio w kodzie HTML gwarantuje spójne renderowanie we wszystkich środowiskach, eliminując problemy z brakującymi czcionkami w generowanych dokumentach PDF. To podejście sprawdza się równie dobrze, niezależnie od tego, czy używasz renderowania opartego na adresie URL za pomocą RenderUrlAsPdf, czy renderowania opartego na ciągu znaków za pomocą RenderHtmlAsPdf.
Aby uzyskać informacje na temat dodatkowych wzorców konfiguracji, w tym rozmiaru strony, orientacji i kontroli marginesów, zapoznaj się z dokumentacją opcji renderowania IronPDF. Możesz również przejrzeć przykładowe projekty na GitHubie, które pokazują typowe wzorce integracji MVC.
Jakie są Twoje kolejne kroki?
Chociaż iTextSharp przez wiele lat dobrze służył społeczności .NET, współczesne tworzenie stron internetowych wymaga bardziej zaawansowanego generowania plików PDF. Silnik renderujący IronPDF oparty na przeglądarce Chrome zapewnia idealną dokładność pikselową i pełną obsługę CSS3, których wymagają dzisiejsze aplikacje ASP.NET MVC. Jego zaawansowany interfejs API, obszerna dokumentacja i przyjazne dla biznesu licencje sprawiają, że jest to praktyczny wybór dla projektów ASP.NET Core MVC.
Aby poszerzyć możliwości generowania plików PDF w swojej aplikacji:
- Pobierz bezpłatną wersję próbną i uruchom przykłady kodu z tego przewodnika we własnym projekcie
- Zapoznaj się z dokumentacją API IronPDF, aby poznać pełen zestaw funkcji
- Sprawdź poradniki dotyczące znaków wodnych, podpisów cyfrowych i łączenia plików PDF
- Zapoznaj się z opcjami licencyjnymi, aby znaleźć plan odpowiedni dla swojego zespołu
- Zapoznaj się z blogiem IronPDF, aby uzyskać więcej samouczków dotyczących manipulacji plikami PDF w środowisku .NET
Często Zadawane Pytania
Jaki jest cel konwersji widoków MVC do formatu PDF?
Konwersja widoków MVC do formatu PDF pozwala programistom generować dokumenty nadające się do druku i łatwe do udostępniania bezpośrednio z aplikacji internetowych, zachowując układ i wygląd oryginalnego widoku.
Czym jest IronPDF?
IronPDF to biblioteka .NET, która ułatwia tworzenie, edycję i konwersję dokumentów PDF w aplikacjach .NET, oferując łatwy sposób na integrację funkcji PDF.
W jaki sposób IronPDF upraszcza konwersję widoków MVC do formatu PDF?
IronPDF upraszcza ten proces, umożliwiając programistom renderowanie widoków HTML i MVC bezpośrednio do formatu PDF bez konieczności pisania rozbudowanego kodu, zachowując przy tym oryginalny układ i wygląd.
Jakie są ograniczenia iTextSharp w zakresie konwersji plików PDF w MVC?
XMLWorkerHelper firmy iTextSharp nie obsługuje nowoczesnego CSS3, flexboxu, układów siatki, wykonywania kodu JavaScript ani stylów Bootstrap. Licencja AGPL wymaga również udostępnienia kodu źródłowego aplikacji, jeśli korzystasz z wersji darmowej.
Czy IronPDF może renderować JavaScript przed wygenerowaniem pliku PDF?
Tak, IronPDF obsługuje wykonywanie kodu JavaScript podczas renderowania. Można je włączyć za pomocą metody EnableJavaScript i kontrolować opóźnienie renderowania za pomocą WaitFor.RenderDelay, aby zapewnić pełne załadowanie treści dynamicznych.
Jakie są wymagania systemowe dotyczące korzystania z IronPDF?
IronPDF obsługuje .NET 6, .NET 7, .NET 8, .NET Core oraz .NET Framework 4.6.2+. Działa na systemach Windows, Linux i macOS.
Czy można dostosować plik PDF podczas konwersji widoków MVC?
Tak, korzystając z IronPDF, programiści mogą dostosować wygląd pliku PDF, zmieniając takie ustawienia jak rozmiar strony, orientacja, marginesy, nagłówki, stopki, ustawienia zabezpieczeń oraz typ mediów CSS.
Czy IronPDF obsługuje stylizację CSS podczas konwersji plików PDF?
IronPDF obsługuje pełne style CSS3 dzięki silnikowi renderującemu Chromium, co gwarantuje, że przekonwertowany plik PDF zachowuje wygląd oryginalnego widoku HTML lub MVC, w tym czcionki, kolory, gradienty i układ.
Jak wydajność IronPDF wypada w porównaniu z iTextSharp?
IronPDF wykorzystuje silnik Chromium do renderowania, co zwiększa obciążenie podczas uruchamiania, ale zapewnia znacznie wyższą dokładność renderowania. W przypadku scenariuszy wymagających przetwarzania dużych ilości danych IronPDF obsługuje renderowanie asynchroniczne i może być zoptymalizowany za pomocą instancji renderera bezpiecznych dla wątków.
Gdzie mogę znaleźć dokumentację dotyczącą IronPDF?
Pełna dokumentacja IronPDF jest dostępna na stronie https://ironpdf.com/how-to/ i zawiera przewodniki, samouczki oraz Dokumentację API, która pomoże programistom w wdrożeniu.




