How to Use IronPDF with Blazor for PDF Generation | IronPDF

IronPDF Blazor Server Tutorial: Renderowanie HTML do PDF w C

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF umozliwia konwersje HTML do PDF w aplikacjach Blazor Server przy uzyciu C# z minimalna konfiguracja, wspierajac .NET 6 i oferujac mozliwosci generowania PDF bezposrednio z komponentow Blazor.

Szybki start: Renderowanie PDF w Blazor Server

Rozpocznij prace z IronPDF w swoich aplikacjach Blazor Server. Ten przyklad pokazuje, jak renderowac zawartosc HTML do formatu PDF. Przeksztalc komponenty Blazor w pliki PDF za pomoca kilku linijek kodu.

  1. Install IronPDF with NuGet Package Manager

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

    IronPdf.HtmlToPdf.RenderHtmlAsPdf(htmlContent).SaveAs(outputPath);
  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 utworzyc nowy projekt Blazor Server?

Utworz nowy projekt i wybierz typ Blazor Server App. Visual Studio zapewnia szablon do budowy aplikacji Blazor po stronie serwera, ktore moga uzywac .NET do generowania PDF. Model hostingowy Blazor Server wykonuje twoja logike aplikacji na serwerze, dzieki czemu jest odpowiedni do sytuacji generacji PDF wymagajacych przetwarzania po stronie serwera.

Dialog tworzenia projektu Visual Studio pokazujacy Blazor Server App i inne szablony projektow Blazor z opisami

Jakie sa wymagania wstepne dla aplikacji Blazor Server?

Przed utworzeniem aplikacji Blazor Server z IronPDF upewnij sie, ze masz zainstalowany Visual Studio 2022 lub nowszy z obciazeniem dla ASP.NET i rozwoju webowego. Potrzebujesz SDK .NET 6 lub nowszej. Aplikacje Blazor Server wymagaja stalego polaczenia z serwerem, co czyni je odpowiednimi dla sytuacji, gdy musisz generowac PDF z zlozonej zawartosci HTML lub gdy pracujesz z danymi wrazliwymi, ktore powinny pozostac na serwerze.

Ktora wersje .NET powinienem uzyc?

Dla zgodnosci i wydajnosci z IronPDF w aplikacjach Blazor Server, uzyj .NET 6 lub wyzszy. IronPDF jest kompatybilny z .NET Core 3.1, .NET 5, .NET 6, .NET 7 i .NET 8. Najnowsza wersja LTS (.NET 6 lub .NET 8) zapewnia stabilnosc i dlugoterminowe wsparcie. Gdy wdrazasz do Azure, upewnij sie, ze twoj plan uslug Azure App Service wspiera wybrana wersje .NET.

Jak skonfigurowac ustawienia projektu?

Podczas konfigurowania projektu Blazor Server wybierz "Konfiguruj dla HTTPS", aby zapewnic bezpieczna komunikacje miedzy klientem a serwerem. Pozostaw "Wlacz Docker" niezaznaczone, chyba ze planujesz uruchomic IronPDF w Dockera. Dla uwierzytelnienia wybierz "Brak" poczatkowo - mozesz dodac uwierzytelnianie pozniej, jesli potrzebne. Nazwa projektu powinna przestrzegac konwencji nazewnictwa C# i unikac spacji lub znakow specjalnych.

Jak zainstalowac IronPDF do mojego projektu Blazor?

Po utworzeniu projektu, wykonaj te kroki, aby zainstalowac biblioteke IronPDF z NuGet w Visual Studio. IronPDF zapewnia API do tworzenia PDF z ciagow HTML, URL-i i istniejacych dokumentow PDF.

  1. W oknie Solution Explorer w Visual Studio kliknij prawym przyciskiem myszy References i wybierz Manage NuGet Packages.
  2. Wybierz Browse i wyszukaj IronPdf.
  3. Wybierz najnowsza wersje pakietu, zaznacz pole wyboru dla swojego projektu i kliknij zainstaluj.

Alternatywnie mozesz uzyc .NET CLI do zainstalowania go:

Install-Package IronPdf

Dla projektow celujacych w konkretne platformy, moze byc konieczne uzycie pakietow specyficznych dla platformy. Na przyklad, jesli wdrazasz na Linuxa, zapoznaj sie z przewodnikiem instalacji dla Linuxa.

Dlaczego wybrac NuGet Package Manager zamiast CLI?

GUI menedzera pakietow NuGet w Visual Studio zapewnia interfejs wizualny, ktory ulatwia przegladanie wersji pakietow, przegladanie zaleznosci i zarzadzanie wieloma projektami jednoczesnie. Pomaga to programistom nowym w IronPDF odkrywac dostepne pakiety i ich opisy. Podejscie CLI jest szybsze dla doswiadczonych deweloperow i lepiej nadaje sie do zautomatyzowanych potokow budowy lub gdy pracujesz z kontenerami Docker.

