Jak konwertować strony Razor do formatu PDF w aplikacji internetowej ASP .NET Core

Jak przekonwertować strony Razor do PDF w aplikacji ASP.NET Core C

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

IronPDF umożliwia płynną konwersję stron Razor (.cshtml) do dokumentów PDF w aplikacjach ASP.NET Core przy użyciu metody RenderRazorToPdf, upraszczając generowanie plików PDF z treści internetowych z pełną obsługą renderowania C# i HTML.

Strona Razor to plik z rozszerzeniem .cshtml, który łączy C# i HTML w celu generowania treści internetowych. W ASP.NET Core strony Razor to prostszy sposob na organizacje kodu dla aplikacji webowych, czyniac je idealnym rozwiązaniem dla prostych stron, ktore sluza tylko do odczytu lub prostego wprowadzania danych.

Aplikacja webowa ASP.NET Core to aplikacja sieciowa zbudowana przy użyciu ASP.NET Core, wielopłatformowego frameworka do tworzenia nowoczesnych aplikacji webowych.

IronPDF upraszcza proces tworzenia plików PDF ze stron Razor w projekcie ASP.NET Core Web App. Dzięki temu generowanie PDF w aplikacjach ASP.NET Core Web App staje sie proste.

Szybki start: Konwersja stron Razor do PDF w kilka sekund

Przekonwertuj swoje strony Razor na wysokiej jakosci PDF w aplikacji ASP.NET Core. Korzystając z metody RenderRazorToPdf, można przekształcić pliki CSHTML w dokumenty PDF, optymalizując przepływ pracy i usprawniając dystrybucję dokumentów. Ten przewodnik prowadzi cie przez proste kroki potrzebne do osiagniecia tego w kilka minut.

  1. Install IronPDF with NuGet Package Manager

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

    // Install-Package IronPdf.Extensions.Razor
    var pdf = new IronPdf.ChromePdfRenderer().RenderRazorToPdf("Views/Home/Index.cshtml");
  3. Wdrożenie do testowania w środowisku produkcyjnym

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

    arrow pointer

Wprowadzenie

Strony Razor zapewniają potężny i intuicyjny sposob na budowanie dynamicznych treści webowych w aplikacjach ASP.NET Core. Połączone z możliwosciami renderowania IronPDF, deweloperzy mogą tworzyć profesjonalne dokumenty PDF bezpośrednio z ich treści webowych. To podejście usuwa skomplikówana logike generowania PDF i pozwala na wykorzystanie juz znanych umiejetnosci HTML i CSS.

Integracja miedzy IronPDF a stronami Razor jest szczegółnie cenna przy generowaniu raportow, faktur, certyfikatow i innych dokumentów wymagajacych dynamicznej prezentacji danych. Używając tej samej skladni Razor, z która jestes juz zaznajomiony, możesz utrzymac spojnosc miedzy widokami webowymi a wyjsciami PDF.

Jakie paczki NuGet sa potrzebne do konwersji Razor do PDF?

Pakiet IronPdf.Extensions.Razor jest rozszerzeniem głównego pakietu IronPdf. Aby renderować strony Razor Pages do dokumentów PDF w aplikacji internetowej .NET Core, potrzebne są zarówno pakiety IronPdf.Extensions.Razor, jak i IronPdf. Szczegółowe instrukcje instalacji znajdziesz w naszym przewodniku po instalacji.

# Command to install IronPdf.Extensions.Razor package using NuGet Package Manager
Install-Package IronPdf.Extensions.Razor
# Command to install IronPdf.Extensions.Razor package using NuGet Package Manager
Install-Package IronPdf.Extensions.Razor
SHELL
Biblioteka C# NuGet dla plików PDF

Zainstaluj za pomocą NuGet

Install-Package IronPdf.Extensions.Razor

Jak przekonwertować strony Razor do PDF w ASP.NET Core?

Będziesz potrzebowal projektu ASP.NET Core Web App, aby przekonwertować strony Razor na pliki PDF. Proces ten obejmuje utworzenie modelu danych, skonfigurowanie strony Razor w celu wyświetlenia tych danych, a następnie użycie metody RenderRazorToPdf biblioteki IronPDF do wygenerowania pliku PDF.

Dłączego potrzebuje klasy modelu do generowania PDF?

Klasy modeli sluza jako podstawa reprezentacji danych w twoich stronach Razor. Zapewniaja one strukturalny sposob przekazywania danych z logiki kontrolera do widoku, zapewniając bezpieczeństwo typow i łatwość konserwacji. Podczas generowania PDF, modele te staja sie jeszcze bardziej kluczowe, gdyz definiuja dokładna strukture danych, ktore pojawia sie w koncowym dokumencie.

  • Utworz nowy folder w projekcie i nazwij go "Models".
  • Dodaj standardową klasę C# do folderu i nazwij ją Person. Ta klasa będzie służyć jako model danych indywidualnych. Użyj poniższego fragmentu kodu:
:path=/static-assets/pdf/content-code-examples/how-to/cshtml-to-pdf-razor-model.cs
namespace RazorPageSample.Models
{
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
    }
}
Namespace RazorPageSample.Models
	Public Class Person
		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

Jak skonfigurować strone Razor do konwersji na PDF?

Dodaj pustą stronę Razor do folderu "Pages" i nazwij ją persons.cshtml.

  • Zmodyfikuj nowo utworzony plik Persons.cshtml, korzystając z poniższego przykładowego kodu.

Poniższy kod wyświetla informacje w przeglądarce. Zauwaz, jak skladnia Razor pozwala na bezproblemowa integracje kodu C# z HTML, co czyni ja idealnym rozwiązaniem do generowania dynamicznej zawartości, która można przekonwertować do PDF:

@page
@using RazorPageSample.Models;
@model RazorPageSample.Pages.PersonsModel
@{
}

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    @foreach (var person in ViewData["personList"] as List<Person>)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Title</td>
            <td>@person.Description</td>
        </tr>
    }
</table>

<form method="post">
    <button type="submit">Print</button>
</form>
@page
@using RazorPageSample.Models;
@model RazorPageSample.Pages.PersonsModel
@{
}

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    @foreach (var person in ViewData["personList"] as List<Person>)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Title</td>
            <td>@person.Description</td>
        </tr>
    }
</table>

<form method="post">
    <button type="submit">Print</button>
</form>
HTML

Renderuj strony Razor do PDF

Następnie, kod poniżej najpierw tworzy instancje klasy ChromePdfRenderer. Przekazanie tego do metody RenderRazorToPdf wystarczy, aby przekonwertować tę stronę Razor na dokument PDF.

Masz pełny dostep do funkcji dostępnych w RenderingOptions. Funkcje te obejmuja możliwosc zastosowania numeracji stron w generowanym dokumencie PDF, ustawianie niestandardowych marginesow, oraz dodawanie niestandardowego tekstu oraz nagłówków i stopki HTML. Można również skonfigurować metadane dla swoich PDF, aby zapewnic wlasciwa identyfikacje dokumentu i możliwosc wyszukiwania.

  • Otwórz menu rozwijane dla pliku Persons.cshtml, aby wyświetlić plik Persons.cshtml.cs.
  • Zastąp Persons.cshtml.cs poniższym kodem.
using IronPdf.Razor;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPageSample.Models;

namespace RazorPageSample.Pages
{
    public class PersonsModel : PageModel
    {
        [BindProperty(SupportsGet = true)]
        public List<Person> Persons { get; set; }

        // Handle GET request to load initial data
        public void OnGet()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;
        }

        // Handle POST request to convert Razor page to PDF
        public IActionResult OnPost()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;

            ChromePdfRenderer renderer = new ChromePdfRenderer();

            // Render Razor Page to PDF document
            PdfDocument pdf = renderer.RenderRazorToPdf(this);

            // Return the generated PDF file with appropriate content headers
            Response.Headers.Add("Content-Disposition", "inline");
            return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");

            // Optionally view the output PDF in browser (uncomment below line if needed)
            // return File(pdf.BinaryData, "application/pdf");
        }
    }
}
using IronPdf.Razor;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPageSample.Models;

namespace RazorPageSample.Pages
{
    public class PersonsModel : PageModel
    {
        [BindProperty(SupportsGet = true)]
        public List<Person> Persons { get; set; }

        // Handle GET request to load initial data
        public void OnGet()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;
        }

        // Handle POST request to convert Razor page to PDF
        public IActionResult OnPost()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;

            ChromePdfRenderer renderer = new ChromePdfRenderer();

            // Render Razor Page to PDF document
            PdfDocument pdf = renderer.RenderRazorToPdf(this);

            // Return the generated PDF file with appropriate content headers
            Response.Headers.Add("Content-Disposition", "inline");
            return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");

            // Optionally view the output PDF in browser (uncomment below line if needed)
            // return File(pdf.BinaryData, "application/pdf");
        }
    }
}
Imports IronPdf.Razor
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Imports RazorPageSample.Models

Namespace RazorPageSample.Pages
	Public Class PersonsModel
		Inherits PageModel

		<BindProperty(SupportsGet := True)>
		Public Property Persons() As List(Of Person)

		' Handle GET request to load initial data
		Public Sub OnGet()
			Persons = New List(Of Person) From {
				New Person With {
					.Name = "Alice",
					.Title = "Mrs.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Bob",
					.Title = "Mr.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Charlie",
					.Title = "Mr.",
					.Description = "Software Engineer"
				}
			}

			ViewData("personList") = Persons
		End Sub

		' Handle POST request to convert Razor page to PDF
		Public Function OnPost() As IActionResult
			Persons = New List(Of Person) From {
				New Person With {
					.Name = "Alice",
					.Title = "Mrs.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Bob",
					.Title = "Mr.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Charlie",
					.Title = "Mr.",
					.Description = "Software Engineer"
				}
			}

			ViewData("personList") = Persons

			Dim renderer As New ChromePdfRenderer()

			' Render Razor Page to PDF document
			Dim pdf As PdfDocument = renderer.RenderRazorToPdf(Me)

			' Return the generated PDF file with appropriate content headers
			Response.Headers.Add("Content-Disposition", "inline")
			Return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf")

			' Optionally view the output PDF in browser (uncomment below line if needed)
			' return File(pdf.BinaryData, "application/pdf");
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

Metoda RenderRazorToPdf zwraca obiekt PdfDocument, który może być poddany dalszej obróbce i edycji. Można wyeksportować plik PDF jako PDFA lub PDFUA, zastosować podpis cyfrowy do wyrenderowanego dokumentu PDF lub łączyć i dzielić dokumenty PDF. Metoda umożliwia równiez obracanie stron, dodawanie adnotacji lub zakladek, oraz dodawanie własnych znakow wodnych do twojego PDF.

W celu zwiekszonego zarządzania dokumentami można również kompresowac PDF w celu zmniejszenia rozmiaru pliku bez utraty jakosci. Jest to szczegółnie przydatne w przypadku pracy z duzymi raportami lub gdy przepustowosc jest ograniczeniem. Dodatkowo, rozbudowane możliwosci edycji, jakie zapewnia IronPDF, sa opisane w naszym obszernym kursie na temat edycji PDF.

Jak dodac nawigacje dla strony generowania PDF?

Nawigacja jest kluczowa dla doswiadczenia użytkownika w twojej aplikacji ASP.NET Core. Integrujac strone generowania PDF do głównej nawigacji, użytkownicy mogą łatwo uzyskać dostep do funkcjonalności bez recznego wpisywania adresow URL.

  • Przejdz do folderu Pages -> Shared folder -> _Layout.cshtml. Umiesc element nawigacyjny "Person" za "Home".

Upewnij się, że wartość atrybutu asp-page dokładnie odpowiada nazwie naszego pliku, która w tym przypadku brzmi Persons. To zapewnia poprawne kierowanie w twojej aplikacji ASP.NET Core:

<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">RazorPageSample</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Persons">Person</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
</header>
<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">RazorPageSample</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Persons">Person</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
</header>
HTML

Co sie dzieje, gdy uruchamiam generowanie PDF?

To pokazuje, jak uruchomić projekt i wygenerować dokument PDF. Gdy klikniesz łącze nawigacyjne "Person", zobaczysz dane wyświetlone w formacie tabeli. Klikniecie przycisku "Print" uruchamia proces generowania PDF, konwertując obecny widok strony Razor do pobieranego dokumentu PDF.

Visual Studio showing C# PersonsModel class with OnGet and OnPostAsync methods for PDF generation using IronPDF

Wygenerowany PDF zachowuje całe stylizacje i formatowanie z twojej strony Razor, zapewniając spojny wyglad miedzy widokiem webowym a wyjsciem PDF. To podejście jest szczegółnie przydatne przy generowaniu raportow, faktur, lub jakiegokolwiek dokumentu, ktory wymaga danych z bazy danych czy logiki biznesowej aplikacji.

Gdzie mogę pobrac kompletny przykład aplikacji ASP.NET Core Web App?

Możesz pobrac kompletny kod tego przewodnika jako spakowany plik, ktory możesz otworzyć w Visual Studio jako projekt ASP.NET Core Web App.

Pobierz projekt aplikacji ASP.NET Core Web App RazorPageSample.zip

Często Zadawane Pytania

Jak przekonwertować strony Razor na PDF w ASP.NET Core?

Możesz przekonwertować strony Razor na PDF w ASP.NET Core używając metody RenderRazorToPdf IronPDF. Wystarczy zainstalować pakiet IronPdf.Extensions.Razor i użyć ChromePdfRenderer, aby renderować pliki .cshtml bezpośrednio do dokumentów PDF.

Jakie pakiety NuGet są wymagane do konwersji Razor do PDF?

Potrzebujesz dwóch pakietów NuGet: IronPdf.Extensions.Razor (pakiet rozszerzeń) i IronPdf (główny pakiet). Oba pakiety są wymagane do renderowania stron Razor do dokumentów PDF w aplikacjach webowych ASP.NET Core.

Czy mogę używać dynamicznych danych w moich stronach Razor przy konwersji na PDF?

Tak, IronPDF w pełni obsługuje dynamiczne dane na stronach Razor. Możesz używać kodu C#, wiązania modelu i wszystkich standardowych funkcji składni Razor przy konwersji na PDF, co czyni go idealnym narzędziem do generowania raportów, faktur i certyfikatów z dynamiczną zawartością.

Jakie typy dokumentów mogę generować ze stron Razor?

Konwersja Razor na PDF IronPDF jest doskonała do generowania różnych typów dokumentów, w tym raportów, faktur, certyfikatów, paragonów i innych dokumentów wymagających dynamicznej prezentacji danych z zachowaniem istniejących stylów HTML i CSS.

Jak szybko mogę wdrożyć konwersję Razor na PDF w moim projekcie?

Możesz wdrożyć konwersję Razor na PDF w ciągu kilku minut z IronPDF. Minimalny przepływ pracy obejmuje zaledwie 5 kroków: instalacja biblioteki, dodanie klasy modelu, utworzenie strony Razor, edytowanie pliku .cs, aby użyć metody RenderRazorToPdf i uruchomienie aplikacji.

Czy konwersja zachowuje moje style HTML i CSS?

Tak, IronPDF zachowuje Twoje style HTML i CSS przy konwersji stron Razor na PDF. Pozwala to na utrzymanie spójności pomiędzy widokami webowymi i wynikami PDF z użyciem tych samych stylów i układów, które już stworzyłeś.

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
Sprawdzone przez
Jeff Fritz
Jeffrey T. Fritz
Główny Menedżer Programu - Zespół .NET Community
Jeff jest również Głównym Menedżerem Programu dla zespołów .NET i Visual Studio. Jest producentem wykonawczym wirtualnej serii konferencji .NET Conf i prowadzi 'Fritz and Friends', transmisję na żywo dla deweloperów emitowaną dwa razy w tygodniu, gdzie rozmawia o technologii i pisze kod razem z widzami. Jeff pisze warsztaty, prezentacje i planuje treści dla największych wydarzeń Microsoft dla deweloperów, w tym Microsoft Build, Microsoft Ignite, .NET Conf i Microsoft MVP Summit.
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.