Jak uzywac IronPDF z Blazor do generowania PDF | 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 umożliwia konwersje HTML do PDF w aplikacjach Blazor Server przy użyciu C# z minimalna konfiguracja, wspierając .NET 6 i oferujac możliwosci generowania PDF bezpośrednio z komponentow Blazor.

Szybki start: Renderowanie PDF w Blazor Server

Rozpocznij prace z IronPDF w swoich aplikacjach Blazor Server. Ten przykład pokazuje, jak renderować zawartość 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 utworzyć 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 mogą używać .NET do generowania PDF. Model hostingowy Blazor Server wykonuje twoja logike aplikacji na serwerze, dzięki 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 połączenia z serwerem, co czyni je odpowiednimi dla sytuacji, gdy musisz generować PDF z zlozonej zawartości HTML lub gdy pracujesz z danymi wrazliwymi, ktore powinny pozostac na serwerze.

Ktora wersje .NET powinienem uzyc?

Dla zgodności i wydajności 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 skonfigurować ustawienia projektu?

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

Jak zainstalować IronPDF do mojego projektu Blazor?

Po utworzeniu projektu, wykonaj te kroki, aby zainstalować biblioteke IronPDF z NuGet w Visual Studio. IronPDF zapewnia API do tworzenia PDF z ciagow HTML, URL-i i istniejących dokumentów PDF.

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

Alternatywnie możesz uzyc .NET CLI do zainstalowania go:

Install-Package IronPdf

Dla projektow celujacych w konkretne platformy, może być konieczne użycie pakietow specyficznych dla platformy. Na przykład, jeśli wdrazasz na Linuxa, zapoznaj sie z przewodnikiem instalacji dla Linuxa.

Dłączego wybrac NuGet Package Manager zamiast CLI?

GUI menedzera pakietow NuGet w Visual Studio zapewnia interfejs wizualny, ktory ułatwia przeglądanie wersji pakietow, przeglądanie zależności i zarządzanie wieloma projektami jednoczesnie. Pomaga to programistom nowym w IronPDF odkrywac dostępne 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 zainstalować?

Zainstaluj najnowsza stabilna wersje IronPDF, aby mieć dostep do nowych funkcji, popraw wydajność i uzyskaj aktualizacje bezpieczeństwa. Sprawdz lista zmian dla szczegółow na temat ostatnich aktualizacji. Jeśli pracujesz z istniejącym projektem, upewnij sie, ze wersje sa kompatybilne z innymi zależnościami. Dla środowisk produkcyjnych przeprowadz dokładne testy przed aktualizacja głównych wersji.

Jak zweryfikowac powodzenie instalacji?

Po instalacji, zweryfikuj, czy IronPDF jest poprawnie zainstalowany, sprawdzając folder "Packages" w Solution Explorer. Powinieneś zobaczyć "IronPDF" wymieniony wśród zależności Twojego projektu. Dodaj using IronPdf; do pliku C# — IntelliSense powinno rozpoznać przestrzeń nazw. Możesz również wykonac prosty test, tworzyć podstawowy PDF z HTML, aby potwierdzić, ze wszystko działa poprawnie.

Jak dodac nowy komponent Razor do generowania PDF?

Po zainstalowaniu IronPDF w projekcie Blazor, dodaj nowy komponent Razor. W tym samouczku nazwij go IronPdfComponent. Ten komponent będzie obsługiwal dane wejsciowe użytkownika i dynamicznie generowal PDF na podstawie zawartości HTML. Architektura komponentow w Blazor ułatwia tworzenie funkcjonalności generowania PDF, która można ponownie wykorzystywac w całym twoim zastosowaniu.

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

Po tym zaktualizuj kod w następujący 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 używa klasy ChromePdfRenderer do generowania PDF. Możesz dostosować renderowanie przy użyciu różnych opcji, takich jak niestandardowe rozmiary papieru, marginesy i nagłówki/stopki.

Dodaj ten kod JavaScript do _layout.cshtml, aby umożliwić pobieranie pliku PDF renderowanego 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 dodać zakładkę nawigacyjną 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, można uruchomic rozwiązanie i powinienes to zobaczyć:

Aplikacja Blazor z komponentem IronPDF pokazujacym pole wejsciowe tekstowe HTML i przycisk Renderuj HTML w głównym obszarze zawartości

Dłączego używać JavaScript do pobierania PDF w Blazor?

Blazor Server działa na połączeniu SignalR, gdzie caly kod C# jest wykonywany na serwerze. Interop JavaScript jest wymagany do wyzwalania specyficznych akcji przeglądarki, takich jak pobieranie plików. Klasa DotNetStreamReference przesyła dane binarne z serwera do klienta bez ładowania całego pliku PDF do pamięci za jednym razem. To podejście jest bardziej efektywne niz kodowanie base64 i działa dobrze dla duzych plików PDF. Dla alternatywnych podejsc rozwaz eksportowanie PDF do strumieni pamięci.

Jakie sa czeste problemy przy implementacji pobierania PDF?

Typowe wyzwania obejmuja obsługę duzych plików, ktore mogą timeoutowac połączenie SignalR, zarządzanie rownoczesnymi zadaniami generowania PDF i zapewnienie prawidlowego usuwania zasobów. Aby uniknąć wycieków pamięci, zawsze należy prawidłowo usuwać dokumenty PDF i MemoryStream. Rozwaz implementacje asynchronicznej generacji PDF dla lepszej wydajności. Jeśli napotkasz problemy z renderowaniem, sprawdz dokumentacje opcji renderowania dla wskazowek konfiguracyjnych.

Jak radzic sobie z duzymi plikami PDF?

Dla duzych plików PDF rozwaz wdrożenie wskaźników postepu i pobieranie w częściach. Możesz zoptymalizować 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 dokumentów rozwaz zapis na serwerze i udostępnienie linku do pobrania zamiast bezpośredniego przesylania strumieniowego.

Kiedy używać odniesien do strumienia vs bezpośrednie pobieranie?

Użyj DotNetStreamReference dla plików PDF poniżej 50 MB, które wymagają natychmiastowego pobrania. Dla wiekszych plików lub gdy potrzebujesz zapisać PDF na dysku, rozwaz wygenerowanie PDF na serwerze i zapewnienie linku do pobrania. Bezpośrednie pobrania dobrze sprawdzają sie w przypadku raportow i faktur, podczas gdy przetwarzanie wsadowe lub łączenie wielu PDF może korzystać z przechowywania po stronie serwera. Rozwaz ograniczenia pamięci twojej aplikacji i wymagania dotyczące doswiadczen użytkownika przy wyborze podejścia.

Często Zadawane Pytania

Jak utworzyc nowy projekt Blazor Server do generowania PDF?

Aby utworzyc projekt Blazor Server z IronPDF, wybierz 'Blazor Server App' jako typ projektu w Visual Studio. Model hostingu Blazor Server wykonuje logike aplikacji po stronie serwera, co czyni go idealnym dla scenariuszy generowania PDF wymagajacych przetwarzania po stronie serwera z IronPDF.

Jakie sa wymagne dla korzystania z aplikacji Blazor Server z generowaniem PDF?

Potrzebujesz Visual Studio 2022 lub nowszego z obciazeniem dla ASP.NET i rozwoju aplikacji webowych, a takze .NET 6 SDK lub wyzszego. Aplikacje Blazor Server wymagaja stalelgo polaczenia z serwerem, co czyni je odpowiednimi do generowania PDF z zlozoną trescia HTML uzywajac IronPDF lub przy pracy z wrazliwymi danymi, ktore powinny pozostac na serwerze.

Ktorej wersji .NET powinienem uzywac do generowania PDF w Blazor?

Dla optymalnej kompatybilnosci i wydajnosci z IronPDF w aplikacjach Blazor Server uzywaj .NET 6 lub wyzszego. IronPDF wspiera .NET Core 3.1, .NET 5, .NET 6, .NET 7 i .NET 8. Najnowsze wersje LTS (.NET 6 lub .NET 8) zapewniaja stabilnosc i dlugoterminowe wsparcie.

Jak skonfigurowac ustawienia projektu dla aplikacji PDF w Blazor?

Kiedy konfigurujesz projekt Blazor Server dla IronPDF, wybierz 'Configure for HTTPS' dla bezpiecznej komunikacji. Pozostaw 'Enable Docker' nieodznaczone chyba, ze planujesz uruchomic IronPDF w kontenerach Docker. Zacznij od 'None' dla uwierzytelniania - mozesz to dodac pozniej. Uzywaj poprawnych konwencji nazewniczych C# bez spacji lub znakow specjalnych.

Jak moge szybko generowac PDFy z HTML w Blazor Server?

IronPDF zapewnia proste rozwiazanie w jednej linii dla konwersji HTML na PDF w Blazor Server: IronPdf.HtmlToPdf.RenderHtmlAsPdf(htmlContent).SaveAs(outputPath). To pozwala przeksztalcic komponenty Blazor w PDFy z minimalnym kodem.

Jaki jest minimalny przeplyw pracy dla wdrozenia generowania PDF w Blazor?

Minimalny przeplyw pracy sklada sie z 5 krokow: 1) Zainstaluj biblioteke HTML-to-PDF IronPDF, 2) Stworz nowy projekt Blazor w Visual Studio, 3) Konwertuj strony internetowe po URL na dokumenty PDF uzywajac IronPDF, 4) Renderuj strony internetowe w przegladarce internetowej klienta, i 5) Przegladaj dokumenty PDF wygenerowane z ciagow HTML.

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,926,724 | Wersja: 2026.5 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.