Comment convertir les vues Razor en PDF de manière transparente ?

Chaknith related to Comment convertir les vues Razor en PDF de manière transparente ?
Chaknith Bin
mai 12, 2024
Mise à jour décembre 17, 2024
Partager:
This article was translated from English: Does it need improvement?
Translated
View the article in English

Le terme 'rendu sans tête' fait référence au processus de rendu de contenu web sans interface utilisateur graphique (GUI) ou fenêtre de navigateur. Bien que le package IronPdf.Extensions.Razor soit très utile, il n'offre pas de capacités de rendu sans tête. Le rendu sans tête peut combler le manque de cas d'utilisation que le package IronPDF.Extensions.Razor ne peut pas combler.

Nous utiliserons le package Razor.Templating.Core pour convertir de cshtml (Razor Views) en html, puis nous utiliserons IronPDF pour générer des documents PDF à partir de celui-ci.

Cet article est inspiré de la vidéo YouTube suivante :

Commencez avec IronPDF

Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer


Installez le package Razor.Templating.Core pour convertir des vues Razor en documents HTML dans une application Web ASP.NET Core.

Install-Package Razor.Templating.Core

Rendre les vues Razor en PDF

Vous aurez besoin d'un projet d'application Web ASP.NET Core (Model-View-Controller) pour convertir les vues en fichiers PDF.

Ajouter une vue

  • Cliquez avec le bouton droit de la souris sur le dossier "Home". Choisissez "ajouter" et "ajouter une vue"
  • Créez une vue Razor vide et nommez-la "Data.cshtml".

    Ajouter la vue

Modifier le fichier Data.cshtml

Ajoutez la chaîne HTML que vous souhaitez rendre au format PDF :

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>Software Engineer</td>
        <td>Experienced software engineer specializing in web development.</td>
    </tr>
    <tr>
        <td>Alice Smith</td>
        <td>Project Manager</td>
        <td>Seasoned project manager with expertise in agile methodologies.</td>
    </tr>
    <tr>
        <td>Michael Johnson</td>
        <td>Data Analyst</td>
        <td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
    </tr>
</table>
<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>Software Engineer</td>
        <td>Experienced software engineer specializing in web development.</td>
    </tr>
    <tr>
        <td>Alice Smith</td>
        <td>Project Manager</td>
        <td>Seasoned project manager with expertise in agile methodologies.</td>
    </tr>
    <tr>
        <td>Michael Johnson</td>
        <td>Data Analyst</td>
        <td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
    </tr>
</table>
HTML

Modifier le fichier Program.cs

Dans le fichier "Program.cs", ajoutez le code suivant. Le code ci-dessous utilise la méthode RenderAsync de la bibliothèque Razor.Templating.Core pour convertir les vues Razor en HTML. Deuxièmement, il instancie la classe ChromePdfRenderer et transmet la chaîne HTML retournée à la méthode RenderHtmlAsPdf. Les utilisateurs peuvent utiliser RenderingOptions pour accéder à une gamme de fonctionnalités, comme l'ajout de texte personnalisé, y compris des en-têtes et pieds de page HTML dans le PDF résultant, la définition de marges personnalisées, et l'application de numéros de page.

app.MapGet("/PrintPdf", async () =>
{
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
app.MapGet("/PrintPdf", async () =>
{
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
app.MapGet("/PrintPdf", Async Function()
	IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
	IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All

	Dim html As String = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")

	Dim renderer As New ChromePdfRenderer()
	Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, "./wwwroot")

	Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
End Function)
$vbLabelText   $csharpLabel

Modifier les liens de l'actif

Naviguez jusqu'au dossier "Views" -> dossier "Shared" -> fichier "_Layout.cshtml". Dans les balises de lien, remplacez "~/" par "./".

Ceci est important car le "~/" ne fonctionne pas bien avec IronPDF.

Exécuter le projet

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

Exécuter un projet ASP.NET Core MVC

Sortie PDF

Télécharger le projet ASP.NET Core MVC

Vous pouvez télécharger le code complet de ce guide. Il est proposé sous forme de fichier compressé que vous pouvez ouvrir dans Visual Studio en tant que projet d'application Web ASP.NET Core (Model-View-Controller).

Cliquez ici pour télécharger le projet.

Chaknith related to Télécharger le projet ASP.NET Core MVC
Ingénieur logiciel
Chaknith est le Sherlock Holmes des développeurs. C'est en s'amusant à relever des défis de code qu'il s'est rendu compte pour la première fois qu'il pourrait avoir un avenir dans le domaine de l'ingénierie logicielle. Il se concentre sur IronXL et IronBarcode, mais il est fier d'aider les clients avec chaque produit. Chaknith tire parti des connaissances qu'il a acquises en discutant directement avec les clients pour améliorer les produits eux-mêmes. Ses commentaires anecdotiques vont au-delà des tickets Jira et soutiennent le développement de produits, la documentation et le marketing, afin d'améliorer l'expérience globale des clients.Quand il n'est pas au bureau, on peut le trouver en train d'apprendre sur l'apprentissage automatique, le codage et la randonnée.