Jaka wersje IronPDF powinienem zainstalowac?

Zainstaluj najnowsza stabilna wersje IronPDF, aby miec dostep do nowych funkcji, popraw wydajnosc i uzyskaj aktualizacje bezpieczenstwa. Sprawdz lista zmian dla szczegolow na temat ostatnich aktualizacji. Jesli pracujesz z istniejacym projektem, upewnij sie, ze wersje sa kompatybilne z innymi zaleznosciami. Dla srodowisk produkcyjnych przeprowadz dokladne testy przed aktualizacja glownych wersji.

Jak zweryfikowac powodzenie instalacji?

Po instalacji, zweryfikuj, czy IronPDF jest poprawnie zainstalowany, sprawdzajac folder "Packages" w Solution Explorer. Powinienes zobaczyc "IronPdf" na liscie zaleznosci projektu. Dodaj using IronPdf; do pliku C# - IntelliSense powinien rozpoznac przestrzen nazw. Mozesz rowniez wykonac prosty test, tworzyc podstawowy PDF z HTML, aby potwierdzic, ze wszystko dziala poprawnie.

Jak dodac nowy komponent Razor do generowania PDF?

Po zainstalowaniu IronPDF w projekcie Blazor, dodaj nowy komponent Razor. Dla tego kursu nazwij go "IronPdfComponent". Ten komponent bedzie obslugiwal dane wejsciowe uzytkownika i dynamicznie generowal PDF na podstawie zawartosci HTML. Architektura komponentow w Blazor ulatwia tworzenie funkcjonalnosci generowania PDF, ktora mozna ponownie wykorzystywac w calym twoim zastosowaniu.

Dialog dodawania nowego elementu Visual Studio z wybranym komponentem Razor i wpisanym IronPdfComponent jako nazwa pliku

Po tym zaktualizuj kod w nastepujacy sposob:

@page "/IronPdf"
@inject IJSRuntime JS

<h3>IronPdfComponent</h3>

<EditForm Model="@_InputMsgModel" id="inputText">
  <div>
    <InputTextArea @bind-Value="@_InputMsgModel.HTML" rows="20" />
  </div>
  <div>
    <button type="button" @onclick="@SubmitHTML">Render HTML</button>
  </div>
</EditForm>
@page "/IronPdf"
@inject IJSRuntime JS

<h3>IronPdfComponent</h3>

<EditForm Model="@_InputMsgModel" id="inputText">
  <div>
    <InputTextArea @bind-Value="@_InputMsgModel.HTML" rows="20" />
  </div>
  <div>
    <button type="button" @onclick="@SubmitHTML">Render HTML</button>
  </div>
</EditForm>
HTML
@code {

    // Model to bind user input
    private InputHTMLModel _InputMsgModel = new InputHTMLModel();

    private async Task SubmitHTML()
    {
        // Set your IronPDF license key
        IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

        // Create a renderer to convert HTML to PDF
        var render = new IronPdf.ChromePdfRenderer();

        // Configure rendering options for better output
        render.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        render.RenderingOptions.MarginTop = 40;
        render.RenderingOptions.MarginBottom = 40;

        // Render the HTML input into a PDF document
        var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);

        var fileName = "iron.pdf";

        // Create a stream reference for the PDF content
        using var streamRef = new DotNetStreamReference(stream: doc.Stream);

        // Invoke JavaScript function to download the PDF in the browser
        await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
    }

    public class InputHTMLModel
    {
        public string HTML { get; set; } = @"<h1>Welcome to IronPDF</h1>
            <p>This is a sample PDF generated from HTML content in Blazor Server.</p>
            <ul>
                <li>Easy to use API</li>
                <li>High-quality rendering</li>
                <li>Full HTML5 and CSS3 support</li>
            </ul>";
    }
}
@code {

    // Model to bind user input
    private InputHTMLModel _InputMsgModel = new InputHTMLModel();

    private async Task SubmitHTML()
    {
        // Set your IronPDF license key
        IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

        // Create a renderer to convert HTML to PDF
        var render = new IronPdf.ChromePdfRenderer();

        // Configure rendering options for better output
        render.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        render.RenderingOptions.MarginTop = 40;
        render.RenderingOptions.MarginBottom = 40;

        // Render the HTML input into a PDF document
        var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);

        var fileName = "iron.pdf";

        // Create a stream reference for the PDF content
        using var streamRef = new DotNetStreamReference(stream: doc.Stream);

        // Invoke JavaScript function to download the PDF in the browser
        await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
    }

    public class InputHTMLModel
    {
        public string HTML { get; set; } = @"<h1>Welcome to IronPDF</h1>
            <p>This is a sample PDF generated from HTML content in Blazor Server.</p>
            <ul>
                <li>Easy to use API</li>
                <li>High-quality rendering</li>
                <li>Full HTML5 and CSS3 support</li>
            </ul>";
    }
}
Imports System.Threading.Tasks
Imports Microsoft.JSInterop
Imports IronPdf

