Przejdź do treści stopki
KORZYSTANIE Z IRONPDF

Jak scalać pliki PDF w .NET

IronPDF konwertuje HTML na PDF w ASP.NET przy użyciu silnika renderującego opartego na przeglądarce Chrome, który przekształca ciągi HTML, pliki lub adresy URL w dokumenty PDF o idealnej rozdzielczości za pomocą zaledwie kilku wierszy kodu C#.

Gdy aplikacja ASP.NET musi generować faktury, raporty lub dokumenty zgodności na żądanie, jakość pliku PDF ma znaczenie. Użytkownicy końcowi oczekują sformatowanego wyniku, który wygląda dokładnie tak samo jak oryginalny kod HTML — wraz ze stylami CSS, niestandardowymi czcionkami i układami tabel. Wyzwaniem jest znalezienie biblioteki, która poradzi sobie z tą konwersją bez konieczności stosowania skomplikowanych obejść w przypadku nowoczesnych treści opartych na CSS lub JavaScript.

IronPDF to biblioteka PDF w języku C# stworzona specjalnie na potrzeby tego wyzwania. Jego silnik renderujący oparty na Chrome przetwarza HTML w taki sam sposób, jak prawdziwa przeglądarka, co oznacza, że właściwości CSS3, zapytania o media oraz treści renderowane przez JavaScript wyświetlają się poprawnie w końcowym dokumencie. Poniższe sekcje omawiają instalację, trzy podstawowe metody renderowania, obsługę danych formularzy, zaawansowane funkcje formatowania oraz obsługę uwierzytelniania — wszystko, co jest potrzebne do zintegrowania gotowego do produkcji generowania plików PDF z aplikacją .NET Core.

Jak szybko przekonwertować HTML na PDF w ASP.NET Core?

Rozpoczęcie konwersji HTML do PDF w ASP.NET Core wymaga zaledwie kilku wierszy kodu. Najpierw zainstaluj IronPDF za pomocą menedżera pakietów NuGet:

Install-Package IronPdf

Po zainstalowaniu, klasa ChromePdfRenderer jest glownym punktem wejscia dla wszystkich operacji renderowania. Oto kompletny przykład pokazujący, jak przekonwertować ciąg znaków HTML na plik PDF do pobrania w kontrolerze ASP.NET Core MVC:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf
  2. Skopiuj i uruchom ten fragment kodu.

    using IronPdf;
    using Microsoft.AspNetCore.Mvc;
    
    // program.cs
    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddControllersWithViews();
    var app = builder.Build();
    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    app.Run();
    
    // PdfController.cs
    public class PdfController : Controller
    {
        public IActionResult GeneratePdf()
        {
            var renderer = new ChromePdfRenderer();
            string html = @"
                <h1>Invoice #2024-001</h1>
                <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
                <table>
                    <tr><th>Item</th><th>Price</th></tr>
                    <tr><td>Professional License</td><td>$999</td></tr>
                </table>";
            var pdf = renderer.RenderHtmlAsPdf(html);
            return File(pdf.BinaryData, "application/pdf", "invoice.pdf");
        }
    }
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Jak wygląda wygenerowany plik PDF?

Podglad PDF pokazujacy prosty dokument faktury z numerem #2024-001, zawierajacy naglowek faktury, date generowania oraz tabele z kolumnami Przedmiot i Cena, zawierajacymi wpis Licencja Professional dla $999

Klasa ChromePdfRenderer obsługuje wszystkie złożone operacje renderowania, zapewniając prawidłowe wyświetlenie struktury HTML, stylów CSS, a nawet kodu JavaScript w końcowym pliku PDF. Zwracana wartosc to obiekt PdfDocument, ktorego wlasciwosc BinaryData moze byc przesylana bezposrednio do przegladarki jako pobranie pliku.

Jak wybrać odpowiednią metodę renderowania dla danego źródła?

IronPDF oferuje trzy podstawowe metody renderowania, z których każda jest przeznaczona dla konkretnego źródła treści. Zrozumienie, która metoda pasuje do danego scenariusza, pozwala uniknąć niepotrzebnej złożoności i zapewnia przejrzystość kodu kontrolera.

Metody renderowania IronPDF według źródła treści
Typ źródła Metoda Najlepsze dla
Ciąg znaków HTML w pamięci RenderHtmlAsPdf Raporty oparte na bazach danych, faktury szablonowe, treści dynamiczne
Plik HTML na dysku RenderHtmlFileAsPdf Szablony statyczne w katalogu wwwroot, układy dostarczone przez agencję projektową
Aktywny adres URL RenderUrlAsPdf Archiwizacja stron, przechwytywanie aplikacji SPA po renderowaniu JavaScript

Jak konwertować dynamiczne ciągi znaków HTML?

Pracujac z dynamiczna zawartoscia, taka jak raporty oparte na bazach danych, uzyj RenderHtmlAsPdf, aby bezposrednio przeksztalcic ciagi HTML. Ta metoda akceptuje dowolny poprawny kod HTML i zwraca w pełni wyrenderowany plik PDF:

var renderer = new ChromePdfRenderer();
string htmlContent = BuildDynamicHtml(); // your method to generate HTML
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("dynamic-report.pdf");
var renderer = new ChromePdfRenderer();
string htmlContent = BuildDynamicHtml(); // your method to generate HTML
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("dynamic-report.pdf");
Dim renderer As New ChromePdfRenderer()
Dim htmlContent As String = BuildDynamicHtml() ' your method to generate HTML
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("dynamic-report.pdf")
$vbLabelText   $csharpLabel

Raport testowy IronPDF pokazujacy renderowana zawartosc HTML z formatowaniem CSS, w tym niebieskim naglowkiem 'IronPDF Test Report', zielonym tekstem akapitowym oraz sformatowana tabela danych zawierajaca informacje o produktach, takich jak widgety i narzedzia

To podejście sprawdza się dobrze przy generowaniu dokumentów PDF z szablonów HTML wypełnionych danymi w czasie rzeczywistym, przesłanymi formularzami lub dowolną treścią generowaną dynamicznie. Silnik renderujący zachowuje wszystkie style CSS, w tym niestandardowe czcionki, kolory i formatowanie tabel. Gdy twoj HTML odnosi sie do zewnetrznych arkuszy stylow lub obrazow uzywajac sciezek wzglednych, przekaż baseUrl jako drugi argument, aby renderer mógl poprawnie rozwiazac te zasoby.

Jak konwertować statyczne pliki HTML z dysku?

Dla szablonow HTML przechowywanych jako pliki fizyczne, uzyj RenderHtmlFileAsPdf, aby przeksztalcic je bez ladowania do pamieci. Jest to wydajne dla duzych szablonow i unika laczenia ciagow:

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("wwwroot/templates/report-template.html");
pdf.SaveAs("report.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("wwwroot/templates/report-template.html");
pdf.SaveAs("report.pdf");
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("wwwroot/templates/report-template.html")
pdf.SaveAs("report.pdf")
$vbLabelText   $csharpLabel

Ta metoda automatycznie rozpoznaje ścieżki względne dla arkuszy stylów CSS, obrazów i innych zasobów zewnętrznych, do których odwołuje się plik. Działa to dobrze, gdy zespół projektantów przechowuje oddzielne pliki szablonów HTML poza kodem źródłowym aplikacji napisanym w języku C#. Metoda obsługuje zapytania o media drukarskie CSS oraz niestandardowe czcionki, dzięki czemu szablony stworzone dla środowisk drukarskich są wiernie renderowane bez dodatkowej konfiguracji.

Jak przekonwertować adres URL strony internetowej na plik PDF?

Aby uchwycic strone internetowa na zywo lub wyrenderowac strone dostepna przez URL jako PDF, uzyj RenderUrlAsPdf. Ta metoda uruchamia silnik Chrome, przechodzi do adresu URL, czeka na pełne załadowanie strony, a następnie przechwytuje wyrenderowany wynik:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(1000);
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.SaveAs("webpage.pdf");
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(1000);
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.SaveAs("webpage.pdf");
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(1000)
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen
Dim pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")
pdf.SaveAs("webpage.pdf")
$vbLabelText   $csharpLabel

Strona glowna Wikipedii wyswietlana w podgladzie PDF pokazujaca pelny uklad strony z nawigacja, sekcjami tresci, podgladem artykulu oraz logo Wikipedii, prezentujaca udana konwersje HTML do PDF z zachowanym formatowaniem i obrazami

Opcja WaitFor.RenderDelay nakazuje rendererowi zatrzymanie sie po zaladowaniu strony przed przechwyceniem. Jest to przydatne w przypadku aplikacji jednostronicowych, które budują swój DOM za pomocą JavaScript po otrzymaniu początkowej odpowiedzi HTML. Ustawienie EnableJavaScript = true aktywuje pelny silnik JavaScript w Chrome, dzięki czemu wykresy, tabele danych i inne komponenty renderowane w JavaScript pojawiaja sie w PDF tak jak w przegladarce.

Jak radzisz sobie z danymi formularzy i żądaniami POST?

Przetwarzanie danych z formularzy przed wygenerowaniem pliku PDF jest powszechną praktyką w aplikacjach ASP.NET — potwierdzenia zamówień, listy przewozowe i pokwitowania są tworzone zgodnie z tym modelem. Podejście polega na powiązaniu przesłanych danych formularza z modelem, zbudowaniu ciągu HTML na podstawie tego modelu, a następnie renderowaniu tego ciągu jako pliku PDF:

[HttpPost]
public IActionResult ProcessFormToPdf(OrderModel model)
{
    var renderer = new ChromePdfRenderer();
    string html = $@"
        <h2>Order Confirmation</h2>
        <p>Customer: {model.CustomerName}</p>
        <p>Order Date: {model.OrderDate:yyyy-MM-dd}</p>
        <ul>
            {string.Join("", model.Items.Select(i => $"<li>{i.Name} -- ${i.Price}</li>"))}
        </ul>
        <p><strong>Total: ${model.Total}</strong></p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    string fileName = $"order-{model.OrderId}.pdf";
    return File(pdf.BinaryData, "application/pdf", fileName);
}
[HttpPost]
public IActionResult ProcessFormToPdf(OrderModel model)
{
    var renderer = new ChromePdfRenderer();
    string html = $@"
        <h2>Order Confirmation</h2>
        <p>Customer: {model.CustomerName}</p>
        <p>Order Date: {model.OrderDate:yyyy-MM-dd}</p>
        <ul>
            {string.Join("", model.Items.Select(i => $"<li>{i.Name} -- ${i.Price}</li>"))}
        </ul>
        <p><strong>Total: ${model.Total}</strong></p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    string fileName = $"order-{model.OrderId}.pdf";
    return File(pdf.BinaryData, "application/pdf", fileName);
}
Imports System
Imports System.Linq
Imports Microsoft.AspNetCore.Mvc

<HttpPost>
Public Function ProcessFormToPdf(model As OrderModel) As IActionResult
    Dim renderer = New ChromePdfRenderer()
    Dim html As String = $"
        <h2>Order Confirmation</h2>
        <p>Customer: {model.CustomerName}</p>
        <p>Order Date: {model.OrderDate:yyyy-MM-dd}</p>
        <ul>
            {String.Join("", model.Items.Select(Function(i) $"<li>{i.Name} -- ${i.Price}</li>"))}
        </ul>
        <p><strong>Total: ${model.Total}</strong></p>"
    Dim pdf = renderer.RenderHtmlAsPdf(html)
    Dim fileName As String = $"order-{model.OrderId}.pdf"
    Return File(pdf.BinaryData, "application/pdf", fileName)
End Function
$vbLabelText   $csharpLabel

Jak wygląda interfejs formularza?

Interfejs formularza internetowego pokazujacy strone tworzenia zamowienia z sekcja danych klienta, zawierajaca pole imienia 'Jane Doe' i date '19/11/2025', sekcja skladnikow zamowienia pokazujaca 'Laptop' w cenie '1300', podsumowanie zamowienia pokazujace calkowita kwote oraz niebieski przycisk 'Generuj PDF'

Jak dane formularza pojawiają się w wygenerowanym pliku PDF?

PDF viewer showing a clean order confirmation document with header 'Order Confirmation', customer name 'Jane Doe', order date '2025-11-19', itemized list showing laptop purchase for $1300, demonstrating successful form-to-PDF conversion

W przypadku bardziej zaawansowanych scenariuszy dokumentów można zintegrować formularze PDF lub edytować istniejące szablony PDF z wstępnie wypełnionymi polami. Biblioteka obsługuje również podpisy cyfrowe dla dokumentów prawnych i umów, umożliwiając dodawanie podpisów weryfikowalnych kryptograficznie do każdego wygenerowanego dokumentu.

Ważną kwestią przy osadzaniu danych użytkownika w ciągach HTML jest ich oczyszczanie. Zawsze należy stosować escape w ciągach znaków dostarczonych przez użytkownika przed wstawieniem ich do kodu HTML, aby zapobiec problemom związanym z wstrzyknięciem kodu. Proste wywolanie System.Web.HttpUtility.HtmlEncode(model.CustomerName) na kazdym polu zachowuje bezpieczenstwo szablonu przed przekazaniem go do renderer'a.

Jak dodać profesjonalne formatowanie, nagłówki i znaki wodne?

Jak skonfigurować nagłówki, stopki i znaki wodne?

Profesjonalne dokumenty PDF często wymagają nagłówków i stopek na każdej stronie, a także znaków wodnych w przypadku dokumentów roboczych lub poufnych. IronPDF obsluguje oba przypadki za posrednictwem wlasciwosci obiektu RenderingOptions oraz metody ApplyWatermark na wynikowym PdfDocument:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    MaxHeight = 25,
    HtmlFragment = "<div style='text-align:center'>Annual Report 2024</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    MaxHeight = 20,
    HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
};
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.ApplyWatermark("<h2 style='color:red;opacity:0.3'>CONFIDENTIAL</h2>",
    30, VerticalAlignment.Middle, HorizontalAlignment.Center);
pdf.SaveAs("report-with-watermark.pdf");
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    MaxHeight = 25,
    HtmlFragment = "<div style='text-align:center'>Annual Report 2024</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    MaxHeight = 20,
    HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
};
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.ApplyWatermark("<h2 style='color:red;opacity:0.3'>CONFIDENTIAL</h2>",
    30, VerticalAlignment.Middle, HorizontalAlignment.Center);
pdf.SaveAs("report-with-watermark.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .MaxHeight = 25,
    .HtmlFragment = "<div style='text-align:center'>Annual Report 2024</div>"
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .MaxHeight = 20,
    .HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
}
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.ApplyWatermark("<h2 style='color:red;opacity:0.3'>CONFIDENTIAL</h2>", 30, VerticalAlignment.Middle, HorizontalAlignment.Center)
pdf.SaveAs("report-with-watermark.pdf")
$vbLabelText   $csharpLabel

Raport testowy IronPDF pokazujacy dokument PDF z niestandardowym niebieskim naglowkiem 'IronPDF Test Report', zielonym stylem tekstu, tabela danych z informacjami o produktach oraz czerwonym znakiem wodnym 'POUFNY' umieszczonym po przekatnej strony

Zastepcze miejsca {page} i {total-pages} w stopce HTML sa automatycznie zastapiane podczas renderowania, wiec otrzymujesz poprawne numery stron bez zadnej dalszej obrobki. Można również dodać numery stron, obrazy tła lub nakładki na pierwszym planie oraz niestandardowe tekstowe lub graficzne stemple.

Jak korzystać z CSS Print Media do sterowania układem plików PDF?

Aby upewnic sie, ze twoj PDF odpowiada oczekiwaniom, uzyj reguly CSS @media print oraz ustawienia PdfCssMediaType.Print. IronPDF w pełni obsługuje kontrolę podziału stron i niestandardowe rozmiary papieru:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.ViewPortWidth = 1024;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;
string html = @"
    <style>
        @media print {
            .no-print { display: none; }
            body { font-size: 12pt; }
            .page-break { page-break-after: always; }
        }
        @page {
            size: A4;
            margin: 1cm;
        }
    </style>
    <div class='content'>
        <h1>Professional Report</h1>
        <div class='page-break'></div>
        <h2>Section 2</h2>
    </div>";
var pdf = renderer.RenderHtmlAsPdf(html);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.ViewPortWidth = 1024;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;
string html = @"
    <style>
        @media print {
            .no-print { display: none; }
            body { font-size: 12pt; }
            .page-break { page-break-after: always; }
        }
        @page {
            size: A4;
            margin: 1cm;
        }
    </style>
    <div class='content'>
        <h1>Professional Report</h1>
        <div class='page-break'></div>
        <h2>Section 2</h2>
    </div>";
var pdf = renderer.RenderHtmlAsPdf(html);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.ViewPortWidth = 1024
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
renderer.RenderingOptions.MarginLeft = 10
renderer.RenderingOptions.MarginRight = 10

Dim html As String = "
    <style>
        @media print {
            .no-print { display: none; }
            body { font-size: 12pt; }
            .page-break { page-break-after: always; }
        }
        @page {
            size: A4;
            margin: 1cm;
        }
    </style>
    <div class='content'>
        <h1>Professional Report</h1>
        <div class='page-break'></div>
        <h2>Section 2</h2>
    </div>"

Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Podglad dokumentu PDF pokazujacy profesjonalny raport na dwoch stronach w powieekszeniu 76% z tytulem 'Raport Professionalny' na stronie 1 oraz naglowkiem 'Sekcja 2' na stronie 2, pokazujacy czysty uklad z poprawnymi przerwami strony oraz zastosowanym formatowaniem CSS

Zastosowanie CSS do drukowania gwarantuje, że dokumenty PDF zachowają profesjonalne formatowanie, jednocześnie ukrywając zbędne elementy stron internetowych, takie jak menu nawigacyjne czy interaktywne przyciski. Ustawienie CssMediaType = PdfCssMediaType.Print instruuje renderer do zastosowania twoich reguł @media print zamiast ekranowych stylow, co zazwyczaj usuwa dekoracje tla i dostosowuje typografie dla wydruku. Można również skonfigurować niestandardowe marginesy dla każdej strony oraz kontrolować orientację i obrót strony w przypadku raportów w formacie szerokim lub obróconych.

Specyfikacja W3C CSS Paged Media definiuje jak wlasciwosci takie jak @page, page-break-before i widows powinny zachowywac sie w wyjsciu stronowym. Silnik IronPDF dla przeglądarki Chrome ściśle przestrzega tej specyfikacji, dzięki czemu style napisane zgodnie ze standardem CSS są dokładnie przekładane do pliku PDF bez konieczności ręcznych poprawek.

Jak radzisz sobie z uwierzytelnianiem na stronach chronionych?

W przypadku aplikacji wymagających zabezpieczeń IronPDF obsługuje różne metody uwierzytelniania, w tym pliki cookie, nagłówki żądań HTTP oraz poświadczenia sieciowe. Pozwala to na renderowanie stron, które wymagają zalogowanej sesji lub podstawowego uwierzytelniania:

var renderer = new ChromePdfRenderer();
renderer.RequestContext.Cookies.Add(new Cookie
{
    Name = "SessionId",
    Value = "your-session-token",
    Domain = "example.com"
});
renderer.ChromePdfRenderOptions.HttpLoginCredentials = new HttpLoginCredentials
{
    Username = "user",
    Password = "password"
};
var pdf = renderer.RenderUrlAsPdf("https://app.example.com/protected/report");
var renderer = new ChromePdfRenderer();
renderer.RequestContext.Cookies.Add(new Cookie
{
    Name = "SessionId",
    Value = "your-session-token",
    Domain = "example.com"
});
renderer.ChromePdfRenderOptions.HttpLoginCredentials = new HttpLoginCredentials
{
    Username = "user",
    Password = "password"
};
var pdf = renderer.RenderUrlAsPdf("https://app.example.com/protected/report");
Dim renderer = New ChromePdfRenderer()
renderer.RequestContext.Cookies.Add(New Cookie With {
    .Name = "SessionId",
    .Value = "your-session-token",
    .Domain = "example.com"
})
renderer.ChromePdfRenderOptions.HttpLoginCredentials = New HttpLoginCredentials With {
    .Username = "user",
    .Password = "password"
}
Dim pdf = renderer.RenderUrlAsPdf("https://app.example.com/protected/report")
$vbLabelText   $csharpLabel

Można również zaszyfrować wynikowy plik PDF za pomocą hasła właściciela i hasła użytkownika, ograniczając takie działania jak drukowanie, kopiowanie lub edycja. Połączenie renderowania opartego na uwierzytelnianiu z uprawnieniami na poziomie pliku PDF zapewnia kontrolę zarówno nad tym, kto może wygenerować dokument, jak i nad tym, co odbiorcy mogą z nim zrobić po jego otrzymaniu.

W środowiskach Enterprise warto rozważyć użycie asynchronicznego API renderowania podczas generowania plików PDF w ramach modułów obsługi żądań sieciowych. Renderowanie asynchroniczne pozwala zachować wolną pulę wątków ASP.NET podczas przetwarzania dokumentu przez silnik Chrome, co poprawia przepustowość przy obciążeniu równoległym. Biblioteka obsługuje również renderowanie wielowątkowe w scenariuszach generowania dokumentów w trybie wsadowym.

Dlaczego silnik renderujący Chrome ma znaczenie dla konwersji HTML do PDF?

Większość bibliotek do generowania plików PDF działa poprzez samodzielne parsowanie kodu HTML przy użyciu niestandardowego silnika. Oznacza to, że obsługują one tylko podzbiór właściwości CSS, nie obsługują wykonywania kodu JavaScript i mają trudności z nowoczesnymi technikami układania stron, takimi jak CSS Grid lub Flexbox. IronPDF stosuje inne podejście, wykorzystując silnik Chrome — tę samą technologię, która napędza przeglądarkę Google Chrome.

W praktyce oznacza to, że każda strona HTML wyświetlana poprawnie w przeglądarce Chrome zostanie poprawnie wyrenderowana jako plik PDF za pomocą IronPDF. Eliminuje to typowy rodzaj błędów, w których wynikowy plik PDF odbiega od oczekiwanego wyglądu, ponieważ silnik renderujący interpretuje CSS inaczej niż przeglądarka używana przez programistę podczas projektowania.

Dokumentacja MDN Web Docs dotycząca CSS Paged Media oraz dokumentacja Microsoft ASP.NET Core opisują funkcje, które IronPDF obsługuje dzięki swojej platformie opartej na przeglądarce Chrome. Programiści zaznajomieni już ze standardowymi językami HTML, CSS i JavaScript mogą wykorzystać tę wiedzę bezpośrednio do generowania plików PDF bez konieczności nauki oddzielnego języka do tworzenia układów dokumentów.

Opcje renderowania IronPDF udostępniają kontrolki do ustawiania rozmiaru papieru, marginesów, wykonywania kodu JavaScript oraz opóźnień renderowania. Biblioteka obsługuje tekst w formacie UTF-8 i międzynarodowe zestawy znaków, czcionki internetowe odwołujące się do Google Fonts lub plików lokalnych, a nawet może konwertować dokumenty Markdown do formatu PDF. Ze względu na wymagania dotyczące archiwizacji lub zgodności z normami dostępności obsługuje formaty wyjściowe PDF/A i PDF/UA. Biblioteka działa w systemach Windows, Linux i macOS oraz jest wdrażana w Azure i AWS bez dodatkowej konfiguracji.

Jakie są Twoje kolejne kroki?

Konwersja HTML do PDF w ASP.NET C# za pomocą IronPDF zapewnia aplikacji niezawodny, dokładny jak w przeglądarce proces generowania dokumentów. Trzy metody renderowania — ciąg HTML, plik HTML i adres URL — obejmują pełen zakres źródeł treści, z którymi można spotkać się w praktyce. Zaawansowane funkcje, takie jak nagłówki, stopki, znaki wodne i CSS do drukowania, pozwalają uzyskać profesjonalny wynik bez konieczności ręcznej obróbki pliku PDF.

Kolejnym krokiem jest zainstalowanie pakietu NuGet i uruchomienie przykładowego programu szybkiego startu z pierwszej sekcji tego przewodnika. Następnie zapoznaj się z kompletnym samouczkiem dotyczącym języka C# i plików PDF, aby uzyskać bardziej szczegółowe informacje na temat struktury dokumentów, lub przejrzyj przewodnik po edycji plików PDF, aby dowiedzieć się, jak łączyć, dzielić, dodawać adnotacje i wyodrębniać zawartość z istniejących plików PDF.

Jeśli Twój projekt dotyczy Blazora, samouczek Blazor PDF omawia integrację po stronie serwera oraz integrację z WebAssembly. Dla projektow MVC, przewodnik MVC Core PDF oraz przewodnik Razor Pages omawiaja renderowanie oparte na szablonach z widokami .cshtml. W celu debugowania i optymalizacji wydajności IronPDF zapewnia niestandardowe logowanie oraz wskazówki dotyczące wydajności, które pomagają zidentyfikować wąskie gardła w procesach generowania dużych ilości dokumentów.

Bezpłatna próba, aby przetestować wszystkie funkcje biblioteki w swoim własnym projekcie przed zakupem licencji. Dla wdrożeń produkcyjnych dostępne są opcje licencjonowania zarówno dla pojedynczych deweloperów, zespołów, jak i scenariuszy redystrybucji przedsiębiorstw.

Często Zadawane Pytania

Jak przekonwertować HTML na PDF w ASP.NET Core?

Zainstaluj IronPDF za pomocą NuGet, utwórz instancję ChromePdfRenderer i wywołaj metodę RenderHtmlAsPdf z ciągiem HTML. Renderer zwraca obiekt PdfDocument, którego dane BinaryData można przesyłać strumieniowo do przeglądarki.

Dlaczego IronPDF nadaje się do konwersji HTML na PDF?

IronPDF wykorzystuje silnik renderujący Chrome, dzięki czemu każda strona HTML wyświetlana poprawnie w przeglądarce Chrome jest poprawnie renderowana jako plik PDF. Dotyczy to również CSS3, treści renderowanych przez JavaScript, czcionek internetowych oraz układów responsywnych.

Czy w ASP.NET można generować faktury i raporty za pomocą IronPDF?

Tak. Utwórz ciąg HTML na podstawie modelu danych, przekaż go do RenderHtmlAsPdf i zwróć BinaryData jako plik do pobrania. IronPDF zachowuje formatowanie tabel, niestandardowe czcionki i styl CSS w pliku wyjściowym.

Czy IronPDF obsługuje zapytania o media drukarskie CSS?

Tak. Ustaw RenderingOptions.CssMediaType = PdfCssMediaType.PRINT, aby aktywować reguły @media print, które ukrywają elementy nawigacyjne i stosują typografię zoptymalizowaną pod kątem druku.

Czy IronPDF obsługuje treści renderowane w JavaScript?

Tak. Ustaw RenderingOptions.EnableJavaScript = true i użyj WaitFor.RenderDelay, aby wstrzymać się po załadowaniu strony, dając silnikowi JavaScript czas na zbudowanie DOM przed przechwyceniem pliku PDF.

W jaki sposób IronPDF obsługuje uwierzytelnianie w przypadku stron chronionych?

IronPDF obsługuje pliki cookie sesji, nagłówki HTTP oraz podstawowe dane uwierzytelniające poprzez właściwości RequestContext.Cookies i ChromePdfRenderOptions.HttpLoginCredentials.

Jakie platformy wspiera IronPDF?

IronPDF działa w systemach Windows, Linux i macOS i może być wdrażany w Azure i AWS. Jest przeznaczony dla platform .NET 6, .NET 7, .NET 8 oraz .NET Framework 4.6.2 i nowszych.

Czy IronPDF obsługuje format PDF/A do archiwizacji?

Tak. IronPDF obsługuje zgodność z PDF/A w celu długoterminowej archiwizacji oraz PDF/UA w celu zapewnienia dostępności. Te tryby wyjściowe można skonfigurować za pomocą metod SaveAsPdfA i SaveAsPdfUA.

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