Jak przekonwertować Razor do formatu PDF w Blazor Server przy użyciu języka C#

Konwersja Razor do formatu PDF w Blazor Server przy użyciu języka C

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

Konwertuj komponenty Razor na PDF w Blazor Server przy użyciu metody RenderRazorComponentToPdf z IronPDF. Przekształcaj komponenty interfejsu użytkownika C# w pliki PDF przy minimalnym nakładzie kodu i pełnej możliwości dostosowania nagłówków, stopek oraz formatowania stron.

Szybki start: Konwersja komponentu Razor do formatu PDF w kilka minut

Konwertuj komponenty Razor do formatu PDF w aplikacjach Blazor Server przy użyciu IronPDF. Metoda RenderRazorComponentToPdf przekształca twoje komponenty Razor w PDF za pomocą kilku linii kodu. Postępuj zgodnie z tym przewodnikiem, aby zintegrować konwersję Razor do PDF ze swoim projektem przy minimalnej konfiguracji i elastycznych opcjach dostosowywania.

  1. Install IronPDF with NuGet Package Manager

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

    // Install-Package IronPdf.Extensions.Blazor
    var pdf = new IronPdf.ChromePdfRenderer()
        .RenderRazorComponentToPdf<MyComponent>(new Dictionary<string,object> { {"persons",personsList} })
        .SaveAs("component-to-pdf.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

Jakie paczki NuGet sa potrzebne do konwersji Razor do PDF?

Pakiet IronPdf.Extensions.Blazor rozszerza główny pakiet IronPdf. Oba pakiety są wymagane do renderowania komponentów Razor do dokumentów PDF w aplikacji Blazor Server. To rozszerzenie zapewnia punkty integracji dla aplikacji Blazor Server, umożliwiając konwersję istniejących komponentów Razor do formatu PDF bez konieczności przeprowadzania rozległej refaktoryzacji.

Instalacja IronPdf.Extensions.Blazor automatycznie obejmuje podstawową bibliotekę IronPDF jako zależność. Pakiet rozszerzeń dodaje metody, takie jak RenderRazorComponentToPdf, które rozumieją model komponentów Blazor i prawidłowo renderują komponenty z powiązanymi danymi. Aby uzyskać optymalną wydajność i dostęp do najnowszych funkcji, należy korzystać z najnowszych wersji obu pakietów. Sprawdź dziennik zmian, aby zapoznać się z aktualizacjami i ulepszeniami.

Install-Package IronPdf.Extensions.Blazor
Biblioteka C# NuGet dla plików PDF

Zainstaluj za pomocą NuGet

Install-Package IronPdf.Extensions.Blazor

Jak renderować komponenty Razor do plików PDF w Blazor Server?

Do konwersji komponentów Razor do formatu PDF wymagany jest projekt aplikacji Blazor Server. Aplikacje Blazor Server działają na serwerze i renderują aktualizacje interfejsu użytkownika przez połączenie SignalR, dzięki czemu nadają się do generowania plików PDF, gdzie potrzebne jest przetwarzanie po stronie serwera. Architektura ta zapewnia renderowanie plików PDF na serwerze, zapewniając spójne wyniki niezależnie od przeglądarki lub urządzenia klienta.

Przed rozpoczęciem upewnij się, że masz zainstalowany pakiet .NET SDK oraz program Visual Studio 2019 lub nowszy z modułami ASP.NET i do tworzenia stron internetowych. Utwórz nową aplikację Blazor Server App poprzez szablony projektów Visual Studio lub używając .NET CLI z dotnet new blazorserver. Szczegółowe instrukcje instalacji i wymagania dotyczące poszczególnych platform można znaleźć w sekcji Przegląd instalacji.

Jakiej struktury klas modelowych powinienem użyć?

Dodaj standardową klasę C# o nazwie PersonInfo. Ta klasa służy jako model do przechowywania informacji o osobach. Wstaw następujący kod:

:path=/static-assets/pdf/content-code-examples/how-to/razor-to-pdf-blazor-server-model.cs
namespace BlazorSample.Data
{
    public class PersonInfo
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
    }
}
Namespace BlazorSample.Data
	Public Class PersonInfo
		Public Property Id() As Integer
		Public Property Name() As String
		Public Property Title() As String
		Public Property Description() As String
	End Class
