Comment convertir des pages Razor en PDFs dans une application Web ASP .NET Core

How to Convert Razor Pages to PDFs in ASP.NET Core Web App

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

Une page Razor est un fichier avec une extension .cshtml qui combine C# et HTML pour générer du contenu web. Dans ASP.NET Core, les pages Razor sont un moyen plus simple d'organiser le code pour les applications web, les rendant adaptées aux pages simples qui sont en lecture seule ou pour une saisie de données simple.

Une application Web ASP.NET Core est une application web construite avec ASP.NET Core, un framework multiplateforme pour le développement d'applications Web modernes.

IronPDF simplifie le processus de création de fichiers PDF à partir de pages Razor dans un projet d'application Web ASP.NET Core. Cela rend la génération de PDF facile et directe dans les applications Web ASP.NET Core.

Quickstart : convertir les pages Razor en PDF en quelques secondes

Exploitez la puissance de IronPDF pour convertir rapidement vos pages Razor en PDF de haute qualité dans une application ASP.NET Core. En utilisant la méthode RenderRazorToPdf, vous pouvez transformer en toute transparence des fichiers CSHTML en documents PDF, optimisant votre flux de travail et améliorant la distribution des documents. Ce guide vous guidera à travers les étapes simples nécessaires pour réaliser cela en quelques minutes, garantissant un processus fluide et efficace pour les développeurs.

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    // Install-Package IronPdf.Extensions.Razor
    var pdf = new IronPdf.ChromePdfRenderer().RenderRazorToPdf("Views/Home/Index.cshtml");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

Flux de travail minimal (5 étapes)

  1. Téléchargez la bibliothèque C# pour convertir les pages Razor en PDF dans une application Web ASP.NET Core
  2. Ajoutez une classe modèle pour les données
  3. Créez une nouvelle page Razor et éditez le fichier ".cshtml" pour afficher les données
  4. Modifiez le fichier ".cs" et utilisez la méthode RenderRazorToPdf
  5. Téléchargez le projet d'exemple pour un démarrage rapide

Package d'extension IronPDF

Le package IronPdf.Extensions.Razor est une extension du package principal IronPdf. Les deux packages IronPdf.Extensions.Razor et IronPdf sont nécessaires pour rendre les pages Razor en documents PDF dans une application Web ASP.NET Core.

# 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
class="products-download-section">
data-modal-id="trial-license-after-download">
class="product-image"> Bibliothèque C# NuGet pour PDF
class="product-info">

Installer avec NuGet

class="copy-nuget-row">
Install-Package IronPdf.Extensions.Razor
class="copy-button">
class="nuget-link">nuget.org/packages/IronPdf.Extensions.Razor/

Rendre les pages Razor en PDF

Vous aurez besoin d'un projet d'application Web ASP.NET Core pour convertir les pages Razor en fichiers PDF.

Créer une classe modèle

  • Créez un nouveau dossier dans le projet et nommez-le "Models".
  • Ajoutez une classe C# standard au dossier et nommez-la "Person". Cette classe servira de modèle pour les données individuelles. Utilisez l'extrait de code suivant :
: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

Ajouter une page Razor

Ajoutez une page Razor vide au dossier "Pages" et nommez-la "persons.cshtml".

  • Modifiez le fichier "Persons.cshtml" nouvellement créé en utilisant l'exemple de code fourni ci-dessous.

Le code ci-dessous est destiné à afficher les informations dans le navigateur.

@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

Ensuite, le code ci-dessous instancie d'abord la classe ChromePdfRenderer. Passer this à la méthode RenderRazorToPdf suffit pour convertir cette page Razor en document PDF.

L'utilisateur a un accès complet aux fonctionnalités disponibles dans RenderingOptions. These features include the ability to apply page numbers to the generated PDF, set custom margins, and add custom text as well as HTML headers and footers.

  • Ouvrez le menu déroulant du fichier "Persons.cshtml" pour voir le fichier "Persons.cshtml.cs".
  • Modifiez le "Persons.cshtml.cs" avec le code ci-dessous.
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

La méthode RenderRazorToPdf renvoie un objet PdfDocument qui peut subir un traitement et une édition supplémentaires. You can export the PDF as PDFA or PDFUA, apply a digital signature to the rendered PDF document, or merge and split PDF documents. The method also allows you to rotate pages, add annotations or bookmarks, and stamp custom watermarks onto your PDF.

Ajouter une section à la barre de navigation supérieure

  • Accédez au dossier Pages -> dossier Shared -> _Layout.cshtml. Assurez-vous que la valeur de l'attribut asp-action correspond exactement à notre nom de fichier, qui dans ce cas est "Persons".

Assurez-vous que la valeur de l'attribut asp-page correspond exactement à notre nom de fichier, qui dans ce cas est "Persons".

<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

Cela montrera comment exécuter le projet et générer un document PDF.

Exécuter le projet ASP.NET Core MVC

Exécuter le projet Web App ASP.NET Core

Télécharger le projet Web App ASP.NET Core

Vous pouvez télécharger le code complet de ce guide sous forme de fichier zippé, que vous pouvez ouvrir dans Visual Studio en tant que projet Web App ASP.NET Core.

Téléchargez le projet RazorPageSample.zip Web App ASP.NET Core

Questions Fréquemment Posées

À quoi servent les Pages Razor dans ASP.NET Core ?

Les Pages Razor sont utilisées dans ASP.NET Core pour organiser le code des applications web, permettant aux développeurs de combiner efficacement C# et HTML pour créer du contenu web.

Comment convertissez-vous les Pages Razor en documents PDF en C# ?

Vous pouvez convertir les Pages Razor en documents PDF en C# en utilisant la méthode RenderRazorToPdf d'IronPDF, qui utilise la classe ChromePdfRenderer pour générer des PDF à partir de fichiers CSHTML.

Quels paquets NuGet sont essentiels pour rendre les Pages Razor en PDF ?

Les paquets NuGet essentiels pour rendre les Pages Razor en PDF sont IronPdf et IronPdf.Extensions.Razor.

Comment pouvez-vous installer les paquets nécessaires à la conversion PDF dans ASP.NET Core ?

Vous pouvez installer les paquets nécessaires à la conversion PDF en utilisant le Gestionnaire de Pack NuGet avec la commande : Install-Package IronPdf.Extensions.Razor.

Quel rôle joue une classe modèle dans la conversion des Pages Razor en PDF ?

Une classe modèle, telle que 'Person', définit la structure de données de l'application, aidant à organiser les informations affichées sur la Page Razor qui sera convertie en PDF.

Quelle méthode est utilisée pour rendre les Pages Razor en documents PDF ?

La méthode RenderRazorToPdf est utilisée pour rendre les Pages Razor en documents PDF, utilisant la classe ChromePdfRenderer d'IronPDF.

Pouvez-vous améliorer la sortie PDF lors de la conversion des Pages Razor ?

Oui, IronPDF vous permet d'améliorer la sortie PDF avec des fonctionnalités telles que des numéros de page, des marges personnalisées, et des en-têtes et pieds de page HTML en utilisant RenderingOptions.

Quelles sont les fonctionnalités avancées disponibles lors de la génération de PDF avec IronPDF ?

Les fonctionnalités avancées avec IronPDF incluent l'exportation en PDFA ou PDFUA, l'ajout de signatures numériques, la fusion ou la division de PDF, la rotation des pages, et l'application de filigranes personnalisés.

Où pouvez-vous trouver le projet complet d'application web ASP.NET Core pour pratiquer la conversion de Page Razor en PDF ?

Le projet complet d'application web ASP.NET Core pour pratiquer la conversion de Page Razor en PDF peut être téléchargé sous forme de fichier zippé à partir du lien fourni, prêt à être utilisé dans Visual Studio.

IronPDF est-il compatible avec .NET 10 lors de la conversion de vues CSHTML ou Razor en PDF ?

Oui. IronPDF est entièrement compatible avec .NET 10 pour la conversion des vues CSHTML/Razor en PDF. Vos projets peuvent cibler .NET 10 sans configuration supplémentaire : des fonctionnalités telles que RenderRazorToPdf , ChromePdfRenderer et la génération asynchrone de PDF fonctionnent comme prévu.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Revu par
Jeff Fritz
Jeffrey T. Fritz
Responsable principal du programme - Équipe de la communauté .NET
Jeff est également responsable principal du programme pour les équipes .NET et Visual Studio. Il est le producteur exécutif de la série de conférences virtuelles .NET Conf et anime 'Fritz and Friends', une diffusion en direct pour développeurs qui est diffusée deux fois par semaine où il parle de technologie et écrit du code avec les téléspectateurs. Jeff écrit des ateliers, des présentations et prévoit du contenu pour les plus grands événements de développement Microsoft, y compris Microsoft Build, Microsoft Ignite, .NET Conf et le sommet Microsoft MVP
Prêt à commencer?
Nuget Téléchargements 16,154,058 | Version : 2025.11 vient de sortir