@Code

' Model to bind user input
Private _InputMsgModel As New InputHTMLModel()

Private Async Function SubmitHTML() As Task
    ' Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"

    ' Create a renderer to convert HTML to PDF
    Dim render = New IronPdf.ChromePdfRenderer()

    ' Configure rendering options for better output
    render.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
    render.RenderingOptions.MarginTop = 40
    render.RenderingOptions.MarginBottom = 40

    ' Render the HTML input into a PDF document
    Dim doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML)

    Dim fileName = "iron.pdf"

    ' Create a stream reference for the PDF content
    Using streamRef = New DotNetStreamReference(stream:=doc.Stream)
        ' Invoke JavaScript function to download the PDF in the browser
        Await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef)
    End Using
End Function

Public Class InputHTMLModel
    Public Property HTML As String = "<h1>Welcome to IronPDF</h1>
        <p>This is a sample PDF generated from HTML content in Blazor Server.</p>
        <ul>
            <li>Easy to use API</li>
            <li>High-quality rendering</li>
            <li>Full HTML5 and CSS3 support</li>
        </ul>"
End Class
$vbLabelText   $csharpLabel

Ten komponent uzywa klasy ChromePdfRenderer do generowania PDF. Mozesz dostosowac renderowanie przy uzyciu roznych opcji, takich jak niestandardowe rozmiary papieru, marginesy i naglowki/stopki.

Dodaj ten kod JavaScript do _layout.cshtml, aby umozliwic pobranie PDF wygenerowanego przez IronPDF w aplikacji Blazor:

<script>
    // JavaScript function to download PDFs generated by IronPdf
    window.SubmitHTML = async (fileName, contentStreamReference) => {
        // Get the PDF content as an ArrayBuffer
        const arrayBuffer = await contentStreamReference.arrayBuffer();

        // Create a Blob from the ArrayBuffer
        const blob = new Blob([arrayBuffer]);

        // Create an object URL for the Blob
        const url = URL.createObjectURL(blob);

        // Create an anchor element to initiate the download
        const anchorElement = document.createElement("a");
        anchorElement.href = url;
        anchorElement.download = fileName ?? "download.pdf";

        // Programmatically click the anchor to start the download
        anchorElement.click();

        // Clean up by removing the anchor and revoking the object URL
        anchorElement.remove();
        URL.revokeObjectURL(url);
    };
</script>
<script>
    // JavaScript function to download PDFs generated by IronPdf
    window.SubmitHTML = async (fileName, contentStreamReference) => {
        // Get the PDF content as an ArrayBuffer
        const arrayBuffer = await contentStreamReference.arrayBuffer();

        // Create a Blob from the ArrayBuffer
        const blob = new Blob([arrayBuffer]);

        // Create an object URL for the Blob
        const url = URL.createObjectURL(blob);

        // Create an anchor element to initiate the download
        const anchorElement = document.createElement("a");
        anchorElement.href = url;
        anchorElement.download = fileName ?? "download.pdf";

        // Programmatically click the anchor to start the download
        anchorElement.click();

        // Clean up by removing the anchor and revoking the object URL
        anchorElement.remove();
        URL.revokeObjectURL(url);
    };
</script>
JAVASCRIPT

Edytuj plik NavMenu.razor w folderze Shared, aby zawrzec zakladke nawigacyjna do naszego nowego komponentu Razor. Dodaj następujący kod:

<div class="nav-item px-3">
    <NavLink class="nav-link" href="IronPdf">
        <span class="oi oi-list-rich" aria-hidden="true"></span> IronPdf
    </NavLink>
</div>
<div class="nav-item px-3">
    <NavLink class="nav-link" href="IronPdf">
        <span class="oi oi-list-rich" aria-hidden="true"></span> IronPdf
    </NavLink>
</div>
HTML

Po zastosowaniu tego wszystkiego, mozna uruchomic rozwiazanie i powinienes to zobaczyc:

Aplikacja Blazor z komponentem IronPDF pokazujacym pole wejsciowe tekstowe HTML i przycisk Renderuj HTML w glownym obszarze zawartosci

Dlaczego uzywac JavaScript do pobierania PDF w Blazor?

