Comment générer un PDF dans .NET Core avec IronPDF
Pour générer des fichiers PDF dans .NET Core, utilisez le ChromePdfRenderer d'IronPDF pour convertir des chaînes HTML, des pages web ou des vues Razor en documents PDF avec seulement quelques lignes de code, en préservant tous les styles CSS et toutes les fonctionnalités JavaScript.
La création de documents PDF dans les applications .NET Core est une exigence courante lors de la création d'applications Web qui doivent générer des factures, des rapports et d'autres documents commerciaux. IronPDF est une bibliothèque PDF complète qui simplifie la génération de PDF dans ASP.NET Core grâce à son moteur de rendu Chrome, garantissant des PDF d'une qualité irréprochable. Ce guide vous explique comment gérer différentes tâches de génération de PDF dans l'environnement .NET 10, des simples conversions HTML à la génération de rapports complexes à l'aide d'instructions C# de haut niveau.
Comment .NET Core génère-t-il des fichiers PDF ?
IronPDF utilise un moteur de rendu basé sur Chrome pour convertir le contenu HTML en fichiers PDF. Cette approche vous permet d'utiliser vos connaissances existantes en HTML et CSS pour créer des PDF sans avoir à apprendre des API PDF complexes et de bas niveau ni à faire face à une courbe d'apprentissage abrupte. La bibliothèque gère la conversion automatique des pages web, prenant en charge l'exécution de JavaScript et les mises en page CSS réactives.
L'API de la bibliothèque vous permet de générer des documents PDF à partir de chaînes HTML, d'URL ou de fichiers HTML locaux. Lors de la conversion de HTML en PDF, IronPDF préserve les mises en page complexes, le style CSS, l'exécution JavaScript et le contenu Web dynamique. Cela en fait un choix pratique pour les développeurs .NET qui ont besoin de capacités de conversion PDF fiables dans leurs applications.
Le processus de rendu utilise la même technologie que celle qui alimente Google Chrome, garantissant ainsi que les conversions HTML vers PDF correspondent à ce que les utilisateurs voient dans les navigateurs modernes. Cela inclut la prise en charge des fonctionnalités CSS3, des polices web, des graphiques SVG et des systèmes de mise en page modernes comme Flexbox et CSS Grid. Le moteur de rendu étant basé sur Chrome, le résultat est prévisible et cohérent dans les environnements de développement, de préproduction et de production.
Comment installer IronPDF dans un projet .NET 10 ?
Pour commencer, une seule installation via le gestionnaire de packages NuGet est nécessaire. Vous avez deux options selon votre flux de travail.
Option 1 : Console du gestionnaire de packages dans Visual Studio
Install-Package IronPdf
Install-Package IronPdf
Option 2 : Interface de ligne de commande .NET
dotnet add package IronPdf
dotnet add package IronPdf
Pour une description de l'installation étape par étape, voir le guide d'installation de NuGet.
Pour les déploiements Docker ou les environnements Linux, des dépendances système supplémentaires peuvent être nécessaires. IronPDF prend en charge macOS, Windows, Linux, Azure et AWS Lambda, ce qui le rend adaptable à différents scénarios d'hébergement. Après l'installation, ajoutez une clé de licence d'essai pour débloquer l'ensemble des fonctionnalités pendant le développement. L'essai est gratuit et ne nécessite pas de carte de crédit, vous permettant ainsi d'évaluer pleinement la bibliothèque avant d'acheter une licence commerciale.
Comment générer un PDF à partir d'une chaîne HTML ?
La méthode la plus directe pour créer un PDF consiste à convertir du contenu HTML. Voici un exemple minimal utilisant des instructions de niveau supérieur C# :
using IronPdf;
// Instantiate the renderer
var renderer = new ChromePdfRenderer();
// Convert an HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>");
// Save to disk
pdf.SaveAs("hello.pdf");
using IronPdf;
// Instantiate the renderer
var renderer = new ChromePdfRenderer();
// Convert an HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>");
// Save to disk
pdf.SaveAs("hello.pdf");
Imports IronPdf
' Instantiate the renderer
Dim renderer As New ChromePdfRenderer()
' Convert an HTML string to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>")
' Save to disk
pdf.SaveAs("hello.pdf")
La classe ChromePdfRenderer gère le processus de conversion. L'objet PdfDocument retourné vous donne accès aux données binaires, au nombre de pages et aux options de sortie telles que l'enregistrement dans un fichier ou un flux de mémoire. Vous pouvez également joindre des métadonnées telles que le titre, l'auteur et les mots-clés du sujet au fichier de sortie.
Le moteur de rendu prend en charge un large éventail d'options de rendu. Vous pouvez configurer des marges personnalisées, définir les formats de papier, contrôler l'orientation de la page et ajuster les dimensions de la fenêtre d'affichage. Ces options garantissent que le fichier PDF généré répond aux exigences de mise en forme spécifiques aux documents Professional .
Comment créer une facture PDF avec du style CSS ?
Voici, à titre d'exemple plus réaliste, comment générer un document de facture stylisé avec du balisage HTML et du CSS :
using IronPdf;
var html = @"
<html>
<head>
<style>
body { font-family: Arial, sans-serif; font-size: 14px; }
.invoice-header {
background-color: #2c3e50;
color: white;
padding: 20px;
}
.invoice-details { margin: 20px 0; }
table { width: 100%; border-collapse: collapse; }
th, td {
padding: 12px;
text-align: left;
border-bottom: 1px solid #ddd;
}
.total {
font-size: 1.2em;
font-weight: bold;
text-align: right;
}
</style>
</head>
<body>
<div class='invoice-header'>
<h1>Invoice #2026-001</h1>
<p>Date: February 28, 2026</p>
</div>
<div class='invoice-details'>
<h3>Bill To: Jane Smith</h3>
<table>
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Price</th>
</tr>
<tr>
<td>Professional License</td>
<td>1</td>
<td>$749.00</td>
</tr>
</table>
<p class='total'>Total: $749.00</p>
</div>
</body>
</html>";
var renderer = new ChromePdfRenderer();
// Apply custom margins
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
using IronPdf;
var html = @"
<html>
<head>
<style>
body { font-family: Arial, sans-serif; font-size: 14px; }
.invoice-header {
background-color: #2c3e50;
color: white;
padding: 20px;
}
.invoice-details { margin: 20px 0; }
table { width: 100%; border-collapse: collapse; }
th, td {
padding: 12px;
text-align: left;
border-bottom: 1px solid #ddd;
}
.total {
font-size: 1.2em;
font-weight: bold;
text-align: right;
}
</style>
</head>
<body>
<div class='invoice-header'>
<h1>Invoice #2026-001</h1>
<p>Date: February 28, 2026</p>
</div>
<div class='invoice-details'>
<h3>Bill To: Jane Smith</h3>
<table>
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Price</th>
</tr>
<tr>
<td>Professional License</td>
<td>1</td>
<td>$749.00</td>
</tr>
</table>
<p class='total'>Total: $749.00</p>
</div>
</body>
</html>";
var renderer = new ChromePdfRenderer();
// Apply custom margins
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
Imports IronPdf
Dim html As String = "
<html>
<head>
<style>
body { font-family: Arial, sans-serif; font-size: 14px; }
.invoice-header {
background-color: #2c3e50;
color: white;
padding: 20px;
}
.invoice-details { margin: 20px 0; }
table { width: 100%; border-collapse: collapse; }
th, td {
padding: 12px;
text-align: left;
border-bottom: 1px solid #ddd;
}
.total {
font-size: 1.2em;
font-weight: bold;
text-align: right;
}
</style>
</head>
<body>
<div class='invoice-header'>
<h1>Invoice #2026-001</h1>
<p>Date: February 28, 2026</p>
</div>
<div class='invoice-details'>
<h3>Bill To: Jane Smith</h3>
<table>
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Price</th>
</tr>
<tr>
<td>Professional License</td>
<td>1</td>
<td>$749.00</td>
</tr>
</table>
<p class='total'>Total: $749.00</p>
</div>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
' Apply custom margins
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
Cet exemple illustre la capacité d'IronPDF à gérer des mises en page complexes avec style CSS, notamment les paramètres de police, les couleurs d'arrière-plan et la mise en forme des tableaux. La bibliothèque traite le balisage HTML et produit un PDF dont l'apparence visuelle correspond à celle du document source.
Pour une typographie améliorée, IronPDF prend en charge Google Fonts et les polices d'icônes Web, vous permettant de créer des PDF visuellement soignés. La bibliothèque gère également les conceptions de documents multicouches. Vous pouvez ajouter des filigranes personnalisés ou apposer un tampon sur du contenu sur des PDF existants.
À quoi ressemble la facture PDF générée ?
![Facture PDF affichant la facture n° 2026-001 datée du 28 février 2026, montrant un achat de licence Professional pour 749,00 $ avec une section d'en-tête bleu foncé. La facture illustre la conservation du style CSS, notamment les polices personnalisées, les couleurs et la mise en forme du tableau générées lors de la conversion HTML vers PDF.
Comment convertir l'URL d'une page web en PDF?
IronPDF peut générer des PDF à partir de pages web en direct en transmettant une URL au moteur de rendu. Ceci est utile lorsque vous avez besoin de capturer du contenu Web de manière dynamique ou d'archiver une page publique :
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure viewport and JavaScript settings
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
renderer.RenderingOptions.WaitFor.RenderDelay(1500); // Allow dynamic content to load
// Render the URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://example.com");
// Save to disk
pdf.SaveAs("webpage.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure viewport and JavaScript settings
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
renderer.RenderingOptions.WaitFor.RenderDelay(1500); // Allow dynamic content to load
// Render the URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://example.com");
// Save to disk
pdf.SaveAs("webpage.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Configure viewport and JavaScript settings
renderer.RenderingOptions.ViewPortWidth = 1920
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
renderer.RenderingOptions.WaitFor.RenderDelay(1500) ' Allow dynamic content to load
' Render the URL to PDF
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
' Save to disk
pdf.SaveAs("webpage.pdf")
Le paramètre RenderDelay garantit que le contenu piloté par JavaScript (graphiques, images chargées paresseusement, tableaux dynamiques) termine le rendu avant que le PDF ne soit capturé. Vous pouvez également configurer les conditions WaitFor pour attendre que des éléments DOM ou des requêtes réseau spécifiques se terminent. Pour les pages nécessitant une authentification, la bibliothèque prend en charge les en-têtes de requêtes HTTP et les cookies personnalisés.
Pour les applications monopages complexes construites avec Angular ou React, des conditions d'attente supplémentaires permettent de garantir que tout le rendu côté client est terminé avant la prise de la capture d'écran PDF.
![Comparaison en écran partagé montrant une page Web rendue dans un navigateur à gauche et sa conversion PDF à droite à l'aide IronPDF dans .NET Core. La version PDF conserve l'intégralité de la mise en forme, des images et de la structure de la page, démontrant ainsi une conversion HTML vers PDF de haute fidélité.
Comment intégrer la génération de PDF dans un contrôleur ASP.NET Core ?
Générer des fichiers PDF au sein d'une API Web ASP.NET Core est simple. L'exemple suivant illustre une action de contrôleur qui génère un rapport HTML et le renvoie sous forme de fichier à télécharger :
using Microsoft.AspNetCore.Mvc;
using IronPdf;
[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate-report")]
public IActionResult GenerateReport()
{
var html = @"
<h1>Monthly Sales Report</h1>
<p>Generated on: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
<table>
<tr><th>Product</th><th>Sales</th></tr>
<tr><td>Product A</td><td>$5,000</td></tr>
<tr><td>Product B</td><td>$3,500</td></tr>
</table>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Return the PDF bytes as a downloadable file
return File(pdf.BinaryData, "application/pdf", "monthly-report.pdf");
}
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;
[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate-report")]
public IActionResult GenerateReport()
{
var html = @"
<h1>Monthly Sales Report</h1>
<p>Generated on: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
<table>
<tr><th>Product</th><th>Sales</th></tr>
<tr><td>Product A</td><td>$5,000</td></tr>
<tr><td>Product B</td><td>$3,500</td></tr>
</table>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Return the PDF bytes as a downloadable file
return File(pdf.BinaryData, "application/pdf", "monthly-report.pdf");
}
}
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf
<ApiController>
<Route("api/[controller]")>
Public Class PdfController
Inherits ControllerBase
<HttpGet("generate-report")>
Public Function GenerateReport() As IActionResult
Dim html As String = "
<h1>Monthly Sales Report</h1>
<p>Generated on: " & DateTime.Now.ToString("MMMM dd, yyyy") & "</p>
<table>
<tr><th>Product</th><th>Sales</th></tr>
<tr><td>Product A</td><td>$5,000</td></tr>
<tr><td>Product B</td><td>$3,500</td></tr>
</table>"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Return the PDF bytes as a downloadable file
Return File(pdf.BinaryData, "application/pdf", "monthly-report.pdf")
End Function
End Class
Le type de retour File() indique à ASP.NET Core de diffuser les octets PDF bruts vers le navigateur client avec le type MIME correct. Le client reçoit un PDF téléchargeable sans aucun fichier intermédiaire sur le disque. Vous pouvez ajouter des en-têtes et des pieds de page à chaque page, ou appliquer des filigranes aux documents brouillons ou confidentiels.
Pour les applications de production, envisagez d'utiliser la génération PDF asynchrone afin de maintenir le pipeline de requêtes non bloquant, en particulier lors de la génération de documents volumineux ou complexes.
Comment générer un PDF à partir d'une vue Razor dans MVC ?
Pour les applications MVC, vous pouvez générer une vue Razor sous forme de chaîne HTML, puis la convertir en PDF. Ce modèle conserve vos modèles de documents dans des fichiers .cshtml standard :
[HttpGet]
public async Task<IActionResult> DownloadInvoice(int id)
{
// Fetch invoice data from the database
var model = await GetInvoiceData(id);
// Render the Razor view to an HTML string
var html = await RenderViewToString("Invoice", model);
// Convert the rendered HTML en PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Return the file to the browser
return File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf");
}
[HttpGet]
public async Task<IActionResult> DownloadInvoice(int id)
{
// Fetch invoice data from the database
var model = await GetInvoiceData(id);
// Render the Razor view to an HTML string
var html = await RenderViewToString("Invoice", model);
// Convert the rendered HTML en PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Return the file to the browser
return File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf");
}
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
<HttpGet>
Public Async Function DownloadInvoice(id As Integer) As Task(Of IActionResult)
' Fetch invoice data from the database
Dim model = Await GetInvoiceData(id)
' Render the Razor view to an HTML string
Dim html = Await RenderViewToString("Invoice", model)
' Convert the rendered HTML to PDF
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Return the file to the browser
Return File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf")
End Function
Cette approche vous permet de conserver vos modèles de factures ou de rapports sous forme de vues Razor ordinaires, en utilisant la liaison de modèles et les vues partielles. La méthode d'aide RenderViewToString (un utilitaire courant dans les projets MVC) convertit la vue en une chaîne HTML simple qu'IronPDF traite ensuite. Des modèles similaires s'appliquent aux projets Razor Pages ou Blazor Server.



