IRONSOFTWAREHOME
KORZYSTANIE Z IRONPDF

Konwertuj HTML na PDF w ASP.NET Core z C# -- Przewodnik IronPDF

Curtis Chau
Curtis Chau
Updated: 20 czerwca 2026

Wbudowanie przeglądarki plików PDF w aplikację ASP.NET Core jest łatwiejsze, niż większość programistów się spodziewa. Generując pliki PDF po stronie serwera i zwracając je z prawidłowym typem MIME, można wyświetlać dokumenty bezpośrednio w każdej nowoczesnej przeglądarce — bez wtyczek i bez konieczności korzystania z programu Adobe Acrobat Reader. IronPDF obsługuje renderowanie za pomocą silnika opartego na przeglądarce Chrome, przekształcając HTML, CSS i JavaScript w pliki PDF o wysokiej jakości, które wyświetlają się bezpośrednio w wbudowanej przeglądarce.

Ten samouczek przeprowadzi Cię przez wszystkie główne scenariusze: wyświetlanie plików PDF wygenerowanych z ciągów znaków HTML, renderowanie aktywnych adresów URL, konwersję widoków Razor, strumieniowanie dużych plików oraz połączenie tego wszystkiego w kontrolerze ASP.NET Core MVC. Przykłady kodu są przeznaczone dla platformy .NET 10 i zawierają instrukcje najwyższego poziomu tam, gdzie ma to zastosowanie.

Jak działa przeglądanie plików PDF w przeglądarce w ASP.NET?

Nowoczesne przeglądarki są wyposażone we wbudowaną przeglądarkę plików PDF. Kiedy serwer odpowiada z nagłówkiem Content-Type: application/pdf, przeglądarka renderuje dokument w linii zamiast wywoływać pobieranie pliku. Kluczowe jest sparowanie tego nagłówka z Content-Disposition: inline.

Po stronie serwera Twoim zadaniem jest wygenerowanie poprawnego binarium PDF i zwrócenie go za pośrednictwem FileResult. Przeglądarka obsługuje paginację, Zoom, zaznaczanie tekstu, wyszukiwanie, drukowanie i pobieranie bez konieczności pisania dodatkowego kodu interfejsu użytkownika.

IronPDF naturalnie wpisuje się w ten schemat. Jego klasa ChromePdfRenderer konwertuje HTML (lub aktywny URL) na binarium PDF, a Ty przekazujesz to binarium bezpośrednio do pomocnika ASP.NET File(). Wynikiem jest w pełni funkcjonalna przeglądarka dokumentów, która działa w przeglądarkach Chrome, Firefox, Edge i Safari.

Nowoczesne przeglądarki implementują specyfikację renderowania plików PDF W3C za pośrednictwem swoich natywnych silników przeglądarki, co oznacza, że każdy zgodny plik PDF zwrócony przez serwer będzie wyświetlany poprawnie bez dodatkowej konfiguracji. Wyniki działania IronPDF są w pełni zgodne ze standardami, dzięki czemu można liczyć na spójne wyświetlanie w różnych wersjach przeglądarek.

W przypadku wdrożeń kontenerowych IronPDF udostępnia oficjalne obrazy Docker, które zawierają wstępnie skonfigurowane zależności Chromium, dzięki czemu nie ma potrzeby ręcznej instalacji przeglądarki Chrome na każdym węźle. Obsługiwane są zarówno kontenery Linux, jak i Windows. Jeśli chcesz niezależnie skalować generowanie plików PDF, obraz Docker IronPDF Engine pozwala uruchamiać proces renderowania jako oddzielną mikrousługę.

Jak zainstalować IronPDF w projekcie ASP.NET Core?

Otwórz projekt ASP.NET Core w programie Visual Studio, a następnie zainstaluj IronPDF za pomocą konsoli NuGet Package Manager:

PM > Install-Package IronPdf

Lub użyj interfejsu CLI platformy .NET:

dotnet add package IronPdf

Po instalacji, dodaj swój klucz licencyjny do Program.cs przed wywołaniem jakichkolwiek API IronPDF:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Jeśli wdrażasz rozwiązanie w Azure, przechowuj klucz licencyjny w Azure Key Vault lub App Configuration zamiast kodować go na stałe. W przypadku wdrożeń AWS Lambda należy używać zmiennych środowiskowych skonfigurowanych w ustawieniach funkcji Lambda.

To wszystko. IronPDF automatycznie wykrywa i konfiguruje Chromium w czasie wykonywania w systemie Windows. W systemie Linux należy zapoznać się z instrukcją konfiguracji systemu Linux, aby uzyskać informacje na temat kilku wymaganych pakietów systemowych.

Możesz zacząć od bezpłatnej wersji próbnej, aby ocenić pełen zestaw funkcji przed wyborem poziomu licencji do produkcji.

Jak wygenerować i wyświetlić plik PDF na podstawie ciągu znaków HTML?

Najszybszym sposobem na przedstawienie użytkownikowi PDF jest wyrenderowanie ciągu HTML i zwrócenie go w linii. Utwórz kontroler o nazwie PdfController i dodaj następującą akcję:

using IronPdf;
using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();

var app = builder.Build();
app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();

public class PdfController : Controller
{
    private readonly ChromePdfRenderer _renderer;

    public PdfController()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.WaitFor.RenderDelay(100);
        _renderer.RenderingOptions.Timeout = 30;
    }

    public IActionResult DisplayFromHtml()
    {
        string html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; padding: 40px; }
                    h1   { color: #2c3e50; }
                    p    { line-height: 1.7; color: #444; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p>This PDF was generated using IronPDF in an ASP.NET Core application.</p>
            </body>
            </html>";

        PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);

        Response.Headers.Append("Content-Disposition", "inline; filename=document.pdf");
        return File(pdf.BinaryData, "application/pdf");
    }
}

Jak wygląda wygenerowany plik PDF w przeglądarce?

Przeglądarka wyświetlająca dokument PDF z tytułem 'Przykładowy dokument PDF' i tekstem 'Ten PDF został wygenerowany przy użyciu IronPDF w ASP.NET Core' oglądany pod localhost:7254/Pdf/DisplayFromHtml

ChromePdfRenderer używa Chromiancy w tle, dzięki czemu siatka CSS, flexbox, web fonts i nowoczesne funkcje CSS są renderowane dokładnie. Ustawienie Content-Disposition na inline nakazuje przeglądarce wyświetlić plik zamiast go zapisywać. Jeśli zmienisz tę wartość na attachment, przeglądarka zachęci użytkownika do pobrania.

W przypadku dokumentów o skomplikowanym układzie można dostosować wynik za pomocą opcji renderowania, takich jak niestandardowe rozmiary papieru, marginesy i typ mediów PRINT do drukowania. Interfejs API WaitFor jest szczególnie przydatny w środowiskach kontenerowych, gdzie opóźnienia sieciowe mogą spowalniać ładowanie zasobów zewnętrznych.

Aby uzyskać więcej informacji na temat opcji konwersji HTML, zapoznaj się z przewodnikiem dotyczącym konwersji ciągów HTML do formatu PDF.

Jak renderować pliki PDF z adresów URL i widoków Razor?

IronPDF może przechwycić dowolną aktywną stronę internetową jako plik PDF — idealne rozwiązanie do archiwizacji treści internetowych lub generowania raportów na podstawie istniejących stron. Dokumentacja .NET Core opisuje sposób zwracania wyników przez akcje kontrolerów, co jest wzorcem zastosowanym w tym przypadku.

public IActionResult RenderFromUrl(string url = "https://en.wikipedia.org/wiki/Main_Page")
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    renderer.RenderingOptions.WaitFor.NetworkIdle();

    PdfDocument pdf = renderer.RenderUrlAsPdf(url);

    Response.Headers.Append("Content-Disposition", "inline; filename=webpage.pdf");
    Response.Headers.Append("Cache-Control", "public, max-age=3600");
    return File(pdf.BinaryData, "application/pdf");
}

Jak wygląda renderowanie plików PDF na podstawie adresów URL?

Zrzut ekranu przeglądarki PDF wyświetlającej stronę główną Wikipedii wyrenderowaną w aplikacji webowej ASP.NET przy użyciu IronPDF, pokazującej treść główną i elementy nawigacyjne z pełnym zachowaniem stylizacji CSS

Gdy chcesz przekonwertować widok Razor — na przykład szablon faktury lub wyciągu — najpierw renderujesz widok do ciągu znaków HTML, a następnie przekazujesz ten ciąg do IronPDF. Dzięki temu szablony będą mogły być ponownie wykorzystane zarówno w przypadku wyników w formacie HTML, jak i PDF:

public async Task<IActionResult> ViewToPdf()
{
    var model = new InvoiceModel
    {
        InvoiceNumber = 1001,
        InvoiceDate   = DateTime.Now,
        CustomerName  = "Acme Corp.",
        Items = new List<ItemModel>
        {
            new ItemModel { Description = "Product A", Quantity = 2, UnitPrice = 50.00m },
            new ItemModel { Description = "Service B", Quantity = 1, UnitPrice = 150.00m }
        }
    };
    model.TotalAmount = model.Items.Sum(i => i.LineTotal);

    string htmlContent = await RenderViewToStringAsync("Invoice", model);

    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.MarginTop    = 40;
    renderer.RenderingOptions.MarginBottom = 40;

    string baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl);

    return File(pdf.BinaryData, "application/pdf");
}

private async Task<string> RenderViewToStringAsync(string viewName, object model)
{
    var actionContext = new ActionContext(
        HttpContext, RouteData, ControllerContext.ActionDescriptor);

    var viewEngine      = HttpContext.RequestServices.GetRequiredService<IRazorViewEngine>();
    var tempDataFactory = HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>();
    var tempData        = tempDataFactory.GetTempData(HttpContext);

    ViewData.Model = model;

    var viewResult = viewEngine.FindView(actionContext, viewName, isMainPage: false);
    if (!viewResult.Success)
    {
        string searched = string.Join(
            Environment.NewLine,
            viewResult.SearchedLocations ?? Array.Empty<string>());
        throw new InvalidOperationException(
            $"Could not find view '{viewName}'. Searched:{Environment.NewLine}{searched}");
    }

    await using var writer      = new StringWriter();
    var             viewContext = new ViewContext(
        actionContext, viewResult.View, ViewData, tempData,
        writer, new HtmlHelperOptions());

    await viewResult.View.RenderAsync(viewContext);
    return writer.ToString();
}

Jakie są efekty generowania plików PDF w Razor View?

PDF invoice displayed in a web browser showing Invoice #1001 for Acme Corp with two line items totaling $250.00, demonstrating successful Razor view to PDF conversion

Parametr baseUrl ma znaczenie, gdy widok Razor odwołuje się do względnych ścieżek CSS lub obrazów. Przekazanie aktualnego adresu URL hosta pozwala IronPDF poprawnie rozpoznać te ścieżki. Zapoznaj się z samouczkiem Razor to PDF, aby uzyskać kompletny przewodnik obejmujący wzorce aplikacji Blazor.

Jak radzisz sobie z dużymi plikami PDF przy strumieniowaniu?

W przypadku dokumentów, których rozmiar może wynosić kilka megabajtów, strumieniowanie zmniejsza szczytowe zużycie pamięci i pozwala szybciej dostarczać bajty do klienta. Użyj FileStreamResult zamiast File() z surową tablicą bajtów:

public async Task<IActionResult> StreamLargePdf()
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CreatePdfFormsFromHtml = false;

    PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(
        "<h1>Large Document</h1><p>Full content here...</p>");

    pdf.CompressImages(80);

    var stream = new MemoryStream(pdf.BinaryData);

    Response.Headers.Append("Content-Length", pdf.BinaryData.Length.ToString());
    Response.Headers.Append("Accept-Ranges",  "bytes");

    return new FileStreamResult(stream, "application/pdf");
}

CompressImages(80) zmniejsza jakość JPEG do 80%, co znacznie redukuje rozmiar pliku dla dokumentów zawierających dużo obrazów przy minimalnej utracie widocznej jakości. Ustawienie Accept-Ranges: bytes sygnalizuje przeglądarce, że może żądać fragmentów zakresu bajtów, co umożliwia szybsze przeszukiwanie dużych plików PDF bez pobierania całego pliku.

Specyfikacja PDF/A opracowana przez ISO określa wymagania dotyczące plików PDF o jakości archiwalnej. Jeśli Twoja aplikacja wymaga tworzenia dokumentów do długoterminowej archiwizacji, tryb zgodności z PDF/A w IronPDF gwarantuje, że pliki wyjściowe spełniają te standardy, co ma szczególne znaczenie w przypadku procesów regulacyjnych lub prawnych.

W przypadku starszych projektów ASP.NET Web Forms schemat jest nieco inny, ponieważ piszesz bezpośrednio do odpowiedzi HTTP:

protected void btnGeneratePdf_Click(object sender, EventArgs e)
{
    using var renderer = new ChromePdfRenderer();
    PdfDocument pdf    = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>");
    Response.ContentType = "application/pdf";
    Response.BinaryWrite(pdf.BinaryData);
    Response.End();
}

W przypadku obciążeń generujących wiele plików PDF jednocześnie, zapoznaj się z przewodnikiem po asynchronicznym API IronPDF oraz Dokumentacją API dotyczącą optymalizacji wydajności, aby znaleźć ustawienia zmniejszające obciążenie pamięci w scenariuszach o dużej przepustowości.

Jakie funkcje oferuje użytkownikom przeglądarka internetowa?

Gdy przeglądarka wyświetla plik PDF w trybie inline, automatycznie udostępnia w pełni funkcjonalną przeglądarkę. Użytkownicy mają do dyspozycji funkcję zaznaczania tekstu w celu skopiowania treści, wbudowaną pasek wyszukiwania do lokalizowania określonych słów lub liczb, kontrolki drukowania oraz pobieranie jednym kliknięciem — wszystko to bez konieczności pisania kodu front-endowego.

Oprócz podstawowego przeglądania, IronPDF obsługuje szeroki zakres funkcji dokumentów, które wpływają na to, co użytkownicy widzą w przeglądarce:

  • Nagłówki i stopki z dynamicznym tekstem, numerami stron i datami
  • Niestandardowe znaki wodne do oznaczania wersji roboczych lub poufnych dokumentów
  • Interaktywne pola formularzy, które użytkownicy mogą wypełniać bezpośrednio w przeglądarce
  • Podpisy cyfrowe do uwierzytelniania dokumentów
  • Zgodność z formatem PDF/A w celu spełnienia wymagań dotyczących długoterminowej archiwizacji
  • Szyfrowanie i ochrona hasłem w celu ograniczenia dostępu

Poniższa tabela podsumowuje główne metody konwersji dostępne w bibliotece i kiedy używać każdej z nich:

Metody konwersji IronPDF i zalecane zastosowania
MetodaDane wejścioweNajlepsze dla
RenderHtmlAsPdfCiąg znaków HTMLSzablony dokumentów, faktur, raportów
RenderUrlAsPdfURLArchiwizacja stron internetowych, migawki treści na żywo
RenderHtmlAsPdf + RazorRenderowany widok HTMLPonowne wykorzystanie istniejących szablonów MVC jako plików PDF
RenderHtmlFileAsPdfLokalny plik HTMLSzablony statyczne przechowywane na dysku

W przypadku wdrożeń kontenerowych IronPDF zapewnia również obsługę silnika zdalnego, dzięki czemu można uruchamiać generowanie plików PDF jako dedykowaną mikrousługę. Zapoznaj się z przewodnikiem po optymalizacji pamięci, aby uzyskać ustawienia dostosowane do środowisk o ograniczonych zasobach.

Aby uzyskać pełny przegląd możliwości, odwiedź stronę funkcji IronPDF.

Jakie opcje formatowania i edycji obsługuje IronPDF?

IronPDF wykracza daleko poza podstawowe renderowanie. Możesz nadać strukturę i branding każdemu dokumentówi, korzystając z poniższych opcji.

Elementy sterujące układem strony obejmują niestandardowe rozmiary papieru, ustawienia orientacji oraz konfigurację marginesów. Wsparcie dla typografii obejmuje pełne renderowanie fontów webowych poprzez deklaracje CSS @font-face, co oznacza, że dokumenty dokładnie odpowiadają fontom Twojej marki. Można również osadzać i zmieniać rozmiar obrazów na stronach PDF, co zapewnia pełną kontrolę nad wiernością wizualną.

W zakresie obróbki dokumentów IronPDF umożliwia programowe łączenie lub dzielenie istniejących plików PDF, dodawanie lub usuwanie poszczególnych stron oraz wyodrębnianie tekstu i obrazów. Wykonanie JavaScript przed uchwyceniem wspiera dynamiczne wykresy oraz wizualizacje danych - przydatne przy generowaniu raportów opierających się na bibliotekach renderingu po stronie klienta, takich jak Chart.js lub D3.js.

Dzięki tym możliwościom można tworzyć dopracowane, gotowe do druku dokumenty bezpośrednio z poziomu aplikacji, bez konieczności stosowania oddzielnej warstwy przetwarzania dokumentów.

Jeśli chcesz akceptować pliki PDF przesłane przez użytkowników i wyświetlać je obok plików wygenerowanych, IronPDF odczytuje istniejące pliki PDF równie łatwo, jak tworzy nowe. Załaduj plik za pomocą PdfDocument.FromFile() i zwróć jego BinaryData przez tego samego File() pomocnika.

Zobacz samouczek dotyczący edycji plików PDF w języku C#, aby uzyskać szczegółowy przewodnik po edycji, dodawaniu adnotacji i modyfikowaniu istniejących dokumentów.

Jak IronPDF wypada na tle alternatywnych rozwiązań?

Dwie najczęstsze alternatywy dla podejścia po stronie serwera IronPDF to osadzenie biblioteki przeglądarki PDF po stronie klienta (takiej jak PDF.js, przeglądarka open source firmy Mozilla) oraz przekierowywanie użytkowników do oddzielnego systemu zarządzania dokumentami.

Przeglądarki po stronie klienta, takie jak PDF.js, sprawdzają się dobrze w prostych przypadkach wyświetlania, ale wymagają dostarczenia pakietu JavaScript przeglądarki, obsługi CORS dla zewnętrznych plików PDF oraz samodzielnego zarządzania kompatybilnością z przeglądarkami. Generowanie po stronie serwera za pomocą IronPDF pozwala utrzymać cały proces tworzenia plików PDF w środowisku .NET, co upraszcza politykę bezpieczeństwa i pozwala uniknąć złożoności związanej z różnicami między źródłami.

Dedykowany system zarządzania dokumentami powoduje dodatkowe obciążenie operacyjne, którego większość aplikacji internetowych nie potrzebuje. Dla zespołów już korzystających z .NET Core generowanie i strumieniowe przesyłanie plików PDF bezpośrednio z kontrolera jest najłatwiejszym rozwiązaniem.

Jakie są Twoje kolejne kroki?

Wyświetlanie plików PDF w aplikacji internetowej ASP.NET Core wymaga zaledwie kilku wierszy kodu. Generuj PDF za pomocą ChromePdfRenderer, ustaw Content-Disposition: inline, i zwróć FileResult -- wbudowany przeglądarka obsłuży resztę.

W przypadku wdrożeń produkcyjnych należy rozważyć następujące kroki w celu przygotowania konfiguracji:

  • Skonfiguruj niestandardowe logowanie, aby śledzić czasy generowania plików PDF i wskaźniki błędów
  • Wprowadź buforowanie często wyświetlanych plików PDF, aby zmniejszyć obciążenie związane z uruchamianiem Chromium
  • Użyj obrazu Docker silnika IronPDF, aby skalować renderowanie niezależnie od warstwy internetowej
  • Sprawdź opcje kompresji plików PDF, aby rozmiar odpowiedzi był łatwiejszy do opanowania

Chcesz dodać przeglądanie plików PDF do swojego projektu? Zacznij od bezpłatnej wersji próbnej i uruchom powyższe przykłady w ciągu kilku minut. Gdy wszystko będzie gotowe do wdrożenia, zapoznaj się z opcjami licencyjnymi dostosowanymi do wielkości Twojego zespołu i sposobu użytkowania. Aby zapoznać się z powiązanymi konwersjami, przejrzyj bibliotekę poradników, w której opisano, jak IronPDF obsługuje konwersję plików DOCX do PDF, obrazów do PDF oraz innych formatów.

Pierwszy krok:
arrow pointer
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ęczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta