Przejdź do treści stopki
KORZYSTANIE Z IRONPDF

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.

View Full Comparison

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.

IronPDF vs iTextSharp MVC View to PDF File w C#: Obraz 1 - IronPDF

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.

IronPDF vs iTextSharp MVC View to PDF File w C#: Obraz 2 – Funkcje

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
SHELL

IronPDF vs iTextSharp MVC View to PDF File w C#: Obraz 3 - Zainstaluj 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
$vbLabelText   $csharpLabel

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

IronPDF vs iTextSharp MVC View to PDF File w C#: Obraz 4 – Wynik w formacie PDF

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.

IronPDF vs iTextSharp MVC View to PDF File w C#: Obraz 5 - IronPDF vs iTextSharp MVC View to PDF

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
SHELL

IronPDF vs iTextSharp MVC View to PDF File w C#: Ilustracja 6 – Instalacja

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
$vbLabelText   $csharpLabel

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

IronPDF vs iTextSharp MVC View to PDF File w C#: Obraz 7 – Wynik IronPDF

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

IronPDF vs iTextSharp MVC View to PDF File w C#: Ilustracja 8 – Kompatybilność międzyplatformowa

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

Porównanie funkcji iTextSharp i IronPDF
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#.

IronPDF vs iTextSharp MVC View to PDF File w C#: Obraz 9 - Licencjonowanie

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>"
        }
    }
}
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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

IronPDF vs iTextSharp MVC View to PDF File w C#: Obraz 10 – Bezpieczne generowanie plików PDF

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)
$vbLabelText   $csharpLabel

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

IronPDF vs iTextSharp MVC View to PDF File w C#: Obraz 11 – Wynik formularza

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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

IronPDF vs iTextSharp MVC View to PDF File w C#: Obraz 12 – Wynik wykonania kodu JavaScript

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:

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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie