Przejdź do treści stopki
KORZYSTANIE Z IRONPDF

Jak przekonwertować PDF na tablicę bajtów w C#

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? Ten przewodnik porównuje przestarzałą bibliotekę iText z IronPDF — nowoczesnym rozwiązaniem opartym na Chromium — abyś mógł wybrać odpowiednie narzędzie do swojego przepływu pracy przy generowaniu PDF.

IronPDF vs iText MVC View to PDF File in C#: Image 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 iText MVC View to PDF File in C#: Obraz 2 - Funkcje

Jak iText radzi sobie z konwersją MVC do PDF?

iText był fundamentem w generowaniu PDF w .NET przez ponad dekadę. 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 iText

Aby dodac iText do projektu ASP.NET Core MVC, zainstaluj pakiet NuGet uzywajac Konsoli Menedzera Pakietów:

Install-Package iTextSharp
Install-Package iTextSharp
SHELL

IronPDF vs iText MVC View to PDF File in C#: Image 3 - Install iText

Podstawowa implemantacja z iText

Oto pełny przykład pokazujący, jak przekonwertować widok MVC na PDF, używając klasy XMLWorkerHelper iText 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 HTML i dodaje elementy do dokumentu PDF, używając modelu obiektowego. Klasa PdfWriter obsługuje właściwy proces generowania PDF, podczas gdy Document zarządza strukturą strony.

Wynik

IronPDF vs iText MVC View to PDF File in C#: Obraz 4 - Wyjście PDF

Jakie są kluczowe ograniczenia iText?

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 zglasza te ograniczenia na Stack Overflow, co prowadzi do frustracji podczas prób konwersji widoków MVC na PDF za pomocą iText.

Być może bardziej niepokojący jest model licencyjny iText. 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 iText MVC View to PDF File in C#: Image 5 - IronPDF vs iText 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

IronPDF vs iText MVC View to PDF File in C#: Image 6 - Installation

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 HTML dokładnie tak, jak wyświetliłby to Chrome. Tła z gradientem, nowoczesne czcionki i wyrafinowana stylistyka są renderowane poprawnie. Silnik renderowania obsługuje złożone właściwości CSS, które iText nie może przetworzyć, w tym flexbox, układy siatki i transformacje CSS renderowane jako statyczne klatki. RenderHtmlAsPdf metoda sprawia, że konwersja HTML na PDF w MVC jest prosta.

Wynik

IronPDF vs iText MVC View to PDF File in C#: Obraz 7 - Wyjście IronPDF

Bezpłatna próba i poznaj nowoczesne generowanie plików PDF dzięki silnikowi renderowania opartemu na przeglądarce Chrome.

IronPDF vs iText MVC View to PDF File in C#: Obraz 8 - Kompatybilność międzyplatformowa

Jak wybrać między tymi dwiema bibliotekami PDF?

Porównując iText i IronPDF w przypadku konwersji widoków MVC w .NET, kilka czynników wyraźnie odróżnia te biblioteki pod kątem jakości renderowania, doświadczenia dewelopera i licencjonowania.

Porównanie funkcji

Porównanie funkcji iText i IronPDF
Funkcja iText 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 iText tworzy 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 iText nie nadaje się do większości projektów komercyjnych, chyba że zakupisz kosztowną licencję komercyjną.

IronPDF oferuje proste licencjonowanie komercyjne zaczynając od $999 dla jednego dewelopera. 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 iText MVC View to PDF File in C#: Image 9 - Licensing

Analiza jakości wyników

Różnica w jakości renderowania staje się natychmiast widoczna po porównaniu wyników. iText produkuje podstawowe PDF, które przypominają dokumenty z początku lat 2000. 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. Podstawiciele {page} i {total-pages} automatycznie uzupełniają się poprawnymi wartościami, zapewniając dokładne paginowanie 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.FullPrintRights;
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.FullPrintRights;
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.FullPrintRights
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 iText MVC View to PDF File in C#: Obraz 10 - Bezpieczne Wyjście 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. Przeglądaj dokumentację formularzy dla dalszych opcji.

Wynik

IronPDF vs iText MVC View to PDF File in C#: Obraz 11 - Wyjście 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 iText MVC View to PDF File in C#: Obraz 12 - Wyjście wykonania 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 działa równie dobrze, niezależnie od tego, czy użyjesz renderowania opartego na URL przez RenderUrlAsPdf, czy renderowania opartego na ciągu przez 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ż iText dobrze służył społeczności .NET przez wiele lat, nowoczesne tworzenie stron internetowych wymaga bardziej efektywnego generowania 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

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie