Comment convertir CSHTML en PDF en utilisant Razor de manière silencieuse en C# | IronPDF

Comment convertir des vues Razor en PDF sans tête en C#

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

Convertissez les vues Razor en PDF en C# en utilisant Razor.Templating.Core pour transformer les fichiers cshtml en HTML, puis utilisez la méthode RenderHtmlAsPdf d'IronPDF pour générer des documents PDF sans nécessiter d'interface graphique ou de fenêtre de navigateur.

Le rendu sans tête traite le contenu web sans interface utilisateur graphique. Bien que IronPdf.Extensions.Razor soit utile, il manque des capacités de rendu sans tête. Ce guide comble cette lacune.

Nous utiliserons Razor.Templating.Core pour convertir le cshtml en HTML, puis IronPDF pour générer des PDF.

comme-titre:2(Démarrage rapide : convertir les vues Razor en PDF en secondes)

Transformez les vues Razor en PDF grâce à la conversion sans tête d'IronPDF. Utilisez IronPdf.HtmlToPdf.StaticRender.RenderHtmlAsPdf pour rendre le HTML de Razor Views en PDF. Cette approche fonctionne de manière transparente dans les environnements ASP.NET Core.

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronPDF avec le gestionnaire de packages NuGet

    PM > Install-Package IronPdf

  2. Copiez et exécutez cet extrait de code.

    var html = await RazorTemplateEngine.RenderAsync("Views/Template.cshtml", model); 
    new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs("output.pdf");
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronPDF dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer

Installez Razor.Templating.Core pour convertir les vues Razor en HTML dans les applications web ASP.NET Core.

# Install the Razor.Templating.Core package using NuGet Package Manager
Install-Package Razor.Templating.Core
# Install the Razor.Templating.Core package using NuGet Package Manager
Install-Package Razor.Templating.Core
SHELL

Comment configurer mon projet ASP.NET Core pour la conversion Razor to PDF?

<TODO : Ajouter une image ici -->

Vous avez besoin d'un projet ASP.NET Core Web App (modèle-vue-contrôleur) pour convertir des vues en PDF. La mise en place implique la création d'un projet dans Visual Studio, l'installation des packages NuGet et la configuration de la structure de votre projet. Pour des techniques similaires, voir conversion de CSHTML en PDF dans MVC Core ou conversion de CSHTML en PDF à l'aide de Razor Pages.

Pourquoi ai-je besoin de Razor.Templating.Core au lieu de IronPdf.Extensions.Razor?

Razor.Templating.Core offre un véritable rendu sans tête, convertissant les vues Razor en HTML sans contexte web ni fenêtre de navigateur. Ces outils conviennent aux services d'arrière-plan, aux applications de console ou aux environnements sans interface utilisateur. IronPdf.Extensions.Razor nécessite un contexte web pour fonctionner.

Quel type de projet convient le mieux à la génération de PDF sans tête?

Les projets ASP.NET Core Web App (modèle-vue-contrôleur) fournissent l'infrastructure Razor View nécessaire avec des options de déploiement flexibles. Utilisez cette approche dans les services d'arrière-plan, les fonctions Azure ou les applications de console. Voir déploiement d'IronPDF sur Azure pour une génération basée sur le cloud.

Comment installer les paquets NuGet requis?

Installez les paquets à l'aide du gestionnaire de paquets NuGet. Vous avez besoin d'IronPDF et de Razor.Templating.Core :

// Install via Package Manager Console
Install-Package IronPdf
Install-Package Razor.Templating.Core

// Or add to your .csproj file
// <PackageReference Include="IronPdf" Version="2024.x.x" />
// <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
// Install via Package Manager Console
Install-Package IronPdf
Install-Package Razor.Templating.Core

// Or add to your .csproj file
// <PackageReference Include="IronPdf" Version="2024.x.x" />
// <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
$vbLabelText   $csharpLabel

Comment créer et configurer une vue Razor pour la génération de PDF ?

  • Cliquez avec le bouton droit de la souris sur le dossier "Home". Choisissez "Ajouter" puis "Ajouter une vue"
  • Créez une vue Razor vide nommée "Data.cshtml".

Menu contextuel de l'explorateur de solutions de Visual Studio affichant l'option Ajouter > Vue pour créer de nouvelles vues MVC

Quel contenu HTML dois-je ajouter à ma vue Razor?

Ajoutez le code HTML que vous souhaitez convertir en 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

Pour les mises en page complexes, utilisez CSS et les styles d'impression pour garantir un rendu parfait du PDF. IronPDF prend en charge les fonctionnalités modernes de CSS3 pour des mises en page de documents sophistiquées.

Pourquoi utiliser des tableaux pour l'affichage des données dans les PDF ?

Les tableaux fournissent des informations structurées et organisées qui se traduisent bien dans les documents imprimés. La mise en forme doit être cohérente d'une plateforme à l'autre et les traductions sont lisibles au format PDF. Le moteur de rendu d'IronPDF gère bien les mises en page de tableaux, en préservant les bordures, l'espacement et l'alignement. Pour une mise en forme avancée, explorez les marges personnalisées pour optimiser la mise en page.

Quelles sont les considérations stylistiques courantes pour les sorties PDF ?

Pour la sortie PDF, utilisez des requêtes média CSS spécifiques à l'impression, des valeurs de pixels fixes au lieu d'unités relatives, et des polices intégrées pour un rendu cohérent. IronPDF prend en charge les polices web et les polices d'icônes pour la cohérence de la marque. Pensez à sauts de page pour les documents de plusieurs pages et à des marges appropriées pour une apparence professionnelle.

Comment configurer Program.cs pour le rendu PDF sans tête?

Dans "Program.cs", ajoutez ce code. Il utilise RenderAsync de Razor.Templating.Core pour convertir les vues Razor en HTML, puis instancie ChromePdfRenderer et transmet le HTML à RenderHtmlAsPdf. Utilisez RenderingOptions pour le texte personnalisé, les en-têtes, les pieds de page, les marges et les numéros de page.

app.MapGet("/PrintPdf", async () =>
{
    // Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    // Render the Razor view to an HTML string
    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    // Create a new instance of ChromePdfRenderer 
    ChromePdfRenderer renderer = new ChromePdfRenderer();

    // Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4;
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    // Render the HTML string as a PDF document
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    // Return the PDF file as a response
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
app.MapGet("/PrintPdf", async () =>
{
    // Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    // Render the Razor view to an HTML string
    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    // Create a new instance of ChromePdfRenderer 
    ChromePdfRenderer renderer = new ChromePdfRenderer();

    // Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4;
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    // Render the HTML string as a PDF document
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    // Return the PDF file as a response
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
$vbLabelText   $csharpLabel

Quelles sont les options de rendu que je peux appliquer à mes PDF ?

IronPDF propose des options de rendu étendues. Ajoutez des en-têtes et pieds de page, définissez des formats de papier personnalisés, contrôlez l'orientation de la page et ajoutez des marques d'eau. ChromePdfRenderer offre plus de 50 propriétés pour personnaliser la génération de PDF.

Comment gérer les erreurs lors de la génération d'un PDF?

Mise en œuvre de la gestion des erreurs pour une génération PDF robuste :

try
{
    var html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
}
catch (Exception ex)
{
    // Log the error details
    IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}");
    return Results.Problem("Failed to generate PDF", statusCode: 500);
}
try
{
    var html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
}
catch (Exception ex)
{
    // Log the error details
    IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}");
    return Results.Problem("Failed to generate PDF", statusCode: 500);
}
$vbLabelText   $csharpLabel

Quand devrais-je activer la journalisation détaillée?

Permettre une journalisation détaillée pendant le développement et le dépannage. La journalisation d'IronPDF fournit des indications sur le rendu, permettant d'identifier les problèmes d'analyse HTML, de chargement de ressources ou de configuration. Pour la production, utilisez custom logging pour vous intégrer à l'infrastructure de journalisation de votre application.

Pourquoi dois-je modifier les chemins de liaison des actifs ?

Naviguez vers Views > Shared > "_Layout.cshtml". Dans les balises de lien, remplacez "~/" par "./" car "~/" ne fonctionne pas bien avec IronPDF.

Quels sont les autres problèmes liés au chemin à suivre ?

Au-delà du problème du tilde (~), il faut s'assurer que les sources d'images utilisent des chemins d'accès absolus ou des références relatives appropriées. Pour les ressources externes, utilisez l'URL de base pour vous assurer que les actifs se chargent correctement. Pour les images d'Azure Blob Storage, voir embedding images from Azure Blob Storage.

Comment les ressources statiques affectent-elles la génération de PDF ?

Les actifs statiques (CSS, JavaScript, images) ont un impact sur les performances et la qualité de la génération de PDF. Veillez à ce que les ressources soient accessibles lors du rendu, utilisez des images optimisées et envisagez d'intégrer les feuilles de style CSS essentielles en ligne pour un rendu plus rapide. En savoir plus sur les délais de rendu et les timeouts pour les contenus à forte composante JavaScript.

Comment tester ma génération de PDF sans tête?

Exécutez le projet pour générer un document PDF.

Visual Studio showing running ASP.NET Core MVC app with Program.cs open and successful debug output

Sortie PDF

À quoi doit ressembler mon PDF final?

Votre PDF doit conserver l'intégralité de la mise en forme de Razor View : structures des tableaux, polices, couleurs et mise en page. Elle doit être correctement dimensionnée, avec des marges propres et une apparence professionnelle. Pour vérifier la qualité de la sortie, utilisez les fonctions de tramage d'IronPDF pour prévisualiser les pages en tant qu'images.

Comment résoudre les problèmes courants liés au rendu des PDF?

Les problèmes les plus courants sont les styles manquants, les mises en page défectueuses ou le contenu incomplet. Activez la journalisation détaillée, vérifiez les chemins d'accès aux ressources et veillez à ce que le code HTML soit correctement validé. Pour les mises en page complexes, utilisez les outils de débogage Chrome pour prévisualiser le HTML avant la conversion. Pour les problèmes de rendu spécifiques, utilisez Les délais d'attente pour vous assurer que le contenu se charge avant le rendu.

Où puis-je télécharger un exemple de travail complet ?

Téléchargez le code complet sous la forme d'un projet zippé ASP.NET Core Web App (Modèle-Vue-Contrôleur) de Visual Studio.

Cliquez ici pour télécharger le projet.

Quelles sont les conditions préalables à l'exécution de l'exemple de projet ?

Vous avez besoin de Visual Studio 2019 ou d'une version ultérieure avec .NET 6.0 SDK ou une version plus récente. Le projet nécessite une connexion internet pour la restauration des paquets NuGet. Mettez à jour votre clé de licence IronPDF dans Program.cs avant de l'exécuter. Pour le déploiement, consultez le guide d'installation de Windows pour connaître les exigences supplémentaires.

Comment adapter l'exemple à mon cas d'utilisation ?

L'exemple fournit une base pour vos besoins spécifiques. Ajoutez des modèles de données dynamiques, mettez en cache les PDF fréquemment générés ou intégrez l'authentification existante. Pour les scénarios avancés, explorez la génération de PDF asynchrones pour améliorer les performances, ou mettez en œuvre la compression de PDF pour réduire la taille des fichiers. Ajoutez des signatures numériques pour l'authenticité des documents ou des protection par mot de passe pour les documents sensibles.

Questions Fréquemment Posées

Comment convertir Razor Views en PDF sans interface graphique en C# ?

Utilisez Razor.Templating.Core pour convertir les fichiers cshtml en HTML, puis utilisez la méthode RenderHtmlAsPdf d'IronPDF pour générer des PDF sans tête. Ce processus en deux étapes vous permet de transformer les vues Razor en documents PDF sans avoir besoin d'une interface utilisateur graphique ou d'une fenêtre de navigateur.

Quel est le moyen le plus rapide de rendre une vue Razor au format PDF sans tête ?

L'approche la plus rapide consiste à utiliser deux lignes de code : convertissez d'abord votre vue Razor en HTML avec RazorTemplateEngine.RenderAsync, puis utilisez la méthode IronPDF's ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs() pour créer et enregistrer le fichier PDF.

Pourquoi devrais-je utiliser Razor.Templating.Core au lieu de IronPdf.Extensions.Razor ?

Razor.Templating.Core fournit de véritables capacités de rendu sans tête, vous permettant de convertir les vues Razor en HTML sans contexte web ou fenêtre de navigateur. Bien qu'IronPDF.Extensions.Razor soit utile, il nécessite un contexte web pour fonctionner, ce qui rend Razor.Templating.Core plus adapté aux services d'arrière-plan et aux applications de console.

De quel type de projet ASP.NET Core ai-je besoin pour la génération de PDF sans tête ?

Utilisez un projet ASP.NET Core Web App (modèle-vue-contrôleur), qui fournit l'infrastructure Razor View nécessaire avec des options de déploiement flexibles. Cette configuration fonctionne bien avec IronPDF pour les services d'arrière-plan, les Azure Functions ou les applications de console.

Comment installer les paquets nécessaires à la conversion de Razor en PDF ?

Installez Razor.Templating.Core en utilisant le gestionnaire de paquets NuGet avec la commande 'Install-Package Razor.Templating.Core'. Vous aurez également besoin d'IronPDF installé dans votre projet pour gérer l'étape de conversion de HTML en PDF.

Puis-je utiliser cette approche de génération de PDF sans tête dans des environnements en nuage ?

Oui, la conversion Razor to PDF sans tête d'IronPDF fonctionne parfaitement dans les environnements cloud, notamment Azure Functions, AWS Lambda et les applications conteneurisées, ce qui en fait un outil idéal pour les services de génération de documents évolutifs.

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
Prêt à commencer?
Nuget Téléchargements 17,012,929 | Version : 2025.12 vient de sortir