End Namespace
$vbLabelText   $csharpLabel

Ten model przedstawia strukturę danych przekazaną do komponentu Razor i wyrenderowaną w pliku PDF. IronPDF współpracuje z dowolnym modelem obiektowym C#, od prostych POCO po złożone modele Entity Framework. Projektując modele do generowania plików PDF, należy wziąć pod uwagę sposób wyświetlania danych w docelowym dokumencie i odpowiednio dostosować właściwości struktury.

Jak zaimplementować komponent Razor do generowania plików PDF?

Użyj metody RenderRazorComponentToPdf, aby przekonwertować komponenty Razor na PDF. Uzyskaj dostęp do tej metody poprzez utworzenie instancji klasy ChromePdfRenderer. Metoda zwraca obiekt PdfDocument do eksportu lub dalszej modyfikacji.

Zwracany obiekt PdfDocument obsługuje dodatkowe modyfikacje, w tym konwersję do formatów PDF/A lub PDF/UA. Możesz łączyć lub dzielić dokument, obracać strony oraz dodawać adnotacje lub zakładki. W razie potrzeby zastosuj niestandardowe znaki wodne.

Dodaj komponent Razor o nazwie Person.razor. Wprowadź następujący kod:

@page "/Person"
@using BlazorSample.Data;
@using IronPdf;
@using IronPdf.Extensions.Blazor;

<h3>Person</h3>

@code {
    // A parameter to receive a list of persons from the parent component.
    [Parameter]
    public IEnumerable<PersonInfo> persons { get; set; }

    // Dictionary to hold parameters that will be passed to the PDF renderer.
    public Dictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();

    protected override async Task OnInitializedAsync()
    {
        // Initialize the persons list with some sample data.
        persons = new List<PersonInfo>
        {
            new PersonInfo { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
            new PersonInfo { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
            new PersonInfo { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
        };
    }

    private async void PrintToPdf()
    {
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Apply text footer to the PDF pages.
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} - {time}",
            DrawDividerLine = true,
            RightText = "Page {page} of {total-pages}",
            Font = IronSoftware.Drawing.FontTypes.Arial,
            FontSize = 11
        };

        Parameters.Add("persons", persons);

        // Render Razor component to PDF and save it.
        PdfDocument pdf = renderer.RenderRazorComponentToPdf<Person>(Parameters);
        File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData);
    }
}

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    @foreach (var person in persons)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Title</td>
            <td>@person.Description</td>
        </tr>
    }
</table>

<button class="btn btn-primary" @onclick="PrintToPdf">Print to Pdf</button>

Ta metoda zapewnia dostęp do wszystkich funkcji RenderingOptions. Dodaj nagłówki i stopki tekstowe oraz HTML, uwzględnij numery stron oraz dostosuj wymiary i układ strony. RenderingOptions obsługuje niestandardowe marginesy, ustawienia viewport dla responsywnych projektów i opóźnienia wykonania JavaScript dla dynamicznej treści.

W przypadku złożonych układów lub frameworków CSS, takich jak Bootstrap, należy wykorzystać możliwości responsywnego renderowania CSS, aby zapewnić prawidłowe wyświetlanie plików PDF na stronach o różnych rozmiarach.

Jak dodać nawigację do mojego komponentu Razor?

  • Przejdź do "Shared folder" i otwórz NavMenu.razor. Dodaj sekcję, która otworzy nasz komponent Razor, Person. Nasz komponent Person będzie drugą opcją.
<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
    <nav class="flex-column">
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="" Match="NavLinkMatch.All">
                <span class="oi oi-home" aria-hidden="true"></span> Home
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="Person">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Person
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="counter">
                <span class="oi oi-plus" aria-hidden="true"></span> Counter
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="fetchdata">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
            </NavLink>
        </div>
    </nav>
</div>

Ta konfiguracja nawigacji integruje się z systemem routingu Blazor, umożliwiając użytkownikom dostęp do funkcji generowania plików PDF z głównego menu nawigacyjnego aplikacji. Komponent NavLink zapewnia prawidłowe wyróżnienie aktywnej trasy.

Jak wygląda proces generowania plików PDF?

Uruchom projekt i wygeneruj dokument PDF. Kliknij przycisk "Drukuj do pliku PDF". IronPDF przetwarza komponent Razor, konwertuje go do formatu HTML i renderuje jako plik PDF przy użyciu silnika renderującego opartego na przeglądarce Chrome. Dzięki temu zachowana jest taka sama wierność wizualna, jak w nowoczesnych przeglądarkach internetowych.

Visual Studio debugging Blazor app with PDF generation code using ChromePdfRenderer and Razor components

Wygenerowany plik PDF zostanie zapisany w katalogu wyjściowym projektu. Dostosuj lokalizację zapisu, wdroż bezpośrednie pobieranie z przeglądarki lub przechowuj pliki PDF w chmurze, np. w usłudze Azure Blob Storage. W przypadku aplikacji produkcyjnych należy zaimplementować obsługę błędów i mechanizm przekazywania informacji zwrotnych użytkownikom w sytuacjach, gdy generowanie pliku PDF może się nie powieść lub przekroczyć przewidywany czas trwania.

Gdzie mogę pobrać kompletny działający przykład?

Pobierz kompletny kod do tego przewodnika w postaci pliku ZIP. Otwórz go w Visual Studio jako projekt aplikacji Blazor Server. Próbka zawiera wszystkie zależności, konfiguracje i przykładowy kod, aby od razu rozpocząć konwersję Razor do PDF w aplikacjach Blazor.

Pobierz przykładowy projekt Blazor do konwersji Razor na PDF

Gotowy, aby sprawdzić, co jeszcze możesz zrobić? Sprawdź naszą stronę z samouczkami tutaj: Konwersja PDF-ów

W przypadku bardziej zaawansowanych scenariuszy zapoznaj się z naszym samouczkiem dotyczącym Blazor, który obejmuje dodatkowe wzorce integracji i najlepsze praktyki dotyczące korzystania z IronPDF w aplikacjach Blazor.

Często Zadawane Pytania

What is the fastest way to convert a Razor component to PDF in Blazor Server?

The fastest way is using IronPDF's RenderRazorComponentToPdf method. With just one line of code, you can convert any Razor component to PDF: var pdf = new IronPdf.ChromePdfRenderer().RenderRazorComponentToPdf(new Dictionary { {"persons",personsList} }).SaveAs("component-to-pdf.pdf");

Which NuGet packages are required for Razor to PDF conversion in Blazor Server?

You need the IronPdf.Extensions.Blazor package, which automatically includes the core IronPDF library as a dependency. Install it using: Install-Package IronPdf.Extensions.Blazor

Can I add custom headers and footers when converting Razor components to PDF?

Yes, IronPDF provides full customization options for headers, footers, and page formatting when using the RenderRazorComponentToPdf method to convert your Razor components.

Why is Blazor Server recommended for PDF generation from Razor components?

Blazor Server applications run on the server and render UI updates over a SignalR connection, making them ideal for PDF generation. This architecture ensures IronPDF's rendering happens server-side, providing consistent results regardless of client browser or device.

Do I need to refactor my existing Razor components to convert them to PDF?

No, the IronPdf.Extensions.Blazor package enables you to convert existing Razor components into PDFs without extensive refactoring. The extension provides integration points that understand Blazor's component model.

How do I pass data to my Razor component when converting to PDF?

You can pass data using a Dictionary parameter in the RenderRazorComponentToPdf method. For example: new Dictionary { {"persons", personsList} } where "persons" is the parameter name and personsList is your data.

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.