Blazor Server dziala na polaczeniu SignalR, gdzie caly kod C# jest wykonywany na serwerze. Interop JavaScript jest wymagany do wyzwalania specyficznych akcji przegladarki, takich jak pobieranie plikow. Klasa DotNetStreamReference przesyla dane binarne z serwera do klienta bez ladowania calego PDF do pamieci na raz. To podejscie jest bardziej efektywne niz kodowanie base64 i dziala dobrze dla duzych plikow PDF. Dla alternatywnych podejsc rozwaz eksportowanie PDF do strumieni pamieci.

Jakie sa czeste problemy przy implementacji pobierania PDF?

Typowe wyzwania obejmuja obsluge duzych plikow, ktore moga timeoutowac polaczenie SignalR, zarzadzanie rownoczesnymi zadaniami generowania PDF i zapewnienie prawidlowego usuwania zasobow. Aby uniknac wyciekow pamieci, zawsze usuwaj poprawnie dokumenty PDF i strumienie. Rozwaz implementacje asynchronicznej generacji PDF dla lepszej wydajnosci. Jesli napotkasz problemy z renderowaniem, sprawdz dokumentacje opcji renderowania dla wskazowek konfiguracyjnych.

Jak radzic sobie z duzymi plikami PDF?

Dla duzych plikow PDF rozwaz wdrozenie wskaznikow postepu i pobieranie w czesciach. Mozesz zoptymalizowac rozmiar PDF za pomoca technik kompresji. Ustaw odpowiednie limity czasu w konfiguracji Blazor Server:

services.AddServerSideBlazor()
    .AddHubOptions(options =>
    {
        options.MaximumReceiveMessageSize = 10 * 1024 * 1024; // 10MB
        options.ClientTimeoutInterval = TimeSpan.FromSeconds(60);
    });
services.AddServerSideBlazor()
    .AddHubOptions(options =>
    {
        options.MaximumReceiveMessageSize = 10 * 1024 * 1024; // 10MB
        options.ClientTimeoutInterval = TimeSpan.FromSeconds(60);
    });
$vbLabelText   $csharpLabel

Dla bardzo duzych dokumentow rozwaz zapis na serwerze i udostepnienie linku do pobrania zamiast bezposredniego przesylania strumieniowego.

Kiedy uzywac odniesien do strumienia vs bezposrednie pobieranie?

Uzyj DotNetStreamReference dla PDF ponizej 50 MB, ktore wymagaja natychmiastowego pobrania. Dla wiekszych plikow lub gdy potrzebujesz zapisac PDF na dysku, rozwaz wygenerowanie PDF na serwerze i zapewnienie linku do pobrania. Bezposrednie pobrania dobrze sprawdzaja sie w przypadku raportow i faktur, podczas gdy przetwarzanie wsadowe lub laczenie wielu PDF moze korzystac z przechowywania po stronie serwera. Rozwaz ograniczenia pamieci twojej aplikacji i wymagania dotyczace doswiadczen uzytkownika przy wyborze podejscia.

Często Zadawane Pytania

How do I create a new Blazor Server project for PDF generation?

To create a Blazor Server project with IronPDF, select 'Blazor Server App' as the project type in Visual Studio. The Blazor Server hosting model executes application logic on the server, making it ideal for PDF generation scenarios that require server-side processing with IronPDF.

What are the prerequisites for using Blazor Server apps with PDF generation?

You need Visual Studio 2022 or later with the ASP.NET and web development workload, plus .NET 6 SDK or higher. Blazor Server apps require a constant server connection, making them suitable for generating PDFs from complex HTML content using IronPDF or when working with sensitive data that should remain on the server.

Which .NET version should I use for PDF generation in Blazor?

For optimal compatibility and performance with IronPDF in Blazor Server applications, use .NET 6 or higher. IronPDF supports .NET Core 3.1, .NET 5, .NET 6, .NET 7, and .NET 8. The latest LTS versions (.NET 6 or .NET 8) provide stability and long-term support.

How do I configure project settings for a Blazor PDF application?

When configuring your Blazor Server project for IronPDF, select 'Configure for HTTPS' for secure communication. Leave 'Enable Docker' unchecked unless you plan to run IronPDF in Docker containers. Start with 'None' for authentication - you can add it later. Use proper C# naming conventions without spaces or special characters.

How can I quickly generate PDFs from HTML in Blazor Server?

IronPDF provides a simple one-line solution for HTML to PDF conversion in Blazor Server: IronPdf.HtmlToPdf.RenderHtmlAsPdf(htmlContent).SaveAs(outputPath). This allows you to transform your Blazor components into PDFs with minimal code.

What is the minimal workflow for implementing PDF generation in Blazor?

The minimal workflow consists of 5 steps: 1) Install IronPDF HTML-to-PDF library, 2) Create a new Blazor Project in Visual Studio, 3) Convert web pages by URL into PDF documents using IronPDF, 4) Render the web pages into the client's web browser, and 5) View PDF documents generated from HTML strings.

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
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 18,135,201 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.