Comment convertir des pages Razor en PDF dans une application Web ASP.NET Core ?
Une page Razor est un fichier portant l'extension .cshtml qui combine C# et HTML pour générer du contenu web. Dans ASP.NET Core, les Razor Pages sont un moyen plus simple d'organiser le code pour les applications web, ce qui en fait un bon choix pour les pages simples qui sont en lecture seule ou qui font de la simple saisie de données.
Une application web ASP.NET Core est une application web construite à l'aide d'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 Razor Pages au sein d'un projet ASP.NET Core Web App. La génération de PDF est ainsi facile et directe dans les applications web ASP.NET Core.
Comment convertir des pages Razor en PDF dans une application Web ASP.NET Core ?
- Téléchargez la bibliothèque C# permettant de convertir des pages Razor en PDF dans une application Web ASP.NET Core
- Ajouter une classe de modèle pour les données
- Créez une nouvelle page Razor et modifiez le fichier ".cshtml" pour afficher les données
- Modifiez le fichier ".cs" et utilisez la commande
RenderRazorToPdf
méthode - Télécharger l'exemple de projet pour un démarrage rapide
Paquet d'extension IronPDF
Le paquet IronPdf.Extensions.Razor est une extension du paquet principal IronPdf. Les packages IronPdf.Extensions.Razor et IronPdf sont tous deux nécessaires pour effectuer le rendu des pages Razor en documents PDF dans une application web ASP.NET Core.
Install-Package IronPdf.Extensions.Razor
Installer avec NuGet
Installer-Package IronPDF.Extensions.Razor
Rendre les pages Razor en PDF
Vous aurez besoin d'un projet ASP.NET Core Web App pour convertir les pages Razor en fichiers PDF.
Créer une classe de modèle
- Créez un nouveau dossier dans le projet et nommez-le "Modèles"
- Ajoutez une classe C# standard au dossier et nommez-la "Personne" 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
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 permet d'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>
Ensuite, le code ci-dessous instancie d'abord la classe ChromePdfRenderer. Passer this à la méthode RenderRazorToPdf
est suffisant pour convertir cette page Razor en un document PDF.
L'utilisateur a un accès complet aux fonctionnalités disponibles dans RenderingOptions. Ces caractéristiques comprennent la possibilité d'appliquernuméros de page au PDF généré, définir des marges personnalisées et ajouter desainsi que les en-têtes et pieds de page HTML.
- Ouvrez le menu déroulant du fichier "Persons.cshtml" pour voir le fichier "Persons.cshtml.cs".
Modifiez le fichier "Persons.cshtml.cs" avec le code ci-dessous.
[{i :(Le document PDF peut être visualisé dans le navigateur à l'aide du code suivant :
Fichier(pdf.BinaryData, "application/pdf")
. Cependant, si vous téléchargez le PDF après l'avoir visualisé dans le navigateur, vous obtiendrez un document PDF endommagé.)}]
using IronPdf.Razor.Pages;
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; }
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;
}
public IActionResult OnPostAsync()
{
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);
Response.Headers.Add("Content-Disposition", "inline");
return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");
// View output PDF on browser
return File(pdf.BinaryData, "application/pdf");
}
}
}
using IronPdf.Razor.Pages;
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; }
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;
}
public IActionResult OnPostAsync()
{
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);
Response.Headers.Add("Content-Disposition", "inline");
return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");
// View output PDF on browser
return File(pdf.BinaryData, "application/pdf");
}
}
}
Imports IronPdf.Razor.Pages
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)
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
Public Function OnPostAsync() 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)
Response.Headers.Add("Content-Disposition", "inline")
Return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf")
' View output PDF on browser
Return File(pdf.BinaryData, "application/pdf")
End Function
End Class
End Namespace
La méthode RenderRazorToPdf
renvoie un objet PdfDocument qui peut subir des traitements et des modifications supplémentaires. Vous pouvez exporter le PDF en tant quePDFA ouPDFUA, appliquer unsignature numérique au document PDF rendu, oufusionner et scinder Documents PDF. La méthode permet également de faire pivoter les pages, d'ajouter desannotations ousignetsettamponner des filigranes personnalisés sur votre PDF.
Ajouter une section à la barre de navigation supérieure
Naviguez jusqu'au dossier Pages -> Dossier partagé -> _Layout.cshtml. Placez l'élément de navigation "Personne" après "Accueil".
Assurez-vous que la valeur de l'attribut asp-page correspond exactement au nom de notre 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>
Exécuter le projet
Elle vous montrera comment exécuter le projet et générer un document PDF.
Télécharger le projet d'application Web 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 ASP.NET Core Web App.
Télécharger le projet d'application web ASP.NET Core RazorPageSample.zip