# Comment convertir HTML en PDF en C# (Guide du développeur)
Convertir du HTML en PDF en C# semble simple jusqu'à ce que de vrais projets atteignent les limites de rendu, de déploiement et de mise à l'échelle. Ce guide montre comment le faire de manière fiable avec le moteur basé sur Chrome de IronPDF, en commençant par un code fonctionnel que vous pouvez exécuter en moins d'une minute. Si vous choisissez encore un outil, [comparez d'abord toutes les bibliothèques C# HTML to PDF.](/blog/compare-to-other-components/csharp-html-to-pdf-libraries-compared/)
*as-heading:2(TL;DR : Guide de démarrage rapide pour convertir du HTML en PDF)*
Vous pouvez facilement convertir du HTML en PDF en C# en utilisant la bibliothèque [IronPDF](/), qui fournit la méthode `ChromePdfRenderer.RenderHtmlAsPdf` pour créer des fichiers PDF de haute qualité à partir de HTML, CSS et JavaScript.
```csharp
:title=Get started making PDFs now!
new IronPdf.ChromePdfRenderer()
.RenderHtmlAsPdf("<p>Hello World</p>")
.SaveAs("pixelperfect.pdf");
```
Après avoir acheté ou vous être inscrit pour un essai de 30 jours d'IronPDF, trouvez la clé de licence envoyée à votre email. Ajoutez votre clé de licence au début de votre application.
```csharp
IronPdf.License.LicenseKey = "KEY";
```
*Tout le code de ce guide a été vérifié sur IronPDF v2026.6.1 · .NET 10 · Juin 2026.*
*as-heading:2(Pourquoi les développeurs .NET ont besoin d'un convertisseur HTML vers PDF pour C#)*
IronPDF utilise un moteur de rendu Google Chromium intégré pour garantir des conversions fidèles, préservant avec précision la mise en page et le style de votre contenu web.
✅ **Moteur de rendu Chrome robuste :** utilise le moteur <a href="https://www.chromium.org/blink/" target="_blank" rel="noopener">Blink de Chrome</a> pour une conversion HTML en PDF précise.
✅ **Précision pixel par pixel :** les PDF générés correspondent exactement au web, pas à une version adaptée à l'impression.
✅ **Support complet des technologies web modernes :** prise en charge complète de CSS3, HTML5 et JavaScript pour tous les éléments HTML.
✅ **Boost de performance de 5 à 20x :** considérablement plus rapide que l'automatisation des navigateurs ou les pilotes web.
✅ **Conformité <a href="https://pdfa.org/" target="_blank" rel="noopener">PDF/UA</a> :** génération de PDF accessible qui respecte les <a href="https://www.section508.gov/" target="_blank" rel="noopener">normes de la Section 508</a>.
✅ **Pas de dépendances externes :** aucun exécutable à installer sur les serveurs.
✅ Designed for C#, F#, and VB.NET on <a href="https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/overview" target="_blank" rel="noopener">.NET 10</a>, <a href="https://learn.microsoft.com/en-us/dotnet/core/releases-and-support" target="_blank" rel="noopener">9, 8, 7, 6, Core, Standard, and Framework</a>.
[[i:(Dernières nouveautés dans v2026.6.1 (Juin 2026) : signets PDF automatiques générés à partir des titres HTML lors du rendu, linéarisation complète des PDF en mémoire pour les environnements cloud et isolés, signatures numériques ECDSA avec inspection du certificat du signataire, annotations de lien cliquables, et images Linux et Docker plus fines et renforcées. Consultez le journal des modifications complet pour l'historique complet des versions.)]]
IronPDF simplifie le processus pour les développeurs .NET en offrant une solution simple et efficace pour générer des documents PDF d'aspect professionnel à partir du HTML de votre application web. Des factures et rapports aux certificats et archives, les développeurs peuvent travailler avec leur pile web familière tandis qu'IronPDF gère le complexe en quelques lignes de code.
**LIÉ :** <a class="content-anchor" href="/product-updates/changelog/">Changelog d'IronPDF : Mises à jour, jalons, feuille de route <i class="fa-solid fa-arrow-right"></i></a>
*as-heading:2(Ce que vous apprendrez)*
1. [Comment convertir HTML en PDF C#](#1-how-to-convert-html-to-pdf-c-num)
- [Comment convertir une chaîne HTML en PDF](#how-to-convert-html-string-to-pdf)
- [Comment exporter une URL existante au format PDF](#how-to-export-existing-url-to-pdf)
- [Comment convertir un fichier HTML en PDF](#how-to-convert-html-file-to-pdf)
- [Comment convertir des pages Razor en PDF](#how-to-convert-razor-pages-to-pdf)
- [Comment convertir des vues MVC en PDF](#how-to-convert-mvc-views-to-pdf)
2. [Comment configurer les paramètres HTML en PDF](#2-how-to-configure-html-to-pdf-settings)
- [Comment définir des en-têtes HTTP personnalisés, des cookies et des identifiants de connexion](#how-to-set-custom-http-headers-cookies-and-login-credentials)
- [Comment configurer un proxy pour le rendu PDF](#how-to-configure-proxy-for-pdf-rendering)
3. [Comment utiliser les fonctions avancées de génération et de sécurité des PDF](#3-how-to-use-advanced-pdf-generation-security-features)
- [Comment générer un modèle HTML pour la création de PDF par lots](#how-to-generate-html-template-for-batch-pdf-creation)
- [Comment générer un PDF à l'aide d'une méthode asynchrone](#how-to-generate-pdf-using-async-method)
- [Comment ajouter des fonctions de sécurité avancées](#how-to-add-advanced-security-features)
- [Comment convertir des formulaires HTML en PDF remplissables](#how-to-convert-html-forms-to-fillable-pdfs)
- [Comment convertir des éléments HTML spécifiques en PDF](#how-to-convert-specific-html-elements-to-pdf)
- [Comment rendre des pages authentifiées en PDF](#how-to-render-authenticated-pages-to-pdf)
4. [Comment déployer du HTML en PDF sur des plateformes cloud](#4-how-to-deploy-html-to-pdf-on-cloud-platforms)
- [Comment déployer sur Azure](#how-to-deploy-on-azure)
- [Comment déployer sur AWS Lambda](#how-to-deploy-on-aws-lambda)
- [Comment déployer avec Docker](#how-to-deploy-with-docker)
5. [Comparer IronPDF avec d'autres bibliothèques PDF .NET](#5-compare-ironpdf-with-other-net-pdf-libraries)
- [Matrice de décision rapide : IronPDF for .NET](#quick-decision-matrix-ironpdf-versus-other-net-pdf-converters)
- [Comparaison détaillée : IronPDF for .NET](#detailed-comparison-ironpdf-versus-other-net-pdf-converters)
- [Real-life HTML to PDF Conversion Comparison : Rendu de la page d'accueil de Reddit](#real-life-html-to-pdf-conversion-comparison-rendering-reddits-homepage)
- [Conclusion sur les performances et la qualité de sortie des PDF](#conclusion-on-performance-and-output-pdf-quality)
- [Résumé](#summary)
6. [Dépannage & Support technique](#6-troubleshooting--technical-support)
- [Quick Fixes on Common Errors](#quick-fixes-on-common-errors) (en anglais)
- [Get Help From The Engineers Who Built IronPDF, 24/7](#get-help-from-the-engineers-who-built-ironpdf-247)
*as-heading:2(Choisissez votre chemin de HTML à PDF selon le cas d'utilisation)*
Vous ne savez pas par où commencer ? Accédez directement au chemin qui correspond à ce que vous construisez :
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th><strong>Ce que vous construisez</strong></th>
<th><strong>Commencez ici</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>Conversion d'une chaîne HTML ponctuelle</span></td>
<td><a class="content-anchor" href="#how-to-convert-html-string-to-pdf">HTML String to PDF <i class="fa-solid fa-arrow-right"></i></a></td>
</tr>
<tr>
<td><span>Archivage d'une URL ou d'une page web en direct</span></td>
<td><a class="content-anchor" href="#how-to-export-existing-url-to-pdf">URL to PDF <i class="fa-solid fa-arrow-right"></i></a></td>
</tr>
<tr>
<td><span>Construction d'une application Razor Pages ou MVC</span></td>
<td><a class="content-anchor" href="#how-to-convert-razor-pages-to-pdf">Razor / MVC to PDF <i class="fa-solid fa-arrow-right"></i></a></td>
</tr>
<tr>
<td><span>Génération en lot ou à haut volume côté serveur</span></td>
<td><a class="content-anchor" href="#how-to-generate-pdf-using-async-method">Génération asynchrone et par lots <i class="fa-solid fa-arrow-right"></i></a></td>
</tr>
</tbody>
</table>
</div>
## 1. How to Convert HTML to PDF C#
Que vous travailliez avec des chaînes HTML, des URL ou des fichiers HTML, IronPDF offre des options flexibles pour générer des documents PDF de haute qualité qui répondent à vos besoins spécifiques.
Dans ce tutoriel, nous vous guiderons à travers les scénarios les plus courants, y compris la conversion d'une chaîne HTML en PDF, d'une URL en PDF et d'un fichier HTML en PDF. De plus, IronPDF offre également une variété d'opérations pour manipuler des documents PDF :
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th><strong>Conversion PDF polyvalente</strong></th>
<th><strong>Conversion de pages web dynamiques en PDF</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<ul>
<li><a class="content-anchor" href="/how-to/html-zip-file-to-pdf/">Convertir un fichier PDF à partir d'un fichier HTML ZIP <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/image-to-pdf/">Convertir une image en PDF <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/rasterize-pdf-to-images/">Conversion d'images à partir de PDF <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/docx-to-pdf/">Convertir DOCX en PDF <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/rtf-to-pdf/">Convertir RTF en PDF <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/md-to-pdf/">Convertir MD en PDF <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/xml-to-pdf/">Convertir XML en PDF <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/pdf-to-html/">Conversion de PDF en HTML <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
</td>
<td>
<ul>
<li><a class="content-anchor" href="/how-to/aspx-to-pdf/">Convertir des PDF à partir de pages ASPX <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/xaml-to-pdf-maui/">Convertir XAML en PDF (MAUI) <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/csharp-pdf-reports/">Générer des rapports PDF <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/blazor-tutorial/">Créer des PDF dans les serveurs Blazor <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/razor-to-pdf-blazor-server/">Convertir Razor en PDF (Blazor Server) <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/cshtml-to-pdf-razor/">Convertir CSHTML en PDF (Razor Pages) <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/cshtml-to-pdf-mvc-core/">Convertir CSHTML en PDF (MVC Core) <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/cshtml-to-pdf-mvc-framework/">Convertir CSHTML en PDF (MVC Framework) <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/cshtml-to-pdf-razor-headlessly/">Convertir CSHTML en PDF (sans tête) <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
### Comment convertir une chaîne HTML en PDF
L'opération la plus fondamentale est la conversion de chaîne HTML en PDF. Cette méthode est parfaite pour le contenu HTML généré dynamiquement. La méthode `RenderHtmlAsPdf` prend en charge intégralement HTML5, CSS3, JavaScript, et les images lors de la conversion directe de HTML en PDF.
```csharp
using IronPdf;
// Create the Chrome renderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Save the PDF
pdf.SaveAs("output.pdf");
```
*Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.*
#### Sortie
Exécutez l'extrait ci-dessus et IronPDF renvoie un PDF d'une page contenant exactement le titre que vous avez transmis, le rendu le plus simple possible :
<iframe loading="lazy" title="HTML string to PDF output" src="/static-assets/pdf/tutorials/html-to-pdf/output.pdf#view=fit" width="100%" height="600px" style="border: 1px solid #D9E5E9; border-radius: 8px;">
</iframe>
#### Performance
Les performances de la conversion vers le format PDF d'IronPDF à partir de chaînes de caractères, d'URL et de code HTML ont été mesurées à l'aide d'un ordinateur portable Lenovo doté de 16 Go de RAM. Le document de test est une facture Enterprise de 3 pages comportant une grille CSS standard, des dégradés et des tableaux à plusieurs sections.
Voici les résultats :
| Métrique | Valeur|
|---|---|
| Temps de rendu moyen |~486 ms|
| Mémoire par rendu | ~3,6 Mo |
*Mesuré sur 5 rendus successifs sur une station de travail à 16 cœurs (Windows 11, .NET 8). Le premier appel inclut également une initialisation unique du moteur Chromium (~1,3 s)*
La première fois que j'ai effectué le test, le temps de rendu était très lent (plus d'une seconde par appel !). Après avoir examiné la situation, je me suis rendu compte que plusieurs instances de Chromium étaient ouvertes et que l'ordinateur fonctionnait sur batterie, deux facteurs qui empêchaient la bibliothèque de montrer sa véritable vitesse. Une fois que j'ai fermé les processus concurrents et branché l'appareil, les performances se sont améliorées : les exécutions à chaud ont affiché une moyenne d'environ 486 ms, avec un temps le plus rapide avoisinant les 473 ms.
[[t:(Les mises à jour récentes corrigent les problèmes avec les caractères spéciaux/émojis dans les métadonnées HTML et garantissent une meilleure gestion des champs de formulaire html, y compris les caractères chinois sur Linux. Testez le contenu dynamique avec <span style="color: red;">`EnableJavaScript = true`</span> pour des résultats optimaux.)]]
Lorsque votre chaîne HTML fait référence à des ressources locales comme des images ou des feuilles de style, utilisez le paramètre `baseUrlOrPath` pour convertir correctement le contenu HTML avec toutes les ressources :
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-2.cs
```
[[t:(baseUrlOrPath indique à IronPDF où trouver vos fichiers CSS, JavaScript et d'image. Tous les chemins relatifs dans votre chaîne HTML seront résolus depuis ce répertoire.)]]
[[w:(Un point à surveiller, et qui explique pourquoi il est important de tester le résultat quel que soit la bibliothèque utilisée pour la génération automatisée de documents, est que le document Enterprise peut comporter des éléments endommagés ou des ressources manquantes lorsque les références reviennent par défaut aux paramètres système. IronPDF vous fournit le paramètre `baseUrlOrPath` pour pointer les chemins relatifs vers le bon répertoire, donc une vérification rapide du rendu avant des exécutions en masse est généralement tout ce dont vous avez besoin pour l'attraper.)]]
**ARTICLE RELIÉ SUR COMMENT FAIRE :** <a class="content-anchor" href="/how-to/html-string-to-pdf/">Comment convertir une chaîne HTML en PDF en C# <i class="fa-solid fa-arrow-right"></i></a>
### Comment exporter une URL existante en PDF
Le rendu de pages web entières en PDFs avec C# permet aux équipes de séparer le design PDF et le travail de rendu côté serveur. Cette approche vous permet de convertir toute URL spécifiée directement au format PDF.
La méthode centrale est `RenderUrlAsPdf`, qui récupère une page en direct et la rend en un seul appel :
```csharp
using IronPdf;
// Create a PDF from any existing web page
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.SaveAs("wikipedia.pdf");
```
#### Sortie
Ici, `RenderUrlAsPdf` capture un article de Wikipédia en direct en un PDF statique prêt à être imprimé, avec texte, images, tableaux et mise en page préservés sur les 33 pages :
<iframe loading="lazy" title="URL (Wikipedia) to PDF output" src="/static-assets/pdf/tutorials/html-to-pdf/wikipedia.pdf#view=fit" width="100%" height="600px" style="border: 1px solid #D9E5E9; border-radius: 8px;">
</iframe>
**CSS Impression vs Écran**
Vous pouvez configurer IronPDF pour rendre à l'aide de l'un ou l'autre type de média CSS.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-4.cs
```
**Support JavaScript**
IronPDF prend entièrement en charge JavaScript, jQuery, et même AJAX lorsque vous convertissez HTML en PDF. Pour le contenu HTML dynamique, vous pouvez configurer IronPDF pour attendre la fin de JavaScript avant de rendre les pages web en PDF. C'est parfait pour les applications à page unique et les sites web dynamiques.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-5.cs
```
L'exécution JavaScript peut également être montrée lors du rendu d'un graphique d3.js avancé en format PDF depuis une page web :
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-6.cs
```
*Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.*
**CSS Réactif**
Comme les pages web réactives sont conçues pour être vues dans un navigateur, et IronPDF n'ouvre pas une vraie fenêtre de navigateur sur le système d'exploitation de votre serveur, les éléments HTML réactifs peuvent s'afficher à leur taille minimale. `PdfCssMediaType.Print` est recommandé pour naviguer dans cette question lors du rendu de pages web complètes.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-7.cs
```
**ARTICLE RELIÉ SUR COMMENT FAIRE :** <a class="content-anchor" href="/how-to/url-to-pdf/">Comment rendre une URL en PDF <i class="fa-solid fa-arrow-right"></i></a>
### Comment convertir un fichier HTML en PDF
La conversion de fichiers HTML locaux en PDF préserve tous les actifs relatifs, y compris le CSS, les images et le JavaScript, comme s'ils étaient ouverts en utilisant le protocole file://. Cette méthode de conversion HTML en PDF est le mieux pour convertir des modèles ou des pages HTML pré-conçues en documents PDF.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-8.cs
```
*Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.*
#### Sortie
Pointez `RenderHtmlFileAsPdf` sur un modèle de facture HTML et le design complet du fichier (logo, tableau des articles, totaux) passe à travers de manière pixel-parfaite, sans code supplémentaire de votre côté :
<iframe loading="lazy" title="HTML file (invoice) to PDF output" src="/static-assets/pdf/tutorials/html-to-pdf/Invoice.pdf#view=fit" width="100%" height="600px" style="border: 1px solid #D9E5E9; border-radius: 8px;">
</iframe>
#### Performance
Les performances ont été mesurées à nouveau en maintenant toutes les variables constantes pour afficher la facture d'Enterprise de 3 pages précédente à partir d'un fichier sur le disque :
| Métrique | Valeur|
|---|---|
| Temps de rendu moyen |~502 ms|
| Mémoire par rendu | ~3,1 Mo |
*Mesuré sur 5 rendus successifs sur la même station de travail à 16 cœurs (Windows 11, .NET 8). Le rendu basé sur les fichiers correspond au rendu des chaînes en mémoire à environ 3 % près ; La lecture du code HTML à partir du disque n'ajoute aucune surcharge mesurable.*
[[t:(Gardez vos fichiers HTML dans un dossier séparé avec leurs ressources (CSS, images) pour les éditer et tester dans un navigateur avant de convertir le fichier HTML en PDF. Cela garantit que votre HTML se rend parfaitement pour des documents PDF de haute qualité.)]]
**Article de référence:** <a class="content-anchor" href="/how-to/html-file-to-pdf/">Rendre un fichier HTML en PDF <i class="fa-solid fa-arrow-right"></i></a>
### Comment convertir des pages Razor en PDF
Si votre projet ASP.NET Core utilise déjà des pages Razor, vous pouvez les convertir directement en PDF sans reconstruire votre HTML. L'extension Razor d'IronPDF ajoute la méthode `RenderRazorToPdf`, qui prend votre page .cshtml (complète avec son modèle et sa mise en page) et la rend en tant que document PDF en un seul appel.
```shell
:InstallCmd Install-Emballer IronPdf.Extensions.Razor
```
```csharp
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
public class ReportModel : PageModel
{
public IActionResult OnGet()
{
var renderer = new ChromePdfRenderer();
// Render a Razor Page directly to PDF
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
```
[[i:(RenderRazorToPdf nécessite un projet ASP.NET Core Web App. Cela ne fonctionnera pas dans les applications console ou les bibliothèques de classes ; le moteur de vue Razor doit être disponible dans le pipeline d'hébergement.)]]
**ARTICLE COMMENT FAIRE RELIÉ :** <a class="content-anchor" href="/how-to/cshtml-to-pdf-razor/">Comment convertir du CSHTML en PDF dans les pages Razor <i class="fa-solid fa-arrow-right"></i></a>
### Comment convertir des vues MVC en PDF
Les équipes utilisant le modèle MVC peuvent générer des PDF directement à partir de leurs vues et contrôleurs existants. Installez le paquet d'extension MVC Core, puis appelez `RenderRazorViewToPdf` avec le chemin de votre vue et votre modèle ; IronPDF gère le pipeline de rendu Razor et produit un PDF fini.
C'est particulièrement utile pour les rapports, les factures, et toute page où le HTML est déjà conçu et testé dans le navigateur. Le PDF généré préserve la sortie complète de la Vue, y compris les pages de mise en page et les vues partielles.
```shell
:InstallCmd Install-Emballer IronPdf.Extensions.Mvc.Core
```
Tout d'abord, enregistrez le service `IRazorViewRenderer` dans votre Program.cs pour que vos contrôleurs puissent l'injecter :
```csharp
using IronPdf.Extensions.Mvc.Core;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Register the Razor view renderer for IronPDF
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
```
Ensuite, dans votre action de contrôleur, injectez le renderer et convertissez n'importe quelle Vue en PDF :
```csharp
using IronPdf;
using IronPdf.Extensions.Mvc.Core;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
// Inject the view renderer via constructor
public ReportController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
}
public IActionResult Download()
{
var reportModel = new { Title = "Quarterly Report", Total = 1250.00 };
var renderer = new ChromePdfRenderer();
// Render an MVC View with model data to PDF
PdfDocument pdf = renderer.RenderRazorViewToPdf(
_viewRenderService, "Views/Home/Report.cshtml", reportModel);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
```
**ARTICLE COMMENT FAIRE RELIÉ :** <a class="content-anchor" href="/how-to/cshtml-to-pdf-mvc-core/">Comment convertir des vues en PDF dans ASP.NET Core MVC <i class="fa-solid fa-arrow-right"></i></a>
### Page web dynamique à PDF
Avez-vous besoin que votre page web dynamique soit préservée et convertie en PDF tout en conservant la disposition et le formatage exacts ? Ne cherchez pas plus loin qu'IronPDF, qui convertit rapidement une variété de frameworks de pages web dynamiques populaires en PDF.
#### PDF à partir de pages ASPX
Voici un extrait de code succinct sur la conversion de pages ASPX en PDF dans les Active Server Pages.
```cs
:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-2.cs
```
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre [guide complet](https://ironpdf.com/how-to/aspx-to-pdf/).
#### XAML en PDF (MAUI)
Pour les développeurs cherchant à créer des applications multiplateformes, .NET MAUI est un choix populaire parmi les frameworks. IronPDF prend entièrement en charge la conversion de XAML en PDF en quelques étapes.
```cs
:path=/static-assets/pdf/content-code-examples/how-to/xaml-to-pdf-maui-mainpage-xaml-cs.cs
```
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre [guide complet](https://ironpdf.com/how-to/xaml-to-pdf-maui/).
#### Générer des rapports PDF
Quand il s'agit de générer des rapports PDF, les dimensions exactes et le format sont essentiels. Ainsi, IronPDF vous permet de générer des PDF facilement avec seulement quelques étapes.
```cs
:path=/static-assets/pdf/content-code-examples/how-to/csharp-pdf-reports-render-html-file.cs
```
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre [guide complet](https://ironpdf.com/how-to/csharp-pdf-reports/).
#### Créer des PDF dans des serveurs Blazor
IronPDF prend en charge .NET 6, et comme il inclut des types de projet comme Blazor, cet extrait de code fournit un exemple succinct de création de PDF dans un serveur Blazor.
```csharp
@code {
// Model to bind user input
private InputHTMLModel _InputMsgModel = new InputHTMLModel();
private async Task SubmitHTML()
{
// Set your IronPDF license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Create a renderer to convert HTML to PDF
var render = new IronPdf.ChromePdfRenderer();
// Render the HTML input into a PDF document
var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
var fileName = "iron.pdf";
// Create a stream reference for the PDF content
using var streamRef = new DotNetStreamReference(stream: doc.Stream);
// Invoke JavaScript function to download the PDF in the browser
await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
}
public class InputHTMLModel
{
public string HTML { get; set; } = "My new message";
}
}
```
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre [guide complet](https://ironpdf.com/how-to/blazor-tutorial/).
#### Razor en PDF (Serveurs Blazor)
En plus de créer des PDFs dans Blazor Servers, IronPDF prend également en charge la génération de documents PDF à partir de composants Razor dans une page Blazor. Rendant la création de fichiers et de pages PDF beaucoup plus rationalisée.
```csharp
[Parameter]
public IEnumerable<PersonInfo> persons { get; set; }
public Dictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();
protected override async Task OnInitializedAsync()
{
persons = new List<PersonInfo>
{
new PersonInfo { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new PersonInfo { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new PersonInfo { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
}
private async void PrintToPdf()
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Apply text footer
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} - {time}",
DrawDividerLine = true,
RightText = "Page {page} of {total-pages}",
Font = IronSoftware.Drawing.FontTypes.Arial,
FontSize = 11
};
Parameters.Add("persons", persons);
// Render razor component to PDF
PdfDocument pdf = renderer.RenderRazorComponentToPdf<Person>(Parameters);
File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData);
}
```
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre [guide complet](https://ironpdf.com/how-to/razor-to-pdf-blazor-server/).
#### CSHTML en PDF
La conversion de CSHTML (Razor) en PDF vous permet de générer des documents professionnels, prêts à imprimer, directement depuis vos applications web. Cela est utile pour les factures, rapports, contrats ou tout contenu dynamique. IronPDF prend en charge Razor Pages, MVC Core, et MVC Framework, ainsi que le rendu sans tête, facilitant l'intégration de la génération de PDF dans vos applications .NET en seulement quelques lignes de code.
##### CSHTML en PDF (Pages Razor)
```csharp
using IronPdf.Razor.Pages;
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");
}
```
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre [guide complet](https://ironpdf.com/how-to/cshtml-to-pdf-razor/).
##### CSHTML en PDF (MVC Core)
```csharp
public async Task<IActionResult> Persons()
{
var 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" }
};
if (_httpContextAccessor.HttpContext.Request.Method == HttpMethod.Post.Method)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render View to PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons);
Response.Headers.Add("Content-Disposition", "inline");
// Output PDF document
return File(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf");
}
return View(persons);
}
```
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre [guide complet](https://ironpdf.com/how-to/cshtml-to-pdf-mvc-core/).
##### CSHTML en PDF (MVC Framework)
```csharp
public ActionResult Persons()
{
var 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" }
};
if (HttpContext.Request.HttpMethod == "POST")
{
// Provide the path to your view file
var viewPath = "~/Views/Home/Persons.cshtml";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render Razor view to PDF document
PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);
Response.Headers.Add("Content-Disposition", "inline");
// View the PDF
return File(pdf.BinaryData, "application/pdf");
}
return View(persons);
}
```
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre [guide complet](https://ironpdf.com/how-to/cshtml-to-pdf-mvc-framework/).
##### CSHTML en PDF (Sans tête)
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/convert-pdf-20.cs
```
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre [guide complet](https://ironpdf.com/how-to/cshtml-to-pdf-razor-headlessly/).
## 2. Comment configurer les paramètres de conversion HTML en PDF
En termes de manipulation de documents PDF, IronPDF offre des personnalisations étendues via la propriété `ChromePdfRenderer.RenderingOptions` pour les PDFs rendus.
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th><strong>Paramètres</strong></th>
<th><strong>Description</strong></th>
<th><strong>Exemple</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<span><code>TailleDuPapier</code></span>
</td>
<td>
<span>Définir les dimensions des pages pour les PDF existants (A4, Letter, Legal, etc.)</span>
</td>
<td>
<span><code>PdfPaperSize.A4</code></span>
</td>
</tr>
<tr>
<td>
<span><code>OrientationDuPapier</code></span>
</td>
<td>
<span>Définir le mode portrait ou paysage pour les PDF existants</span>
</td>
<td>
<span><code>PdfPaperOrientation.Paysage</code></span>
</td>
</tr>
<tr>
<td>
<span><code>MargeHaut</code>/<code>Bas</code>/<code>Gauche</code>/<code>Droit</code></span>
</td>
<td>
<span>Définir les marges de page en millimètres (par défaut : 25mm)</span>
</td>
<td>
<span>25</span>
</td>
</tr>
<tr>
<td>
<span><code>CssMediaType</code></span>
</td>
<td>
<span>Écran ou impression CSS pour HTML vers PDF</span>
</td>
<td>
<span><code>PdfCssMediaType.Impression</code></span>
</td>
</tr>
<tr>
<td>
<span><code>PrintHtmlBackgrounds</code></span>
</td>
<td>
<span>Inclure les couleurs d'arrière-plan/images (par défaut : true)</span>
</td>
<td>
<span>vrai</span>
</td>
</tr>
<tr>
<td>
<span><code>ActiverJavaScript</code></span>
</td>
<td>
<span>Exécuter JavaScript avant de rendre le contenu HTML</span>
</td>
<td>
<span>vrai</span>
</td>
</tr>
<tr>
<td>
<span><code>AttentePour.RetardDeRendu</code></span>
</td>
<td>
<span>Temps d'attente pour un contenu HTML dynamique (ms)</span>
</td>
<td>
<span>500</span>
</td>
</tr>
</tbody>
</table>
</div>
Voir cet extrait de code pour un exemple complet de configuration pour manipuler des documents PDF :
```csharp
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
// Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Generate PDFs with all settings applied to HTML content
var htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>";
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
pdfDocument.SaveAs("styled-output.pdf");
```
[[t:(Utilisez PdfCssMediaType pour des mises en page plus propres et optimisées pour l'impression dans votre format de fichier PDF rendu. Utilisez Écran pour correspondre exactement à ce que les utilisateurs voient dans leur navigateur.)]]
**ARTICLES RELIÉS SUR COMMENT FAIRE :**
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th>Conversion PDF sur mesure</th>
<th>Affiner la disposition du PDF</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<ul>
<li><a class="content-anchor" href="/how-to/rendering-options/">Explorer toutes les méthodes de rendu PDF <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/custom-margins/">Comment définir des marges personnalisées <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/color-grayscale/">Comment générer des niveaux de gris <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
</td>
<td>
<ul>
<li><a class="content-anchor" href="/how-to/table-of-contents/">Comment ajouter une table des matières <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/html-to-pdf-page-breaks/">Comment ajouter ou éviter les sauts de page <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/viewport-zoom/">How to Fit to Paper & Zoom <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
### Comment définir des en-têtes HTTP personnalisés, des cookies et des identifiants de connexion
Lors du rendu d'URL nécessitant une authentification ou des métadonnées de requête spécifiques, IronPDF vous permet d'inclure les identifiants de connexion, les cookies de session, et les en-têtes HTTP avec la requête. Cela permet de rendre des tableaux de bord intranet, des rapports restreints, ou des pages générées par une API directement en PDF sans avoir besoin de récupérer séparément le HTML.
Pour l'authentification basique ou NTLM, définissez un objet `LoginCredentials` sur le moteur de rendu. Pour l'accès basé sur les jetons ou les sessions, passez les cookies et les en-têtes par `RenderingOptions` avant d'appeler `RenderUrlAsPdf`.
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword"
};
// Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";
// Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://intranet.com/pany.com/quarterly-report");
pdf.SaveAs("quarterly-report.pdf");
```
**ARTICLES COMMENT FAIRE RELIÉS :** <a class="content-anchor" href="/how-to/logins/">Rendre des PDF derrière l'authentification de connexion <i class="fa-solid fa-arrow-right"></i></a> | <a class="content-anchor" href="/how-to/http-request-header/">En-têtes de requête HTTP personnalisés <i class="fa-solid fa-arrow-right"></i></a>
### Comment configurer un proxy pour le rendu PDF
Lors du rendu de HTML qui charge des ressources externes derrière un proxy d'entreprise, passez l'adresse du proxy en tant que troisième paramètre sur `RenderHtmlAsPdf()`. Il s'agit d'un paramètre de méthode, non d'une propriété sur `ChromePdfRenderOptions`, donc il est défini par appel de rendu, pas sur l'instance du moteur de rendu.
Pour les proxies authentifiés, intégrez directement les informations d'identification dans l'URL en utilisant le format `http://user:pass@host:port`. Encodez les caractères spéciaux des mots de passe en URL avec `Uri.EscapeDataString()`.
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// Proxy is the third parameter, not a render option
var pdf = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath: null,
proxy: "http://proxy.co/rp.local:8080"
);
pdf.SaveAs("proxied-report.pdf");
```
Notez que `RenderUrlAsPdf()` n'accepte pas de paramètre proxy. Pour rendre une URL en direct derrière un proxy, récupérez d'abord le HTML avec `HttpClient` configuré avec un `WebProxy`, puis passez-le à `RenderHtmlAsPdf()` avec le paramètre proxy pour le chargement des ressources.
**ARTICLE COMMENT FAIRE RELIÉ :** <a class="content-anchor" href="/how-to/proxy/">Comment configurer des serveurs proxy pour le rendu PDF <i class="fa-solid fa-arrow-right"></i></a>
## 3. Comment utiliser les fonctionnalités avancées de génération et de sécurité des PDF
Débloquez des capacités de niveau entreprise pour la conversion HTML en PDF avec des modèles avancés, des opérations asynchrones, et des fonctionnalités de sécurité. Ces méthodes de manipulation de PDFs vous permettent de créer des documents PDF à grande échelle, de protéger les fichiers PDF sensibles, et d'assurer l'authenticité des documents lorsque vous convertissez HTML en format PDF professionnel.
### Comment générer un modèle HTML pour la création de PDF par lot
**Création de PDF par lot de base**
La création de PDF par lot est essentielle pour générer efficacement plusieurs documents PDF personnalisés. Pour les scénarios basiques, la méthode `String.Format` en C# fonctionne le mieux pour la manipulation simple de PDF.
```csharp
// Simple HTML templating with String.Format
string htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World");
// Results in HTML content: <h1>Hello World!</h1>
```
Pour les modèles plus longs lorsque vous devez générer des documents PDF, utilisez le remplacement de repères dans votre contenu HTML :
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-16.cs
```
**Modélisation HTML en PDF avec Handlebars.NET**
Pour les modèles complexes avec boucles et conditionnels lors de la conversion HTML en PDF, utilisez le modèle avancé avec `Handlebars.NET` pour générer des documents PDF avec du contenu HTML dynamique.
```shell
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-Emballer Handlebars.NET
```
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-21.cs
```
**Article HOW-TO RELATÉ :** <a class="content-anchor" href="https://github.com/rexm/Handlebars.NET">En savoir plus sur Handlebars.NET sur GitHub <i class="fa-solid fa-arrow-right"></i></a>
<div>
<h4 style="color: #181818;">Contrôlez les sauts de page du PDF :</h4> La gestion de la pagination dans les documents PDF générés garantit des mises en page professionnelles et lisibles lorsque vous convertissez des extraits HTML. Utilisez les feuilles de style CSS pour contrôler l'interruption des pages dans vos fichiers PDF.
</div>
```html
<!DOCTYPE html>
<html>
<head>
<style type="text/css" media="print">
.page {
page-break-after: always;
page-break-inside: avoid;
}
</style>
</head>
<body>
<div class="page">
<h1>Page 1 Content</h1>
</div>
<div class="page">
<h1>Page 2 Content</h1>
</div>
<div class="page">
<h1>Page 3 Content</h1>
</div>
</body>
</html>
```
### Comment générer un PDF en utilisant la méthode asynchrone
IronPDF offre des performances de niveau entreprise avec un support complet <a href="https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/task-based-asynchronous-programming" target="_blank" rel="noopener">asynchrone et multithread</a> pour vos besoins de conversion de HTML en PDF lorsque vous devez générer des fichiers PDF à grande échelle.
```csharp
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
public class PdfGenerationService
{
// Async method for non-blocking PDF generation from HTML content
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
// Async HTML to PDF conversion preserves thread pool
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Return PDF files as byte array for web responses
return pdf.BinaryData;
}
// Concurrent batch PDF generation for multiple HTML strings
public async Task GenerateMultiplePdfsAsync(List<string> htmlTemplates)
{
var renderer = new ChromePdfRenderer();
// Create parallel conversion tasks to generate PDF documents
var tasks = htmlTemplates.Select(html =>
renderer.RenderHtmlAsPdfAsync(html)
);
// Await all PDF conversions simultaneously
var pdfs = await Task.WhenAll(tasks);
// Save generated PDF files from HTML content
for (int i = 0; i < pdfs.Length; i++)
{
pdfs[i].SaveAs($"document-{i}.pdf");
}
}
}
```
*Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.*
[[t:(Conseils d'optimisation des performances pour la conversion HTML vers PDF)]]
- Utilisez des systèmes 64 bits pour une performance optimale de génération de PDF.
- Assurez des ressources serveur adéquates lorsque vous générez des documents PDF (évitez les niveaux gratuits sous-capacitaires)
- Permettez un délai de rendu suffisant pour un JavaScript complexe dans le contenu HTML.
- Réutilisez les instances `ChromePdfRenderer` lorsque c'est possible.
- Profitez des correctifs de mémoire récents pour les opérations par lots/asynchrone pour réduire l'utilisation des ressources ; testez pour des tailles de fichiers réduites avec des en-têtes/pieds de page personnalisés répétés.
**Article de référence:** <a class="content-anchor" href="/how-to/async/">Comment générer des PDF avec Async et Multithreading <i class="fa-solid fa-arrow-right"></i></a>
### Comment ajouter des fonctionnalités de sécurité avancées
**Comment ajouter une protection par mot de passe pour les fichiers PDF en .NET**
Sécurisez les documents PDF générés sensibles avec des mots de passe et des permissions lorsque vous convertissez le contenu HTML au format PDF protégé.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-24.cs
```
**Comment ajouter des signatures numériques aux fichiers PDF**
Ajoutez des signatures cryptographiques pour assurer l'authenticité des documents PDF lorsque vous générez des fichiers PDF à partir du contenu HTML. Une fois signée, vous pouvez [vérifier la signature et lire le certificat du signataire](/how-to/verify-pdf-signatures/) pour les audits et les vérifications de conformité.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-25.cs
```
*Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.*
**Article de référence :** <a class="content-anchor" href="/how-to/signing/">Signature numérique de documents PDF avec C# <i class="fa-solid fa-arrow-right"></i></a>
### Comment convertir des formulaires HTML en PDF remplissables
Pour convertir les éléments de formulaire HTML standard en champs de formulaire PDF interactifs et remplissables, activez l'option de rendu `CreatePdfFormsFromHtml`. Cela préserve les entrées de texte, les cases à cocher, les boutons radio et les menus déroulants comme champs modifiables dans le document PDF généré.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-26.cs
```
[[w:(Chaque champ de formulaire dans votre HTML doit avoir un attribut `name` unique. Les noms en double entraîneront les champs à partager la même valeur dans le PDF généré, conduisant à un comportement inattendu lorsque les utilisateurs remplissent le formulaire.)]]
**ARTICLE COMMENT FAIRE RELIÉ :** <a class="content-anchor" href="/how-to/create-forms/">Comment créer des formulaires PDF remplissables en C# <i class="fa-solid fa-arrow-right"></i></a>
### Comment convertir des éléments HTML spécifiques en PDF
Pour rendre une section spécifique d'une page plutôt que le document complet, isolez l'élément cible avant de le rendre. L'approche la plus directe utilise l'option de rendu `JavaScript` pour remplacer le corps du document par le contenu de l'élément cible, combiné avec `WaitFor.HtmlQuerySelector()` pour garantir que l'élément existe avant l'extraction. L'extrait ci-dessous préserve `document.head` afin que les feuilles de style et les polices soient transmises ; sans cette étape, les règles CSS s'appuyant sur des sélecteurs d'ancêtres seraient perdues dans le PDF extrait.
Pour les scénarios côté serveur où vous avez accès au HTML brut, extrayez le fragment cible avec un analyseur comme AngleSharp et passez-le à `RenderHtmlAsPdf()`, aucune exécution JavaScript nécessaire.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-27.cs
```
**ARTICLE COMMENT FAIRE RELIÉ :** <a class="content-anchor" href="/how-to/html-element-to-pdf/">Comment convertir des éléments HTML et des pages partielles en PDF <i class="fa-solid fa-arrow-right"></i></a>
### Comment rendre des pages authentifiées en PDF
Il existe trois mécanismes pour rendre les pages qui se trouvent derrière une authentification : les identifiants de connexion réseau, les cookies personnalisés et les en-têtes de requête HTTP. Ceux-ci couvrent les scénarios d'authentification les plus courants lors de la conversion de contenu web protégé en PDF.
**Identifiants de connexion**
Utilisez `ChromeHttpLoginCredentials` pour l'authentification basique, digest ou NTLM lors de la conversion d'URLs protégées en PDF.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-28.cs
```
**Cookies et en-têtes HTTP**
Pour l'authentification basée sur les tokens ou les sessions, attachez directement les cookies et les en-têtes HTTP personnalisés à la requête de rendu.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-29.cs
```
Pour les connexions basées sur des formulaires HTML (POST nom d'utilisateur/mot de passe), envisagez d'utiliser `HttpClient` pour authentifier d'abord, puis passez les cookies résultants au dictionnaire `CustomCookies` pour rendre la page protégée.
**ARTICLE COMMENT FAIRE RELIÉ :** <a class="content-anchor" href="/how-to/logins/">Comment convertir du HTML derrière une authentification de connexion en PDF <i class="fa-solid fa-arrow-right"></i></a>
### Comment générer des PDF à partir de plusieurs extraits HTML ?
Pour générer des PDF en combinant des extraits HTML, vous pouvez les [fusionner](https://ironpdf.com/examples/merge-pdfs/) . Cela permet de créer des rapports à plusieurs sections ou de combiner du contenu provenant de différentes sources :
```cs
var renderer = new ChromePdfRenderer();
PdfDocument part1 = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>");
PdfDocument part2 = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>");
var merged = PdfDocument.Merge(part1, part2);
merged.SaveAs("Merged.pdf");
// Alternative approach: copy specific pages
var combinedDoc = new PdfDocument();
combinedDoc.CopyPage(part1, 0); // Copy first page
combinedDoc.CopyPage(part2, 0); // Copy first page
combinedDoc.SaveAs("Combined.pdf");
```
Cela s'avère utile lors de la création de rapports à plusieurs sections à partir de différents fragments HTML. Vous pouvez également [ajouter des signets](https://ironpdf.com/how-to/bookmarks/) pour améliorer la navigation.

### Comment convertir du HTML en PDF via les API Web ?
Dans l'API Web ASP.NET , générez et renvoyez des fichiers PDF sans les enregistrer sur disque à l'aide [de MemoryStream](https://ironpdf.com/how-to/pdf-to-memory-stream/) . Ce modèle est idéal pour [les applications Blazor](https://ironpdf.com/how-to/blazor-tutorial/) et les services RESTful :
```cs
[HttpGet("download")]
public IActionResult GetPdf()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Web Report</h1><p>Generated dynamically.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
var bytes = pdf.BinaryData;
// Optional: Add metadata
pdf.MetaData.Author = "API Service";
pdf.MetaData.CreationDate = DateTime.Now;
return File(bytes, "application/pdf", "report.pdf");
}
```
Ce modèle fonctionne parfaitement pour la génération de PDF côté serveur dans les applications web .NET 10. Vous pouvez intégrer [des vues CSHTML](https://ironpdf.com/how-to/cshtml-to-pdf-mvc-core/) pour les applications MVC.
### Comment ajouter des en-têtes, des filigranes et des mesures de sécurité ?
#### Ajout d'en-têtes et de pieds de page Professional
Les en-têtes et pieds de page affichant les numéros de page, les dates ou la marque rendent les documents de plusieurs pages beaucoup plus lisibles et Professional. IronPDF les traite comme des fragments HTML, vous pouvez donc utiliser un style CSS complet, y compris les images et les couleurs de la marque :
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
MaxHeight = 50,
HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",
BaseUrl = new Uri(@"file:///C:/assets/")
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
MaxHeight = 30,
HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",
DrawDividerLine = true
};
renderer.RenderingOptions.MarginTop = 60;
renderer.RenderingOptions.MarginBottom = 40;
var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>");
pdf.SaveAs("report-with-headers.pdf");
```
Les espaces réservés comme `{page}` et `{total-pages}` sont remplacés automatiquement lors du rendu. Consultez le [tutoriel sur les en-têtes et pieds de page](https://ironpdf.com/how-to/headers-and-footers/) pour l'injection de dates dynamiques, le placement de logos et les styles de pages alternés.
#### Application de filigranes, de chiffrement et de signatures numériques
Les filigranes protègent les documents provisoires et les rapports confidentiels. La protection par mot de passe et les paramètres d'autorisation limitent les personnes autorisées à imprimer, copier ou modifier un PDF. Les signatures numériques ajoutent un niveau d'authentification vérifiable aux contrats et aux documents réglementés. Vous pouvez combiner les trois dans un seul flux de travail :
```csharp
using IronPdf;
using System.Security.Cryptography.X509Certificates;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>");
// Watermark
pdf.ApplyWatermark(
"<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>",
rotation: 45,
opacity: 30
);
// Encryption and permissions
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
// Digital signature
var cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");
var signature = new PdfSignature(cert)
{
SigningContact = "Jane Smith",
SigningLocation = "New York, NY",
SigningReason = "Contract Approval"
};
pdf.Sign(signature);
pdf.SaveAsRevision("signed-contract.pdf");
```
Découvrez [les techniques de tatouage numérique](https://ironpdf.com/how-to/custom-watermark/) , [les paramètres de sécurité des PDF](https://ironpdf.com/how-to/pdf-permissions-passwords/) et [la signature par certificat](https://ironpdf.com/examples/digitally-sign-a-pdf/) , y compris l'intégration HSM pour les modules de sécurité matériels.
## 4. Comment déployer du HTML en PDF sur des plateformes cloud
Le déploiement de la conversion HTML en PDF dans des environnements cloud nécessite une configuration spécifique pour le rendu sans tête, les chemins de fichiers temporaires et l'allocation des ressources. Cette section couvre les plateformes cloud les plus courantes et les déploiements conteneurisés avec IronPDF.
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th>Plate-forme</th>
<th>Ressources min.</th>
<th>Emballer</th>
<th>AutoConfig</th>
<th>Chemin Temp</th>
<th>Point clé</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<span>Service d'application Azure</span>
</td>
<td>
<span>Tier B1 (Basique)</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span><code>true</code></span>
</td>
<td>
<span>/tmp</span>
</td>
<td>
<span>Les niveaux Gratuit/Partagé échouent (pas de GPU, faible mémoire)</span>
</td>
</tr>
<tr>
<td>
<span>Fonctions Azure (Windows)</span>
</td>
<td>
<span>Tiers B1</span>
</td>
<td>
<span><code>IronPdf</code></span>
</td>
<td>
<span><code>true</code></span>
</td>
<td>
<span>/tmp</span>
</td>
<td>
<span>Décochez "Exécuter à partir du fichier package"</span>
</td>
</tr>
<tr>
<td>
<span>AWS Lambda</span>
</td>
<td>
<span>512 MB / délai de 60s</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span><code>true</code></span>
</td>
<td>
<span>/tmp (requis)</span>
</td>
<td>
<span>Le système de fichiers par défaut est en lecture seule</span>
</td>
</tr>
<tr>
<td>
<span>Docker (Ubuntu/Debian)</span>
</td>
<td>
<span>Dépendant de l'image</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span><code>false</code></span>
</td>
<td>
<span>Par défaut de l'image</span>
</td>
<td>
<span>Définir sur <code>false</code> (Dockerfile gère les dépendances)</span>
</td>
</tr>
</tbody>
</table>
</div>
### Comment déployer sur Azure
Lors du déploiement sur Azure Functions ou App Service, désactivez l'accélération GPU et assurez-vous que votre niveau d'hébergement fournit suffisamment de mémoire pour le rendu basé sur Chrome. Ajoutez ces paramètres au démarrage de l'application, avant tout appel de rendu.
Les sandboxes Azure fonctionnent sans tête sans accès GPU, et les tiers Free/Shared (F1, D1) manquent des ressources requises par Chrome. Ciblez au minimum un niveau **B1 (Basique)** ou supérieur.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-30.cs
```
[[e:(Les niveaux Free et Shared d'Azure App Service (F1, D1) n'ont pas assez de ressources pour le rendu PDF basé sur Chrome. Utilisez au minimum un niveau **B1 (Basique)** ou supérieur pour éviter les erreurs de manque de mémoire et les délais d'expiration des processus.)]]
**GUIDE DE DÉMARRAGE RELIÉ :** <a class="content-anchor" href="/get-started/azure/">Comment déployer IronPDF sur Azure <i class="fa-solid fa-arrow-right"></i></a>
### Comment déployer sur AWS Lambda
AWS Lambda nécessite un déploiement basé sur Docker pour le rendu sur Chrome. Le système de fichiers Lambda par défaut est en lecture seule, donc tous les chemins temporaires et de déploiement doivent pointer vers `/tmp`.
Configurez ces paramètres en haut de votre handler de fonction, avant tout appel de rendu.
```csharp
using Amazon.Lambda.Core;
using IronPdf;
public class PdfFunction
{
public string FunctionHandler(string input, ILambdaContext context)
{
// Lambda's only writable directory
var tmpPath = "/tmp/";
IronPdf.Installation.TempFolderPath = tmpPath;
IronPdf.Installation.CustomDeploymentDirectory = tmpPath;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
context.Logger.LogLine("Rendering PDF...");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(input);
// Save to /tmp before uploading to S3 or returning
var outputPath = $"{tmpPath}output.pdf";
pdf.SaveAs(outputPath);
return outputPath;
}
}
```
[[i:(Configurez votre fonction Lambda avec au moins **512 MB de mémoire** et un **temps limite de 60 secondes** minimum. Le rendu basé sur Chrome est gourmand en mémoire, et les démarrages à froid nécessitent un temps d'initialisation supplémentaire pour le moteur de navigateur intégré.)]]
**GUIDE DE DÉMARRAGE RELIÉ :** <a class="content-anchor" href="/get-started/aws/">Comment déployer IronPDF sur AWS Lambda <i class="fa-solid fa-arrow-right"></i></a>
### Comment déployer avec Docker
Pour les déploiements Docker, utilisez le paquet NuGet `IronPdf.Linux` pour réduire la taille de l'image et éviter les téléchargements d'actifs au runtime. Ce package inclut des binaires natifs Linux pré-empaquetés optimisés pour les environnements conteneurisés.
Définissez `LinuxAndDockerDependenciesAutoConfig = false` lorsque votre Dockerfile installe déjà les dépendances des bibliothèques partagées de Chrome via `apt-get`. L'auto-installation à l'exécution est redondante dans ce cas et peut entraîner des erreurs de permission ou des démarrages à froid plus longs.
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th>Plate-forme</th>
<th>Emballer</th>
<th>Configuration clé</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<span>Ubuntu 22.04 / Debian</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span>Par défaut, fonctionne dès la sortie de la boîte</span>
</td>
</tr>
<tr>
<td>
<span>Alpine Linux</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span>Installez Chromium via apk dans le Dockerfile</span>
</td>
</tr>
<tr>
<td>
<span>Amazon Linux 2</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span>Utilisez <code>LinuxAndDockerDependenciesAutoConfig = true</code></span>
</td>
</tr>
<tr>
<td>
<span>Conteneurs Windows</span>
</td>
<td>
<span><code>IronPdf</code></span>
</td>
<td>
<span>Aucune configuration supplémentaire requise</span>
</td>
</tr>
</tbody>
</table>
</div>
<br />
Un Dockerfile multi-stage minimal pour une image basée sur Ubuntu/Debian :
```dockerfile
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /app
COPY . .
RUN dotnet publish -c Release -o /out
FROM mcr.microsoft.com/dotnet/aspnet:10.0
# Install Chrome dependencies for PDF rendering
RUN apt-get update && apt-get install -y \
libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 \
libcups2 libdrm2 libxkbcommon0 libxcomposite1 \
libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 \
libcairo2 libasound2 libxshmfence1 && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /out .
ENTRYPOINT ["dotnet", "MyApp.dll"]
```
<br />
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-33.cs
```
*Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.*
**GUIDE DE DÉMARRAGE RELIÉ :** <a class="content-anchor" href="/get-started/ironpdf-docker/">Comment utiliser IronPDF avec Docker <i class="fa-solid fa-arrow-right"></i></a>
### Comment optimiser et mettre à l'échelle les performances HTML vers PDF dans .NET Core ?
Le moteur Chromium d'IronPDF rend déjà la plupart des pages en moins de 1 s sur du matériel moderne, mais le débit peut être multiplié par le **traitement par lots, l'activation du multithreading, et la réduction des charges de Headless Chrome**. Les conseils ci-dessous s'appliquent également à toutes les versions .NET.
#### 1. Rendus par lots sur un pool de threads en arrière-plan
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-12.cs
```
- `ChromePdfRenderer` is **[thread-safe](/examples/threading/)**; une seule instance peut servir des dizaines de tâches concurrentes sans blocage.
- `Parallel.ForEach` sature chaque cœur CPU ; Les serveurs classiques enregistrent des gains de débit de 4 à 6 fois supérieurs à ceux d'une boucle à thread unique.
- Si les requêtes ASP.NET s'accumulent, [déplacez les rendus lourds vers un service d'arrière-plan hébergé ou une file d'attente de messages](https://stackoverflow.com/questions/65237160/ironpdf-deadlocks-when-running-in-parallel) afin de maintenir des temps de réponse faibles.
#### 2. Réduire le coût de démarrage de Headless Chrome
IronPDF distribue sa propre version Chromium, mais chaque rendu entraîne un petit surcoût initial. La mise en commun des ressources est utile, et **les conteneurs Linux** doivent inclure deux bibliothèques natives :
```dockerfile
RUN apt-get update && \
apt-get install -y --no-install-recommends libnss3 libatk1.0-0
```
L'absence de l'une ou l'autre bibliothèque se manifeste comme une erreur `libnss3.so not found` dans les journaux Docker.
[Les drapeaux Chrome recommandés (automatiquement appliqués par IronPDF)](https://stackoverflow.com/questions/66947545/chrome-headless-not-working-as-root-with-no-sandbox) incluent `--disable-gpu` et `--no-sandbox` pour réduire la mémoire et les problèmes d'utilisateur root dans les conteneurs.
#### 3. Attendez le JavaScript tardif avec `RenderDelay` ou `WaitFor`
Les pages qui animent des compteurs ou récupèrent des données après `DOMContentLoaded` peuvent nécessiter un court délai :
```csharp
renderer.RenderingOptions.RenderDelay = 200; // ms
// OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
```
Voir le **[tutoriel WaitFor](/how-to/waitfor/)** pour des promesses personnalisées et le sondage de DOM.
#### 4. Activez la journalisation de débogage pour une demande
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-15.cs
```
Les traces Live DevTools exposent les polices manquantes, les images en 404 et les événements de timing sans recompilation du code.
#### 5. Réutilisez les PDF modèles au lieu de les re-rendre
Pour les séries de factures, [créez un **modèle PDF** avec des espaces réservés](/troubleshooting/ironpdf-performance-assistance/) comme `[[name]]` et effectuez un remplacement de texte au lieu de reconstruire du HTML complexe. C'est 10× plus rapide et léger en mémoire.
#### Lectures complémentaires
- Comment faire – [Générer des PDF avec async / multithreading](/how-to/async/)
- Dépannage – [Centre d'assistance à la performance](/troubleshooting/ironpdf-performance-assistance/)
- Exemple – [Démo de rendu en threads](/examples/threading/)
---
## 5. Comparer IronPDF avec d'autres bibliothèques PDF .NET
IronPDF est la solution de choix pour de nombreuses équipes en matière de génération PDF en C# grâce à son moteur de rendu basé sur Chromium robuste, ses API intuitives et ses améliorations produit fréquentes. Comparons IronPDF avec d'autres convertisseurs PDF pour trouver la meilleure adaptation à vos besoins de génération PDF.
### Alternatives Gratuites et Open Source
Certains outils qui pourraient être pris en compte :
- **PuppeteerSharp :** un port .NET sous licence MIT de Puppeteer qui pilote Chrome en mode headless.
- **Playwright for .NET :** la bibliothèque d'automatisation Apache-2.0 de Microsoft, également basée sur Chromium.
- **wkhtmltopdf :** un binaire HTML-to-PDF autonome de longue date.
- **Routes de navigateur natif :** imprimer en PDF directement depuis un navigateur en mode headless ou un driver d'impression OS.
Une distinction à faire d'abord : PuppeteerSharp et Playwright sont des frameworks d'automatisation de navigateur plutôt que des bibliothèques PDF. Ils exposent un appel d'impression vers PDF par-dessus un Chromium réel, donc la fidélité de rendu est excellente, mais les spécificités PDF comme les en-têtes et pieds de page, le cryptage, les signatures, et PDF/A, ainsi que le cycle de vie du navigateur, sont laissés à vous : expédition et mise à jour du binaire Chromium, gestion de la concurrence et récupération après crash, et construction de la structure du document à la main. Playwright ajoute une contrainte importante à connaître dès le départ : son `PdfAsync` fonctionne uniquement dans Chromium sans tête (pas Firefox ou WebKit), donc les déploiements doivent garantir un Chrome sans tête, ce qui est important dans les conteneurs et sans serveur.
wkhtmltopdf est à nouveau différent. Le projet a été archivé en 2024, et sa dernière version (0.12.6, 2020) exécute un moteur Qt WebKit ~2012 ne recevant plus de correctifs de sécurité, y compris un avis SSRF critique non corrigé (CVE-2022-35583) ; il reste utilisable pour des documents statiques simples sur des entrées de confiance, mais moins pour une sortie face au public. Les routes de navigateur natif n'ont besoin d'aucune bibliothèque du tout, au prix d'une API PDF native en .NET ou d'un véritable contrôle sur l'automatisation côté serveur.
Pour les prototypes, outils internes, et travaux à budget zéro, ce sont des choix légitimes. La comparaison ci-dessous couvre les bibliothèques commerciales, fonction par fonction.
### Matrice de décision rapide : IronPDF par rapport à d'autres convertisseurs PDF .NET
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th>Solution</th>
<th>Quand utiliser</th>
<th>Meilleur pour</th>
</tr>
</thead>
<tbody>
<tr style="background-color: #f8fdff;">
<td>
<span><strong>IronPDF</strong></span>
</td>
<td>
<span>Convertir des sites web modernes/HTML en PDF avec une fidélité visuelle exacte.</span>
</td>
<td>
<span>Applications d'entreprise nécessitant un moteur de rendu HTML fiable, un contenu dynamique et une assistance professionnelle.</span>
</td>
</tr>
<tr>
<td>
<span>wkhtmltopdf</span>
</td>
<td>
<span>Conversion HTML simple dans les applications non critiques où un rendu obsolète est acceptable.</span>
</td>
<td>
<span>Génération de documents de base avec les anciens HTML/CSS.</span>
</td>
</tr>
<tr>
<td>
<span>Syncfusion</span>
</td>
<td>
<span>Lorsque déjà investi dans l'écosystème Syncfusion ou éligible à la licence communautaire gratuite.</span>
</td>
<td>
<span>Organisations utilisant plusieurs composants Syncfusion.</span>
</td>
</tr>
<tr>
<td>
<span>Aspose.PDF</span>
</td>
<td>
<span>Manipulation complexe de fichiers PDF lorsque la qualité du rendu HTML est moins critique.</span>
</td>
<td>
<span>Fonctionnalités d'édition PDF étendues au-delà de la conversion HTML.</span>
</td>
</tr>
</tbody>
</table>
</div>
**COMPARAISONS RELIÉES :**
<ul>
<li><a class="content-anchor" href="/competitors/syncfusion-vs-ironpdf/">Comparer IronPDF et Syncfusion <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="mt-2 content-anchor" href="/competites/aspose-vs-ironpdf/">Comparer IronPDF et Aspose <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
### Comparaison détaillée : IronPDF par rapport à d'autres convertisseurs PDF .NET
<details class="comparison-toggle">
<summary>Show the full feature-by-feature table (10 .NET PDF libraries)</summary>
<div>
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full min-w-[1000px] border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-bold [&_th]:text-[#181818] [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-3 [&_td]:text-center [&_td]:align-middle [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_a]:underline [&_.iron-col]:bg-[#F1F9FB] [&_.recommended]:block [&_.recommended]:text-[11px] [&_.recommended]:font-bold [&_.recommended]:text-[#E01A59] [&_.col-name]:block [&_.col-name]:text-sm [&_.col-name]:font-bold [&_.section-row_td]:bg-[#F5F8FA] [&_.section-row_td]:font-bold [&_.section-row_td]:uppercase [&_.section-row_td]:tracking-wide [&_.section-row_td]:text-xs [&_.section-row_td]:text-[#5A6B77] [&_.chip]:inline-block [&_.chip]:whitespace-nowrap [&_.chip]:rounded [&_.chip]:px-2 [&_.chip]:py-0.5 [&_.chip]:text-xs [&_.chip]:font-semibold [&_.chip-full]:bg-[#E8F6F1] [&_.chip-full]:text-[#44806B] [&_.chip-good]:bg-[#E8F6F1] [&_.chip-good]:text-[#44806B] [&_.chip-free]:bg-[#E8F6F1] [&_.chip-free]:text-[#44806B] [&_.chip-partial]:bg-[#FFF2DA] [&_.chip-partial]:text-[#A66E0A] [&_.chip-limited]:bg-[#FFF2DA] [&_.chip-limited]:text-[#A66E0A] [&_.chip-no]:bg-[#FFE1E2] [&_.chip-no]:text-[#A8181D] [&_.chip-iron]:bg-[#DEEFFC] [&_.chip-iron]:text-[#1D629B] [&_.price-val]:block [&_.price-val]:font-bold [&_.price-note]:mt-0.5 [&_.price-note]:block [&_.price-note]:text-[11px] [&_.price-note]:leading-snug [&_.price-note]:text-[#5A6B77] [&_.winner-tag]:ml-1 [&_.winner-tag]:inline-block [&_.winner-tag]:rounded [&_.winner-tag]:bg-[#E8F6F1] [&_.winner-tag]:px-1.5 [&_.winner-tag]:py-0.5 [&_.winner-tag]:text-[11px] [&_.winner-tag]:font-bold [&_.winner-tag]:text-[#44806B]">
<thead>
<tr>
<th>Caractéristique</th>
<th class="iron-col">
<span class="recommended">★ Recommandé</span>
<span class="col-name">: IronPDF</span>
</th>
<th>wkhtmltopdf</th>
<th>iText</th>
<th>Aspose.PDF</th>
<th>Syncfusion</th>
<th>Apryse</th>
<th>SelectPdf</th>
<th>Spire.PDF</th>
<th>PDFSharp</th>
<th>QuestPDF</th>
</tr>
</thead>
<tbody>
<tr class="section-row">
<td colspan="11">Rendu et conversion</td>
</tr>
<tr>
<td>Précision du rendu</td>
<td class="iron-col">Pixel-Perfect <span class="winner-tag">Meilleur</span></td>
<td>Style d'impression</td>
<td>Programmatique uniquement</td>
<td>Bien</td>
<td>Bien</td>
<td>Bien</td>
<td>Bien</td>
<td>Niveau bas</td>
<td>Aucun rendu</td>
<td>Mise en page axée sur le code</td>
</tr>
<tr>
<td>Prise en charge HTML5</td>
<td class="iron-col"><span class="chip> chip-full">Complet</span></td>
<td><span class="chip> chip-limited">Dépassé</span></td>
<td><span class="chip> chip-partial">Ajouter sur</span></td>
<td><span class="chip> chip-partial">Partiel</span></td>
<td><span class="chip> chip-full">Complet</span></td>
<td><span class="chip> chip-partial">Module</span></td>
<td><span class="chip> chip-full">Complet</span></td>
<td><span class="chip> chip-limited">Limité</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-no">Non (Code-First)</span></td>
</tr>
<tr>
<td>Prise en charge CSS3</td>
<td class="iron-col"><span class="chip> chip-full">Complet</span></td>
<td><span class="chip> chip-limited">Limité</span></td>
<td><span class="chip> chip-partial">Ajouter sur</span></td>
<td><span class="chip> chip-partial">Partiel</span></td>
<td><span class="chip> chip-full">Complet</span></td>
<td><span class="chip> chip-partial">Module</span></td>
<td><span class="chip> chip-full">Complet</span></td>
<td><span class="chip> chip-limited">Limité</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-no">Non (Code-First)</span></td>
</tr>
<tr>
<td>Exécution de JavaScript</td>
<td class="iron-col">
<span class="winner-tag">Meilleur</span>
<span class="chip> chip-full">choix</span>
</td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-limited">Contesté</span></td>
<td><span class="chip> chip-partial">Limité</span></td>
<td><span class="chip> chip-partial">Limité</span></td>
<td><span class="chip> chip-partial">Limité</span></td>
<td><span class="chip> chip-limited">Très limité</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-no">Non</span></td>
</tr>
<tr>
<td>HTML→PDF (Mise en page moderne)</td>
<td class="iron-col"><span class="winner-tag">Meilleur</span> Chromium intégré</td>
<td>Qt WebKit (Obsolète)</td>
<td>Module complémentaire payant</td>
<td>Partiel; JS Contesté</td>
<td>Moteur clignotant</td>
<td>Module requis</td>
<td>HTML complet → PDF</td>
<td>Basé sur l'image</td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-no">Ce n'est pas un moteur de rendu HTML</span></td>
</tr>
<tr>
<td>PDF → Rendu d'image</td>
<td class="iron-col"><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-partial">Oui</span></td>
<td><span class="chip> chip-partial">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-partial">Limité</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-partial">Documents personnels uniquement</span></td>
</tr>
<tr class="section-row">
<td colspan="11">Opérations documentaires</td>
</tr>
<tr>
<td>Générer des PDF par programmation</td>
<td class="iron-col"><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-partial">HTML uniquement</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-good">Basique</span></td>
<td><span class="chip> chip-full">Oui (API Fluent)</span></td>
</tr>
<tr>
<td>Fusionner, diviser et réorganiser</td>
<td class="iron-col"><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-partial">Limité</span></td>
<td><span class="chip> chip-full">Oui</span></td>
</tr>
<tr>
<td>En-têtes / Pieds de page / Numéros de page</td>
<td class="iron-col">HTML/Texte/Image <span class="winner-tag">Meilleur</span></td>
<td>Limitée</td>
<td>Oui</td>
<td>Via Événements</td>
<td>Via Événements</td>
<td>Oui</td>
<td>Modèles</td>
<td>Manuel</td>
<td>Manuel uniquement</td>
<td><span class="chip> chip-full">Machines à sous de première classe</span></td>
</tr>
<tr>
<td>Filigranes et estampages</td>
<td class="iron-col"><span class="chip> chip-full">Texte et image</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-partial">Limité</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-full">Oui (Superpositions)</span></td>
</tr>
<tr>
<td>Extraire du texte des PDFs</td>
<td class="iron-col"><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-good">Basique</span></td>
<td><span class="chip> chip-no">Non</span></td>
</tr>
<tr>
<td>OCR pour les PDF numérisés</td>
<td class="iron-col">Via IronOCR <span class="winner-tag">intégré</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-partial">Ajouter sur</span></td>
<td><span class="chip> chip-partial">Produit séparé</span></td>
<td><span class="chip> chip-partial">Ajouter sur</span></td>
<td><span class="chip> chip-partial">Ajouter sur</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-partial">solution de contournement</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-no">Non</span></td>
</tr>
<tr class="section-row">
<td colspan="11">Sécurité et conformité</td>
</tr>
<tr>
<td>Signatures numériques</td>
<td class="iron-col"><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-good">Exemple de code</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-no">Non documenté</span></td>
</tr>
<tr>
<td>Conformité PDF/A</td>
<td class="iron-col"><span class="chip> chip-full">Oui (PDF/A-3B)</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-full">PDF complet/A</span></td>
<td><span class="chip> chip-full">Valider et créer</span></td>
<td><span class="chip> chip-good">Nécessite le SDK natif</span></td>
<td><span class="chip> chip-good">Conformité PDFA</span></td>
<td><span class="chip> chip-no">Non</span></td>
<td><span class="chip> chip-full">Oui</span></td>
<td><span class="chip> chip-partial">Limité</span></td>
<td><span class="chip> chip-full">PDF/A-2x et 3x</span></td>
</tr>
<tr class="section-row">
<td colspan="11">Expérience de plateforme et de développeur</td>
</tr>
<tr>
<td>Multiplateforme</td>
<td class="iron-col">Windows · Linux · macOS <span class="winner-tag">Les 3</span></td>
<td>Dépend des binaires</td>
<td>Norme .NET 2.0</td>
<td>Configuration supplémentaire Linux</td>
<td>Blink + Serveur .NET</td>
<td>SDK natif</td>
<td>Uniquement pour Windows *</td>
<td>Documentation Linux limitée</td>
<td>Axé sur Windows</td>
<td><span class="chip> chip-full">Windows/Linux/macOS</span></td>
</tr>
<tr>
<td>Déploiement dans le cloud et Docker</td>
<td class="iron-col">Azure · AWS · Docker <span class="winner-tag">Meilleur</span></td>
<td>Complexe ; Héritage</td>
<td>Plusieurs forfaits</td>
<td>Partiel ; Conteneurs</td>
<td>Extras Blink nécessaires</td>
<td>Dépendances natives</td>
<td>Compatible uniquement avec Windows</td>
<td>Informations limitées</td>
<td>Simple ; léger</td>
<td><span class="chip> chip-full">Docker/K8s ; Local</span></td>
</tr>
<tr class="section-row">
<td colspan="11">Assistance et documentation</td>
</tr>
<tr>
<td>Documentation</td>
<td class="iron-col">Meilleur copier-coller <span class="winner-tag">étendu</span></td>
<td>Documentation partielle de l'interface de ligne de commande</td>
<td>Vaste ; KB</td>
<td>Large ; GitHub</td>
<td>Centre d'aide</td>
<td>Catalogue multilingue</td>
<td>Guides de démarrage</td>
<td>Guide du programme</td>
<td>Guides communautaires</td>
<td><span class="chip> chip-full">Application structurée + compagnon</span></td>
</tr>
<tr>
<td>Support des développeurs</td>
<td class="iron-col">Ingénieurs <span class="winner-tag">disponibles</span> 24h/24 et 7j/7</td>
<td>Communauté uniquement</td>
<td>Abonnement inclus</td>
<td>Forum + Payant</td>
<td>24/5 Direct-Trac</td>
<td>Commercial</td>
<td>Email</td>
<td>Forum + Courriel</td>
<td>Communauté uniquement</td>
<td><span class="chip> chip-partial">Communauté + GitHub</span></td>
</tr>
<tr class="section-row">
<td colspan="11">Licences et tarification</td>
</tr>
<tr>
<td>Modèle de licence</td>
<td class="iron-col"><span class="chip> chip-iron">Perpétuel</span></td>
<td><span class="chip> chip-free">Source libre</span></td>
<td><span class="chip> chip-partial">AGPL / Abonnement</span></td>
<td><span class="chip> chip-good">Perpétuel</span></td>
<td><span class="chip> chip-partial">Abonnement annuel</span></td>
<td><span class="chip> chip-partial">Douanes / Consommation</span></td>
<td><span class="chip> chip-good">Perpétuel</span></td>
<td><span class="chip> chip-good">Perpétuel</span></td>
<td><span class="chip> chip-free">Gratuit (MIT)</span></td>
<td><span class="chip> chip-free">Niveaux gratuits et payants du MIT</span></td>
</tr>
<tr>
<td>Prix initial</td>
<td class="iron-col">
<span class="price-val iron-price">
<a href="https://ironpdf.com/licensing/">$liteLicense</a>
</span>
<span class="price-note">Perpétuelle · 1 développeur</span>
</td>
<td><span class="price-val"> style="color:#16a34a">Gratuit</span></td>
<td>
<span class="price-val">~45 000 $/an</span>
<span class="price-note">Devis personnalisé</span>
</td>
<td>
<span class="price-val">1 175 $+</span>
<span class="price-note">par développeur</span>
</td>
<td>
<span class="price-val">Devis personnalisé</span>
<span class="price-note">Gratuit <M (Communauté)</span>
</td>
<td>
<span class="price-val">~9 000 $+/an</span>
<span class="price-note">Devis personnalisé</span>
</td>
<td>
<span class="price-val">499 $+</span>
<span class="price-note">Licence perpétuelle</span>
</td>
<td>
<span class="price-val">9</span>
<span class="price-note">Licence perpétuelle · 1an de mises à jour</span>
</td>
<td><span class="price-val"> style="color:#16a34a">Gratuit</span></td>
<td>
<span class="price-note">Communauté</span>
<span class="price-val"> style="color:#16a34a">libre</span>
<span class="price-note">MIT < 1 million de dollars</span>
</td>
</tr>
<tr>
<td>Essai gratuit</td>
<td class="iron-col">30 jours · Fonctionnalités complètes <span class="winner-tag">, sans limites</span></td>
<td>N/A (Gratuit)</td>
<td>30 jours</td>
<td>Oui (avec filigrane)</td>
<td>Community <$1M Rev</td>
<td>Oui</td>
<td>Communauté (5 pages)</td>
<td>Gratuit (10 pages)</td>
<td>N/A (Gratuit)</td>
<td>N/A (MIT Free <$1M)</td>
</tr>
<tr>
<td>Transparence des prix</td>
<td class="iron-col">Publié et clair <span class="winner-tag">Meilleur</span></td>
<td>Open Source</td>
<td><span class="chip> chip-limited">AGPL complexe</span></td>
<td><span class="chip> chip-partial">Plusieurs niveaux</span></td>
<td><span class="chip> chip-good">Contactez-nous pour un devis</span></td>
<td><span class="chip> chip-limited">Prix non publié</span></td>
<td><span class="chip> chip-good">Publié</span></td>
<td><span class="chip> chip-good">Publié</span></td>
<td>MIT ; Aucune restriction</td>
<td>MIT ; Basé sur la confiance</td>
</tr>
</tbody>
</table>
</div>
</div>
</details>
### Comparaison de conversion HTML en PDF dans la vie réelle : rendu de la page d'accueil de Reddit
Pour évaluer la qualité du PDF de sortie, nous avons testé ces bibliothèques avec la page d'accueil de Reddit contenant du contenu web dynamique, des CSS modernes, et des éléments HTML JavaScript. Cette page sert de cas de test idéal pour la génération de PDF.
https://www.reddit.com/

**IronPDF**

IronPDF fournit des résultats parfaits, préservant tout le contenu web dynamique, le style des polices modernes et les éléments interactifs exactement comme affichés dans Chrome, le tout en seulement quelques lignes de code.
**Syncfusion**

Syncfusion a rendu le PDF avec la plupart des sections et des styles manquants, en particulier le contenu dynamique. Initialement bloqué par la sécurité de Reddit. Obtenir de meilleurs résultats nécessite un réglage approfondi de la ligne de commande, mais la sortie reste incomplète.
**Aspose.PDF**

Aspose.PDF a nécessité un téléchargement manuel de l'HTML d'abord (pas de support direct d'URL). Après conversion, la sortie manquait de mise en forme correcte et manquait pratiquement toutes les sections de contenu, ce qui la rendait inadaptée pour le web moderne avec du contenu dynamique.
**wkhtmltopdf**

wkhtmltopdf a terminé rapidement mais a produit une page simple et statique manquant de contenu critique comme les mises à jour en direct, les éléments dynamiques, et les sections interactives. Ceci démontre l'incompatibilité de wkhtmltopdf avec les sites modernes pilotés par JavaScript.
### Conclusion sur la performance et la qualité de sortie PDF
Pour les développeurs .NET ayant besoin d'un convertisseur HTML en PDF fiable, IronPDF se démarque avec un code minimal, des API faciles à utiliser, et des améliorations fréquentes du produit.
Dans un test réel sur du contenu web, il a fourni les résultats les plus rapides et les plus précis tandis que Syncfusion était à la traîne, Aspose nécessitait des étapes supplémentaires, et wkhtmltopdf manquait de style moderne. IronPDF offre le meilleur équilibre entre vitesse, précision et simplicité pour les flux de travail de conversion HTML en PDF d'aujourd'hui.
[[i:(Aspose, Syncfusion et wkhtmltopdf sont des marques commerciales de leurs propriétaires respectifs. Ce site n'est pas affilié ou approuvé par eux. Tous les noms, logos et marques appartiennent à leurs propriétaires, et les comparaisons sont basées sur les informations publiquement disponibles au moment de l'écriture.)]]
### Résumé
Ce guide a couvert tout ce qu'il fallait pour convertir HTML en PDF dans .NET : de la conversion de chaîne de base aux fonctionnalités avancées comme le traitement asynchrone, les signatures numériques, et la génération par lot. Nous avons démontré trois méthodes de conversion, des configurations essentielles, des fonctionnalités avancées et des paramètres de sécurité, et comparé IronPDF avec d'autres bibliothèques à travers des tests réels de génération de documents dynamiques.
Tandis que les concurrents ont eu des difficultés avec les sites modernes ou ont nécessité des solutions complexes, IronPDF a fourni des résultats impeccables avec un code minimal et un moteur de rendu puissant.
Prêt à simplifier votre flux de travail PDF et à expérimenter une génération de PDF polyvalente en seulement quelques lignes de code ? Installez IronPDF via le Emballer Manager NuGet (ou sélectionnez Gérer NuGet Emballer dans Visual Studio) et convertissez votre premier HTML en PDF aujourd'hui.
[Commencez votre essai gratuit de 30 jours](/licensing/) pour des tests de production sans filigranes. [Licences flexibles](/licensing/) commencent à `$liteLicense` avec un tarif transparent pour les équipes qui s'adapte à vos besoins.
<a class="content-anchor" href="/licensing/">Voir les licences IronPDF <i class="fa-solid fa-arrow-right"></i></a>
## 6. Dépannage & Support technique
Avez-vous des difficultés avec les erreurs suivantes lors de la conversion HTML en PDF ? IronPDF offre un support ingénieur 24/7 via le widget de chat sur [https://ironpdf.com/](/)
### Solutions rapides aux erreurs courantes
- Rendu lent au premier? Normal. Chrome s'initialise en 2–3 s, puis accélère.
- Problèmes de cloud? Utilisez au moins Azure B1 ou équivalent.
- Ressources manquantes? Définissez des chemins de base ou intégrez sous forme de base64.
- Éléments manquants? Ajoutez `RenderDelay` pour l'exécution JavaScript.
- Mémoire dans le rendu ? Mettez à jour vers la dernière version (v2026.6.1) pour des correctifs dans HTML vers PDF, tampons et en-têtes/pieds de page.
- Problèmes de champ de formulaire (par exemple, longues zones de texte, cases à cocher)? Corrigé en v2025.7.17 ; assurez-vous que les cases ont des noms uniques.
- Coupures d'en-tête/pied de page personnalisés ou caractères spéciaux corrompus? Résolu en v2025.8.8 ; testez le retour à la ligne et les métadonnées.
### Obtenez de l'aide des ingénieurs qui ont développé IronPDF, 24/7
<ul>
<li><a class="content-anchor" href="/troubleshooting/engineering-request-pdf/">Guide de dépannage complet <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="mt-2 content-anchor" href="/troubleshooting/ironpdf-performance-assistance/">Stratégies d'optimisation des performances <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="mt-2 content-anchor" href="/troubleshooting/engineering-request-pdf/">Demandes d'assistance technique <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="mt-2 content-anchor" href="/troubleshooting/quick-ironpdf-troubleshooting/">Liste de contrôle de dépannage rapide <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
*as-heading:2(Prochaines étapes)*
<div class="my-6 grid grid-cols-1 gap-4 pb-10 sm:grid-cols-2 lg:grid-cols-3">
<div class="group flex h-full flex-col gap-8 rounded-lg border border-[#E7EEF0] bg-white p-6 transition-all duration-200 hover:shadow-[0_4px_12px_0_rgb(24_24_24/0.08)]">
<span class="flex flex-col gap-4">
<span class="flex h-8 max-w-10 items-center justify-center text-[32px] text-[#678CB1]"><i class="fa-duotone fa-solid fa-graduation-cap"></i></span>
<span class="text-[15px]/[1.6] font-bold text-[#181818]">Comment fusionner ou diviser des documents PDF</span>
</span>
<a href="/how-to/headers-and-footers/" class="mt-auto flex items-center gap-2 text-sm/[1.4] font-bold text-[#2A95D5] no-underline transition-colors duration-200 group-hover:text-[#E01A59]">Voir les guides pratiques <span class="inline-flex items-center transition-transform duration-200 group-hover:translate-x-1"><i class="fa-solid fa-arrow-right"></i></span></a>
</div>
<div class="group flex h-full flex-col gap-8 rounded-lg border border-[#E7EEF0] bg-white p-6 transition-all duration-200 hover:shadow-[0_4px_12px_0_rgb(24_24_24/0.08)]">
<span class="flex flex-col gap-4">
<span class="flex h-8 max-w-10 items-center justify-center text-[32px] text-[#678CB1]"><i class="fa-duotone fa-solid fa-graduation-cap"></i></span>
<span class="text-[15px]/[1.6] font-bold text-[#181818]">Comment ajouter des en-têtes et des pieds de page personnalisés aux fichiers PDF</span>
</span>
<a href="/how-to/merge-or-split-pdfs/" class="mt-auto flex items-center gap-2 text-sm/[1.4] font-bold text-[#2A95D5] no-underline transition-colors duration-200 group-hover:text-[#E01A59]">Voir les guides pratiques <span class="inline-flex items-center transition-transform duration-200 group-hover:translate-x-1"><i class="fa-solid fa-arrow-right"></i></span></a>
</div>
<div class="group flex h-full flex-col gap-8 rounded-lg border border-[#E7EEF0] bg-white p-6 transition-all duration-200 hover:shadow-[0_4px_12px_0_rgb(24_24_24/0.08)]">
<span class="flex flex-col gap-4">
<span class="flex h-8 max-w-10 items-center justify-center text-[32px] text-[#678CB1]"><i class="fa-duotone fa-solid fa-graduation-cap"></i></span>
<span class="text-[15px]/[1.6] font-bold text-[#181818]">Comment expurger du texte et des régions dans un PDF</span>
</span>
<a href="/how-to/redact-text/" class="mt-auto flex items-center gap-2 text-sm/[1.4] font-bold text-[#2A95D5] no-underline transition-colors duration-200 group-hover:text-[#E01A59]">Voir les guides pratiques <span class="inline-flex items-center transition-transform duration-200 group-hover:translate-x-1"><i class="fa-solid fa-arrow-right"></i></span></a>
</div>
</div>
<div class="tutorials-navigation">
<a href="/how-to/create-new-pdfs/" class="tutorials-navigation__cta tutorials-navigation__cta--left"><i class="fa-solid fa-chevron-left"></i>Creating PDFs in C#</a>
<a href="/tutorials/csharp-edit-pdf-complete-tutorial/" class="tutorials-navigation__cta tutorials_navigation__cta--right">Editing PDFs in C#<i class="fa-solid fa-arrow-right"></i></a>
</div>
Convertir du HTML en PDF en C# semble simple jusqu'à ce que de vrais projets atteignent les limites de rendu, de déploiement et de mise à l'échelle. Ce guide montre comment le faire de manière fiable avec le moteur basé sur Chrome de IronPDF, en commençant par un code fonctionnel que vous pouvez exécuter en moins d'une minute. Si vous choisissez encore un outil, comparez d'abord toutes les bibliothèques C# HTML to PDF.
TL;DR : Guide de démarrage rapide pour convertir du HTML en PDF
Vous pouvez facilement convertir du HTML en PDF en C# en utilisant la bibliothèque IronPDF, qui fournit la méthode ChromePdfRenderer.RenderHtmlAsPdf pour créer des fichiers PDF de haute qualité à partir de HTML, CSS et JavaScript.
new IronPdf.ChromePdfRenderer()
.RenderHtmlAsPdf("<p>Hello World</p>")
.SaveAs("pixelperfect.pdf");
C#
3Déployez pour tester sur votre environnement de production.
Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit
Après avoir acheté ou vous être inscrit pour un essai de 30 jours d'IronPDF, trouvez la clé de licence envoyée à votre email. Ajoutez votre clé de licence au début de votre application.
Tout le code de ce guide a été vérifié sur IronPDF v2026.6.1 · .NET 10 · Juin 2026.
Pourquoi les développeurs .NET ont besoin d'un convertisseur HTML vers PDF pour C#
IronPDF utilise un moteur de rendu Google Chromium intégré pour garantir des conversions fidèles, préservant avec précision la mise en page et le style de votre contenu web.
✅ Moteur de rendu Chrome robuste : utilise le moteur Blink de Chrome pour une conversion HTML en PDF précise.
✅ Précision pixel par pixel : les PDF générés correspondent exactement au web, pas à une version adaptée à l'impression.
✅ Support complet des technologies web modernes : prise en charge complète de CSS3, HTML5 et JavaScript pour tous les éléments HTML.
✅ Boost de performance de 5 à 20x : considérablement plus rapide que l'automatisation des navigateurs ou les pilotes web.
Veuillez noter: Dernières nouveautés dans v2026.6.1 (Juin 2026) : signets PDF automatiques générés à partir des titres HTML lors du rendu, linéarisation complète des PDF en mémoire pour les environnements cloud et isolés, signatures numériques ECDSA avec inspection du certificat du signataire, annotations de lien cliquables, et images Linux et Docker plus fines et renforcées. Consultez le journal des modifications complet pour l'historique complet des versions.
IronPDF simplifie le processus pour les développeurs .NET en offrant une solution simple et efficace pour générer des documents PDF d'aspect professionnel à partir du HTML de votre application web. Des factures et rapports aux certificats et archives, les développeurs peuvent travailler avec leur pile web familière tandis qu'IronPDF gère le complexe en quelques lignes de code.
Que vous travailliez avec des chaînes HTML, des URL ou des fichiers HTML, IronPDF offre des options flexibles pour générer des documents PDF de haute qualité qui répondent à vos besoins spécifiques.
Dans ce tutoriel, nous vous guiderons à travers les scénarios les plus courants, y compris la conversion d'une chaîne HTML en PDF, d'une URL en PDF et d'un fichier HTML en PDF. De plus, IronPDF offre également une variété d'opérations pour manipuler des documents PDF :
L'opération la plus fondamentale est la conversion de chaîne HTML en PDF. Cette méthode est parfaite pour le contenu HTML généré dynamiquement. La méthode RenderHtmlAsPdf prend en charge intégralement HTML5, CSS3, JavaScript, et les images lors de la conversion directe de HTML en PDF.
using IronPdf;// Create the Chrome renderervar renderer = new ChromePdfRenderer();// Convert HTML string to PDFvar pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");// Save the PDFpdf.SaveAs("output.pdf");
using IronPdf;
// Create the Chrome renderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Save the PDF
pdf.SaveAs("output.pdf");
ImportsIronPdf' Create the Chrome rendererDim renderer As New ChromePdfRenderer()' Convert HTML string to PDFDim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")' Save the PDFpdf.SaveAs("output.pdf")
Imports IronPdf
' Create the Chrome renderer
Dim renderer As New ChromePdfRenderer()
' Convert HTML string to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
' Save the PDF
pdf.SaveAs("output.pdf")
Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.
Sortie
Exécutez l'extrait ci-dessus et IronPDF renvoie un PDF d'une page contenant exactement le titre que vous avez transmis, le rendu le plus simple possible :
Performance
Les performances de la conversion vers le format PDF d'IronPDF à partir de chaînes de caractères, d'URL et de code HTML ont été mesurées à l'aide d'un ordinateur portable Lenovo doté de 16 Go de RAM. Le document de test est une facture Enterprise de 3 pages comportant une grille CSS standard, des dégradés et des tableaux à plusieurs sections.
Voici les résultats :
Métrique
Valeur
Temps de rendu moyen
~486 ms
Mémoire par rendu
~3,6 Mo
Mesuré sur 5 rendus successifs sur une station de travail à 16 cœurs (Windows 11, .NET 8). Le premier appel inclut également une initialisation unique du moteur Chromium (~1,3 s)
La première fois que j'ai effectué le test, le temps de rendu était très lent (plus d'une seconde par appel !). Après avoir examiné la situation, je me suis rendu compte que plusieurs instances de Chromium étaient ouvertes et que l'ordinateur fonctionnait sur batterie, deux facteurs qui empêchaient la bibliothèque de montrer sa véritable vitesse. Une fois que j'ai fermé les processus concurrents et branché l'appareil, les performances se sont améliorées : les exécutions à chaud ont affiché une moyenne d'environ 486 ms, avec un temps le plus rapide avoisinant les 473 ms.
Conseils: Les mises à jour récentes corrigent les problèmes avec les caractères spéciaux/émojis dans les métadonnées HTML et garantissent une meilleure gestion des champs de formulaire html, y compris les caractères chinois sur Linux. Testez le contenu dynamique avec EnableJavaScript = true pour des résultats optimaux.
Lorsque votre chaîne HTML fait référence à des ressources locales comme des images ou des feuilles de style, utilisez le paramètre baseUrlOrPath pour convertir correctement le contenu HTML avec toutes les ressources :
using IronPdf;var renderer = new ChromePdfRenderer();// Convert HTML content with local image and CSS referencesstring html = @" <link rel='stylesheet' href='styles.css'> <img src='logo.png' alt='Company Logo'> <h1>Company Report</h1> <p>Annual report content...</p>";// Set base path for resolving relative URLs in HTML to PDF conversionvar pdf = renderer.RenderHtmlAsPdf(html, @"C:\MyProject\Assets\");pdf.SaveAs("report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Convert HTML content with local image and CSS references
string html = @"
<link rel='stylesheet' href='styles.css'>
<img src='logo.png' alt='Company Logo'>
<h1>Company Report</h1>
<p>Annual report content...</p>";
// Set base path for resolving relative URLs in HTML to PDF conversion
var pdf = renderer.RenderHtmlAsPdf(html, @"C:\MyProject\Assets\");
pdf.SaveAs("report.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Convert HTML content with local image and CSS referencesDim html AsString = " <link rel='stylesheet' href='styles.css'> <img src='logo.png' alt='Company Logo'> <h1>Company Report</h1> <p>Annual report content...</p>"' Set base path for resolving relative URLs in HTML to PDF conversionDim pdf = renderer.RenderHtmlAsPdf(html, "C:\MyProject\Assets\")pdf.SaveAs("report.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Convert HTML content with local image and CSS references
Dim html As String = "
<link rel='stylesheet' href='styles.css'>
<img src='logo.png' alt='Company Logo'>
<h1>Company Report</h1>
<p>Annual report content...</p>"
' Set base path for resolving relative URLs in HTML to PDF conversion
Dim pdf = renderer.RenderHtmlAsPdf(html, "C:\MyProject\Assets\")
pdf.SaveAs("report.pdf")
Conseils: baseUrlOrPath indique à IronPDF où trouver vos fichiers CSS, JavaScript et d'image. Tous les chemins relatifs dans votre chaîne HTML seront résolus depuis ce répertoire.
Avertissement: Un point à surveiller, et qui explique pourquoi il est important de tester le résultat quel que soit la bibliothèque utilisée pour la génération automatisée de documents, est que le document Enterprise peut comporter des éléments endommagés ou des ressources manquantes lorsque les références reviennent par défaut aux paramètres système. IronPDF vous fournit le paramètre baseUrlOrPath pour pointer les chemins relatifs vers le bon répertoire, donc une vérification rapide du rendu avant des exécutions en masse est généralement tout ce dont vous avez besoin pour l'attraper.
Le rendu de pages web entières en PDFs avec C# permet aux équipes de séparer le design PDF et le travail de rendu côté serveur. Cette approche vous permet de convertir toute URL spécifiée directement au format PDF.
La méthode centrale est RenderUrlAsPdf, qui récupère une page en direct et la rend en un seul appel :
using IronPdf;// Create a PDF from any existing web pagevar renderer = new ChromePdfRenderer();var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");pdf.SaveAs("wikipedia.pdf");
using IronPdf;
// Create a PDF from any existing web page
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.SaveAs("wikipedia.pdf");
ImportsIronPdf' Create a PDF from any existing web pagePrivate renderer = New ChromePdfRenderer()Private pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")pdf.SaveAs("wikipedia.pdf")
Imports IronPdf
' Create a PDF from any existing web page
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")
pdf.SaveAs("wikipedia.pdf")
Sortie
Ici, RenderUrlAsPdf capture un article de Wikipédia en direct en un PDF statique prêt à être imprimé, avec texte, images, tableaux et mise en page préservés sur les 33 pages :
CSS Impression vs Écran
Vous pouvez configurer IronPDF pour rendre à l'aide de l'un ou l'autre type de média CSS.
using IronPdf;using IronPdf.Rendering;// Initialize HTML to PDF convertervar renderer = new ChromePdfRenderer();// Configure CSS media type for rendering specified URLsrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;// Screen media type shows the entire web page as displayed on screen
using IronPdf;
using IronPdf.Rendering;
// Initialize HTML to PDF converter
var renderer = new ChromePdfRenderer();
// Configure CSS media type for rendering specified URLs
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Screen media type shows the entire web page as displayed on screen
ImportsIronPdfImportsIronPdf.Rendering' Initialize HTML to PDF converterDim renderer As New ChromePdfRenderer()' Configure CSS media type for rendering specified URLsrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print' Screen media type shows the entire web page as displayed on screen
Imports IronPdf
Imports IronPdf.Rendering
' Initialize HTML to PDF converter
Dim renderer As New ChromePdfRenderer()
' Configure CSS media type for rendering specified URLs
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
' Screen media type shows the entire web page as displayed on screen
Support JavaScript
IronPDF prend entièrement en charge JavaScript, jQuery, et même AJAX lorsque vous convertissez HTML en PDF. Pour le contenu HTML dynamique, vous pouvez configurer IronPDF pour attendre la fin de JavaScript avant de rendre les pages web en PDF. C'est parfait pour les applications à page unique et les sites web dynamiques.
using IronPdf;// Configure JavaScript rendering for dynamic HTML content to PDFvar renderer = new ChromePdfRenderer();// Enable JavaScript execution during PDF generationrenderer.RenderingOptions.EnableJavaScript = true;// WaitFor.RenderDelay pauses before capturing the HTMLrenderer.RenderingOptions.WaitFor.RenderDelay(500); // milliseconds
using IronPdf;
// Configure JavaScript rendering for dynamic HTML content to PDF
var renderer = new ChromePdfRenderer();
// Enable JavaScript execution during PDF generation
renderer.RenderingOptions.EnableJavaScript = true;
// WaitFor.RenderDelay pauses before capturing the HTML
renderer.RenderingOptions.WaitFor.RenderDelay(500); // milliseconds
ImportsIronPdf' Configure JavaScript rendering for dynamic HTML content to PDFDim renderer As New ChromePdfRenderer()' Enable JavaScript execution during PDF generationrenderer.RenderingOptions.EnableJavaScript = True' WaitFor.RenderDelay pauses before capturing the HTMLrenderer.RenderingOptions.WaitFor.RenderDelay(500) ' milliseconds
Imports IronPdf
' Configure JavaScript rendering for dynamic HTML content to PDF
Dim renderer As New ChromePdfRenderer()
' Enable JavaScript execution during PDF generation
renderer.RenderingOptions.EnableJavaScript = True
' WaitFor.RenderDelay pauses before capturing the HTML
renderer.RenderingOptions.WaitFor.RenderDelay(500) ' milliseconds
L'exécution JavaScript peut également être montrée lors du rendu d'un graphique d3.js avancé en format PDF depuis une page web :
using IronPdf;// Create renderer for JavaScript-heavy HTMLvar renderer = new ChromePdfRenderer();// Convert d3.js visualization web page to PDFvar pdf = renderer.RenderUrlAsPdf("https://observablehq.com/@d3/chord-diagram");// Save the interactive chart as static PDFpdf.SaveAs("chart.pdf");
using IronPdf;
// Create renderer for JavaScript-heavy HTML
var renderer = new ChromePdfRenderer();
// Convert d3.js visualization web page to PDF
var pdf = renderer.RenderUrlAsPdf("https://observablehq.com/@d3/chord-diagram");
// Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf");
ImportsIronPdf' Create renderer for JavaScript-heavy HTMLDim renderer As New ChromePdfRenderer()' Convert d3.js visualization web page to PDFDim pdf = renderer.RenderUrlAsPdf("https://observablehq.com/@d3/chord-diagram")' Save the interactive chart as static PDFpdf.SaveAs("chart.pdf")
Imports IronPdf
' Create renderer for JavaScript-heavy HTML
Dim renderer As New ChromePdfRenderer()
' Convert d3.js visualization web page to PDF
Dim pdf = renderer.RenderUrlAsPdf("https://observablehq.com/@d3/chord-diagram")
' Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf")
Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.
CSS Réactif
Comme les pages web réactives sont conçues pour être vues dans un navigateur, et IronPDF n'ouvre pas une vraie fenêtre de navigateur sur le système d'exploitation de votre serveur, les éléments HTML réactifs peuvent s'afficher à leur taille minimale. PdfCssMediaType.Print est recommandé pour naviguer dans cette question lors du rendu de pages web complètes.
// Configure for optimal responsive design handling in HTML to PDFrenderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
// Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
La conversion de fichiers HTML locaux en PDF préserve tous les actifs relatifs, y compris le CSS, les images et le JavaScript, comme s'ils étaient ouverts en utilisant le protocole file://. Cette méthode de conversion HTML en PDF est le mieux pour convertir des modèles ou des pages HTML pré-conçues en documents PDF.
using IronPdf;// Initialize ChromePdfRenderer for HTML file conversionvar renderer = new ChromePdfRenderer();// Convert HTML file to PDF documents// Preserves all relative paths and linked resources in HTMLvar pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");// Save the HTML file as PDF pdf.SaveAs("Invoice.pdf");// All CSS, JavaScript, and images load correctly in the generated PDF
using IronPdf;
// Initialize ChromePdfRenderer for HTML file conversion
var renderer = new ChromePdfRenderer();
// Convert HTML file to PDF documents
// Preserves all relative paths and linked resources in HTML
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
// Save the HTML file as PDF
pdf.SaveAs("Invoice.pdf");
// All CSS, JavaScript, and images load correctly in the generated PDF
ImportsIronPdf' Initialize ChromePdfRenderer for HTML file conversionDim renderer As New ChromePdfRenderer()' Convert HTML file to PDF documents' Preserves all relative paths and linked resources in HTMLDim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")' Save the HTML file as PDF pdf.SaveAs("Invoice.pdf")' All CSS, JavaScript, and images load correctly in the generated PDF
Imports IronPdf
' Initialize ChromePdfRenderer for HTML file conversion
Dim renderer As New ChromePdfRenderer()
' Convert HTML file to PDF documents
' Preserves all relative paths and linked resources in HTML
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
' Save the HTML file as PDF
pdf.SaveAs("Invoice.pdf")
' All CSS, JavaScript, and images load correctly in the generated PDF
Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.
Sortie
Pointez RenderHtmlFileAsPdf sur un modèle de facture HTML et le design complet du fichier (logo, tableau des articles, totaux) passe à travers de manière pixel-parfaite, sans code supplémentaire de votre côté :
Performance
Les performances ont été mesurées à nouveau en maintenant toutes les variables constantes pour afficher la facture d'Enterprise de 3 pages précédente à partir d'un fichier sur le disque :
Métrique
Valeur
Temps de rendu moyen
~502 ms
Mémoire par rendu
~3,1 Mo
Mesuré sur 5 rendus successifs sur la même station de travail à 16 cœurs (Windows 11, .NET 8). Le rendu basé sur les fichiers correspond au rendu des chaînes en mémoire à environ 3 % près ; La lecture du code HTML à partir du disque n'ajoute aucune surcharge mesurable.
Conseils: Gardez vos fichiers HTML dans un dossier séparé avec leurs ressources (CSS, images) pour les éditer et tester dans un navigateur avant de convertir le fichier HTML en PDF. Cela garantit que votre HTML se rend parfaitement pour des documents PDF de haute qualité.
Si votre projet ASP.NET Core utilise déjà des pages Razor, vous pouvez les convertir directement en PDF sans reconstruire votre HTML. L'extension Razor d'IronPDF ajoute la méthode RenderRazorToPdf, qui prend votre page .cshtml (complète avec son modèle et sa mise en page) et la rend en tant que document PDF en un seul appel.
> Install-Emballer IronPdf.Extensions.Razor
Install-Emballer IronPdf.Extensions.Razor
using IronPdf;using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Mvc.RazorPages;public class ReportModel : PageModel{ public IActionResultOnGet() { var renderer = new ChromePdfRenderer(); // Render a Razor Page directly to PDF PdfDocument pdf = renderer.RenderRazorToPdf(this);Response.Headers.Add("Content-Disposition", "inline"); return new FileContentResult(pdf.BinaryData, "application/pdf"); }}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
public class ReportModel : PageModel
{
public IActionResult OnGet()
{
var renderer = new ChromePdfRenderer();
// Render a Razor Page directly to PDF
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
ImportsIronPdfImportsMicrosoft.AspNetCore.MvcImportsMicrosoft.AspNetCore.Mvc.RazorPagesPublic Class ReportModelInheritsPageModel Public Function OnGet() AsIActionResult Dim renderer As New ChromePdfRenderer() ' Render a Razor Page directly to PDF Dim pdf AsPdfDocument = renderer.RenderRazorToPdf(Me) Response.Headers.Add("Content-Disposition", "inline") Return New FileContentResult(pdf.BinaryData, "application/pdf") End FunctionEnd Class
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Public Class ReportModel
Inherits PageModel
Public Function OnGet() As IActionResult
Dim renderer As New ChromePdfRenderer()
' Render a Razor Page directly to PDF
Dim pdf As PdfDocument = renderer.RenderRazorToPdf(Me)
Response.Headers.Add("Content-Disposition", "inline")
Return New FileContentResult(pdf.BinaryData, "application/pdf")
End Function
End Class
Veuillez noter: RenderRazorToPdf nécessite un projet ASP.NET Core Web App. Cela ne fonctionnera pas dans les applications console ou les bibliothèques de classes ; le moteur de vue Razor doit être disponible dans le pipeline d'hébergement.
Les équipes utilisant le modèle MVC peuvent générer des PDF directement à partir de leurs vues et contrôleurs existants. Installez le paquet d'extension MVC Core, puis appelez RenderRazorViewToPdf avec le chemin de votre vue et votre modèle ; IronPDF gère le pipeline de rendu Razor et produit un PDF fini.
C'est particulièrement utile pour les rapports, les factures, et toute page où le HTML est déjà conçu et testé dans le navigateur. Le PDF généré préserve la sortie complète de la Vue, y compris les pages de mise en page et les vues partielles.
> Install-Emballer IronPdf.Extensions.Mvc.Core
Install-Emballer IronPdf.Extensions.Mvc.Core
Tout d'abord, enregistrez le service IRazorViewRenderer dans votre Program.cs pour que vos contrôleurs puissent l'injecter :
using IronPdf.Extensions.Mvc.Core;var builder = WebApplication.CreateBuilder(args);builder.Services.AddControllersWithViews();// Register the Razor view renderer for IronPDFbuilder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
using IronPdf.Extensions.Mvc.Core;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Register the Razor view renderer for IronPDF
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
ImportsIronPdf.Extensions.Mvc.CoreDim builder = WebApplication.CreateBuilder(args)builder.Services.AddControllersWithViews()' Register the Razor view renderer for IronPDFbuilder.Services.AddSingleton(OfIHttpContextAccessor, HttpContextAccessor)()builder.Services.AddSingleton(OfIRazorViewRenderer, RazorViewRenderer)()
Imports IronPdf.Extensions.Mvc.Core
Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddControllersWithViews()
' Register the Razor view renderer for IronPDF
builder.Services.AddSingleton(Of IHttpContextAccessor, HttpContextAccessor)()
builder.Services.AddSingleton(Of IRazorViewRenderer, RazorViewRenderer)()
Ensuite, dans votre action de contrôleur, injectez le renderer et convertissez n'importe quelle Vue en PDF :
using IronPdf;using IronPdf.Extensions.Mvc.Core;using Microsoft.AspNetCore.Mvc;public class ReportController : Controller{ private readonly IRazorViewRenderer _viewRenderService; // Inject the view renderer via constructor publicReportController(IRazorViewRenderer viewRenderService) { _viewRenderService = viewRenderService; } public IActionResultDownload() { var reportModel = new { Title = "Quarterly Report", Total = 1250.00 }; var renderer = new ChromePdfRenderer(); // Render an MVC View with model data to PDF PdfDocument pdf = renderer.RenderRazorViewToPdf( _viewRenderService, "Views/Home/Report.cshtml", reportModel);Response.Headers.Add("Content-Disposition", "inline"); return new FileContentResult(pdf.BinaryData, "application/pdf"); }}
using IronPdf;
using IronPdf.Extensions.Mvc.Core;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
// Inject the view renderer via constructor
public ReportController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
}
public IActionResult Download()
{
var reportModel = new { Title = "Quarterly Report", Total = 1250.00 };
var renderer = new ChromePdfRenderer();
// Render an MVC View with model data to PDF
PdfDocument pdf = renderer.RenderRazorViewToPdf(
_viewRenderService, "Views/Home/Report.cshtml", reportModel);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
ImportsIronPdfImportsIronPdf.Extensions.Mvc.CoreImportsMicrosoft.AspNetCore.MvcPublic Class ReportControllerInheritsController PrivateReadOnly _viewRenderService AsIRazorViewRenderer ' Inject the view renderer via constructor Public Sub New(viewRenderService AsIRazorViewRenderer) _viewRenderService = viewRenderService End Sub Public Function Download() AsIActionResult Dim reportModel = New With {.Title = "Quarterly Report", .Total = 1250.0} Dim renderer = New ChromePdfRenderer() ' Render an MVC View with model data to PDF Dim pdf AsPdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Report.cshtml", reportModel) Response.Headers.Add("Content-Disposition", "inline") Return New FileContentResult(pdf.BinaryData, "application/pdf") End FunctionEnd Class
Imports IronPdf
Imports IronPdf.Extensions.Mvc.Core
Imports Microsoft.AspNetCore.Mvc
Public Class ReportController
Inherits Controller
Private ReadOnly _viewRenderService As IRazorViewRenderer
' Inject the view renderer via constructor
Public Sub New(viewRenderService As IRazorViewRenderer)
_viewRenderService = viewRenderService
End Sub
Public Function Download() As IActionResult
Dim reportModel = New With {.Title = "Quarterly Report", .Total = 1250.0}
Dim renderer = New ChromePdfRenderer()
' Render an MVC View with model data to PDF
Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Report.cshtml", reportModel)
Response.Headers.Add("Content-Disposition", "inline")
Return New FileContentResult(pdf.BinaryData, "application/pdf")
End Function
End Class
Avez-vous besoin que votre page web dynamique soit préservée et convertie en PDF tout en conservant la disposition et le formatage exacts ? Ne cherchez pas plus loin qu'IronPDF, qui convertit rapidement une variété de frameworks de pages web dynamiques populaires en PDF.
PDF à partir de pages ASPX
Voici un extrait de code succinct sur la conversion de pages ASPX en PDF dans les Active Server Pages.
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using IronPdf;namespace AspxToPdfTutorial{ public partial class Invoice : System.Web.UI.Page { protected voidPage_Load(object sender, EventArgs e) {IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser); } }}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using IronPdf;
namespace AspxToPdfTutorial
{
public partial class Invoice : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser);
}
}
}
ImportsSystemImportsSystem.Collections.GenericImportsSystem.LinqImportsSystem.WebImportsSystem.Web.UIImportsSystem.Web.UI.WebControlsImportsIronPdfNamespaceAspxToPdfTutorialPartialPublic Class InvoiceInheritsSystem.Web.UI.PageProtected Sub Page_Load(ByVal sender AsObject, ByVal e AsEventArgs)IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser) End Sub End ClassEndNamespace
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports IronPdf
Namespace AspxToPdfTutorial
Partial Public Class Invoice
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser)
End Sub
End Class
End Namespace
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre guide complet.
XAML en PDF (MAUI)
Pour les développeurs cherchant à créer des applications multiplateformes, .NET MAUI est un choix populaire parmi les frameworks. IronPDF prend entièrement en charge la conversion de XAML en PDF en quelques étapes.
using IronPdf.Extensions.Maui;namespace mauiSample;public partial class MainPage : ContentPage{ publicMainPage() {InitializeComponent(); } private voidPrintToPdf(object sender, EventArgs e) { ChromePdfRenderer renderer = new ChromePdfRenderer(); // Apply HTML header renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() {HtmlFragment = "<h1>Header</h1>", }; // Render PDF from Maui Page PdfDocument pdf = renderer.RenderContentPageToPdf<MainPage, App>().Result; pdf.SaveAs(@"C:\Users\lyty1\Downloads\contentPageToPdf.pdf"); }}
using IronPdf.Extensions.Maui;
namespace mauiSample;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void PrintToPdf(object sender, EventArgs e)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Apply HTML header
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<h1>Header</h1>",
};
// Render PDF from Maui Page
PdfDocument pdf = renderer.RenderContentPageToPdf<MainPage, App>().Result;
pdf.SaveAs(@"C:\Users\lyty1\Downloads\contentPageToPdf.pdf");
}
}
ImportsIronPdf.Extensions.MauiNamespace mauiSamplePartialPublic Class MainPageInheritsContentPage Public Sub New()InitializeComponent() End Sub Private Sub PrintToPdf(ByVal sender AsObject, ByVal e AsEventArgs) Dim renderer As New ChromePdfRenderer() ' Apply HTML header renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {.HtmlFragment = "<h1>Header</h1>"} ' Render PDF from Maui Page Dim pdf AsPdfDocument = renderer.RenderContentPageToPdf(OfMainPage, App)().Result pdf.SaveAs("C:\Users\lyty1\Downloads\contentPageToPdf.pdf") End Sub End ClassEndNamespace
Imports IronPdf.Extensions.Maui
Namespace mauiSample
Partial Public Class MainPage
Inherits ContentPage
Public Sub New()
InitializeComponent()
End Sub
Private Sub PrintToPdf(ByVal sender As Object, ByVal e As EventArgs)
Dim renderer As New ChromePdfRenderer()
' Apply HTML header
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {.HtmlFragment = "<h1>Header</h1>"}
' Render PDF from Maui Page
Dim pdf As PdfDocument = renderer.RenderContentPageToPdf(Of MainPage, App)().Result
pdf.SaveAs("C:\Users\lyty1\Downloads\contentPageToPdf.pdf")
End Sub
End Class
End Namespace
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre guide complet.
Générer des rapports PDF
Quand il s'agit de générer des rapports PDF, les dimensions exactes et le format sont essentiels. Ainsi, IronPDF vous permet de générer des PDF facilement avec seulement quelques étapes.
using IronPdf;ChromePdfRenderer renderer = new ChromePdfRenderer();renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf");
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf");
ImportsIronPdfPrivate renderer As New ChromePdfRenderer()renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf")
Imports IronPdf
Private renderer As New ChromePdfRenderer()
renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf")
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre guide complet.
Créer des PDF dans des serveurs Blazor
IronPDF prend en charge .NET 6, et comme il inclut des types de projet comme Blazor, cet extrait de code fournit un exemple succinct de création de PDF dans un serveur Blazor.
@code { // Model to bind user input private InputHTMLModel _InputMsgModel = new InputHTMLModel(); private async TaskSubmitHTML() { // Set your IronPDF license keyIronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"; // Create a renderer to convert HTML to PDF var render = new IronPdf.ChromePdfRenderer(); // Render the HTML input into a PDF document var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML); var fileName = "iron.pdf"; // Create a stream reference for the PDF content using var streamRef = new DotNetStreamReference(stream: doc.Stream); // Invoke JavaScript function to download the PDF in the browser awaitJS.InvokeVoidAsync("SubmitHTML", fileName, streamRef); } public class InputHTMLModel { public stringHTML { get; set; } = "My new message"; }}
@code {
// Model to bind user input
private InputHTMLModel _InputMsgModel = new InputHTMLModel();
private async Task SubmitHTML()
{
// Set your IronPDF license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Create a renderer to convert HTML to PDF
var render = new IronPdf.ChromePdfRenderer();
// Render the HTML input into a PDF document
var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
var fileName = "iron.pdf";
// Create a stream reference for the PDF content
using var streamRef = new DotNetStreamReference(stream: doc.Stream);
// Invoke JavaScript function to download the PDF in the browser
await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
}
public class InputHTMLModel
{
public string HTML { get; set; } = "My new message";
}
}
codeIf True Then ' Model to bind user input privateInputHTMLModel _InputMsgModel = New InputHTMLModel()'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:' private async Task SubmitHTML()' {' ' Set your IronPDF license key' IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";'' ' Create a renderer to convert HTML to PDF' var render = New IronPdf.ChromePdfRenderer();'' ' Render the HTML input into a PDF document' var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);'' var fileName = "iron.pdf";'' ' Create a stream reference for the PDF content' var streamRef = New DotNetStreamReference(stream: doc.Stream);'' ' Invoke JavaScript function to download the PDF in the browser' await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);' }'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:' public class InputHTMLModel' {' public string HTML' {' get;' set;' } = "My new message";' }End If
code
If True Then
' Model to bind user input
private InputHTMLModel _InputMsgModel = New InputHTMLModel()
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' private async Task SubmitHTML()
' {
' ' Set your IronPDF license key
' IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
'
' ' Create a renderer to convert HTML to PDF
' var render = New IronPdf.ChromePdfRenderer();
'
' ' Render the HTML input into a PDF document
' var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
'
' var fileName = "iron.pdf";
'
' ' Create a stream reference for the PDF content
' var streamRef = New DotNetStreamReference(stream: doc.Stream);
'
' ' Invoke JavaScript function to download the PDF in the browser
' await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
' }
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' public class InputHTMLModel
' {
' public string HTML
' {
' get;
' set;
' } = "My new message";
' }
End If
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre guide complet.
Razor en PDF (Serveurs Blazor)
En plus de créer des PDFs dans Blazor Servers, IronPDF prend également en charge la génération de documents PDF à partir de composants Razor dans une page Blazor. Rendant la création de fichiers et de pages PDF beaucoup plus rationalisée.
[Parameter]publicIEnumerable<PersonInfo> persons { get; set; }publicDictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();protected override async TaskOnInitializedAsync(){ persons = new List<PersonInfo> { new PersonInfo { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" }, new PersonInfo { Name = "Bob", Title = "Mr.", Description = "Software Engineer" }, new PersonInfo { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" } };}private async voidPrintToPdf(){ ChromePdfRenderer renderer = new ChromePdfRenderer(); // Apply text footer renderer.RenderingOptions.TextFooter = new TextHeaderFooter() {LeftText = "{date} - {time}",DrawDividerLine = true,RightText = "Page {page} of {total-pages}",Font = IronSoftware.Drawing.FontTypes.Arial,FontSize = 11 };Parameters.Add("persons", persons); // Render razor component to PDF PdfDocument pdf = renderer.RenderRazorComponentToPdf<Person>(Parameters);File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData);}
[Parameter]
public IEnumerable<PersonInfo> persons { get; set; }
public Dictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();
protected override async Task OnInitializedAsync()
{
persons = new List<PersonInfo>
{
new PersonInfo { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new PersonInfo { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new PersonInfo { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
}
private async void PrintToPdf()
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Apply text footer
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} - {time}",
DrawDividerLine = true,
RightText = "Page {page} of {total-pages}",
Font = IronSoftware.Drawing.FontTypes.Arial,
FontSize = 11
};
Parameters.Add("persons", persons);
// Render razor component to PDF
PdfDocument pdf = renderer.RenderRazorComponentToPdf<Person>(Parameters);
File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData);
}
<Parameter>Public Property persons AsIEnumerable(OfPersonInfo)Public Property ParametersAsDictionary(OfString, Object) = New Dictionary(OfString, Object)()ProtectedOverridesAsync Function OnInitializedAsync() AsTask persons = New List(OfPersonInfo) From { New PersonInfoWith {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"}, New PersonInfoWith {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"}, New PersonInfoWith {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"} }End FunctionPrivateAsync Sub PrintToPdf() Dim renderer As New ChromePdfRenderer() ' Apply text footer renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With { .LeftText = "{date} - {time}", .DrawDividerLine = True, .RightText = "Page {page} of {total-pages}", .Font = IronSoftware.Drawing.FontTypes.Arial, .FontSize = 11 }Parameters.Add("persons", persons) ' Render razor component to PDF Dim pdf AsPdfDocument = renderer.RenderRazorComponentToPdf(OfPerson)(Parameters)File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData)End Sub
<Parameter>
Public Property persons As IEnumerable(Of PersonInfo)
Public Property Parameters As Dictionary(Of String, Object) = New Dictionary(Of String, Object)()
Protected Overrides Async Function OnInitializedAsync() As Task
persons = New List(Of PersonInfo) From {
New PersonInfo With {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"},
New PersonInfo With {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"},
New PersonInfo With {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"}
}
End Function
Private Async Sub PrintToPdf()
Dim renderer As New ChromePdfRenderer()
' Apply text footer
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} - {time}",
.DrawDividerLine = True,
.RightText = "Page {page} of {total-pages}",
.Font = IronSoftware.Drawing.FontTypes.Arial,
.FontSize = 11
}
Parameters.Add("persons", persons)
' Render razor component to PDF
Dim pdf As PdfDocument = renderer.RenderRazorComponentToPdf(Of Person)(Parameters)
File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData)
End Sub
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre guide complet.
CSHTML en PDF
La conversion de CSHTML (Razor) en PDF vous permet de générer des documents professionnels, prêts à imprimer, directement depuis vos applications web. Cela est utile pour les factures, rapports, contrats ou tout contenu dynamique. IronPDF prend en charge Razor Pages, MVC Core, et MVC Framework, ainsi que le rendu sans tête, facilitant l'intégration de la génération de PDF dans vos applications .NET en seulement quelques lignes de code.
CSHTML en PDF (Pages Razor)
using IronPdf.Razor.Pages;public IActionResultOnPostAsync(){ 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"); returnFile(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");}
using IronPdf.Razor.Pages;
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");
}
ImportsIronPdf.Razor.PagesPublic Function OnPostAsync() AsIActionResult persons = New List(OfPerson) From { New PersonWith {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"}, New PersonWith {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"}, New PersonWith {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"} }ViewData("personList") = persons Dim renderer As New ChromePdfRenderer() ' Render Razor Page to PDF document Dim pdf AsPdfDocument = renderer.RenderRazorToPdf(Me) Response.Headers.Add("Content-Disposition", "inline") ReturnFile(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf")End Function
Imports IronPdf.Razor.Pages
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")
End Function
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre guide complet.
CSHTML en PDF (MVC Core)
public async Task<IActionResult> Persons(){ var 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" } }; if (_httpContextAccessor.HttpContext.Request.Method == HttpMethod.Post.Method) { ChromePdfRenderer renderer = new ChromePdfRenderer(); // Render View to PDF document PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons);Response.Headers.Add("Content-Disposition", "inline"); // Output PDF document returnFile(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf"); } returnView(persons);}
public async Task<IActionResult> Persons()
{
var 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" }
};
if (_httpContextAccessor.HttpContext.Request.Method == HttpMethod.Post.Method)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render View to PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons);
Response.Headers.Add("Content-Disposition", "inline");
// Output PDF document
return File(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf");
}
return View(persons);
}
PublicAsync Function Persons() AsTask(OfIActionResult) Dim persons = New List(OfPerson) From { New PersonWith {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"}, New PersonWith {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"}, New PersonWith {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"} } If _httpContextAccessor.HttpContext.Request.Method = HttpMethod.Post.MethodThen Dim renderer As New ChromePdfRenderer() ' Render View to PDF document Dim pdf AsPdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons) Response.Headers.Add("Content-Disposition", "inline") ' Output PDF document ReturnFile(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf") End If ReturnView(persons)End Function
Public Async Function Persons() As Task(Of IActionResult)
Dim 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"}
}
If _httpContextAccessor.HttpContext.Request.Method = HttpMethod.Post.Method Then
Dim renderer As New ChromePdfRenderer()
' Render View to PDF document
Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons)
Response.Headers.Add("Content-Disposition", "inline")
' Output PDF document
Return File(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf")
End If
Return View(persons)
End Function
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre guide complet.
CSHTML en PDF (MVC Framework)
public ActionResultPersons(){ var 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" } }; if (HttpContext.Request.HttpMethod == "POST") { // Provide the path to your view file var viewPath = "~/Views/Home/Persons.cshtml"; ChromePdfRenderer renderer = new ChromePdfRenderer(); // Render Razor view to PDF document PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);Response.Headers.Add("Content-Disposition", "inline"); // View the PDF returnFile(pdf.BinaryData, "application/pdf"); } returnView(persons);}
public ActionResult Persons()
{
var 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" }
};
if (HttpContext.Request.HttpMethod == "POST")
{
// Provide the path to your view file
var viewPath = "~/Views/Home/Persons.cshtml";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render Razor view to PDF document
PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);
Response.Headers.Add("Content-Disposition", "inline");
// View the PDF
return File(pdf.BinaryData, "application/pdf");
}
return View(persons);
}
Public Function Persons() AsActionResult Dim persons = New List(OfPerson) From { New PersonWith {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"}, New PersonWith {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"}, New PersonWith {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"} } IfHttpContext.Request.HttpMethod = "POST" Then ' Provide the path to your view file Dim viewPath = "~/Views/Home/Persons.cshtml" Dim renderer As New ChromePdfRenderer() ' Render Razor view to PDF document Dim pdf AsPdfDocument = renderer.RenderView(Me.HttpContext, viewPath, persons) Response.Headers.Add("Content-Disposition", "inline") ' View the PDF ReturnFile(pdf.BinaryData, "application/pdf") End If ReturnView(persons)End Function
Public Function Persons() As ActionResult
Dim 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"}
}
If HttpContext.Request.HttpMethod = "POST" Then
' Provide the path to your view file
Dim viewPath = "~/Views/Home/Persons.cshtml"
Dim renderer As New ChromePdfRenderer()
' Render Razor view to PDF document
Dim pdf As PdfDocument = renderer.RenderView(Me.HttpContext, viewPath, persons)
Response.Headers.Add("Content-Disposition", "inline")
' View the PDF
Return File(pdf.BinaryData, "application/pdf")
End If
Return View(persons)
End Function
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre guide complet.
CSHTML en PDF (Sans tête)
app.MapGet("/PrintPdf", async () =>{ // Set your IronPDF license keyIronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"; // Enable detailed logging for troubleshootingIronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All; // Render the Razor view to an HTML string string html = awaitRazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml"); // Create a new instance of ChromePdfRenderer ChromePdfRenderer renderer = new ChromePdfRenderer(); // Render the HTML string as a PDF document PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot"); // Return the PDF file as a response returnResults.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();
// 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");
});
ImportsIronPdfImportsMicrosoft.AspNetCore.Httpapp.MapGet("/PrintPdf", Async Function() AsTask(OfIResult) ' Set your IronPDF license keyIronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01" ' Enable detailed logging for troubleshootingIronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All ' Render the Razor view to an HTML string Dim html AsString = AwaitRazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml") ' Create a new instance of ChromePdfRenderer Dim renderer As New ChromePdfRenderer() ' Render the HTML string as a PDF document Dim pdf AsPdfDocument = renderer.RenderHtmlAsPdf(html, "./wwwroot") ' Return the PDF file as a response ReturnResults.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")End Function)
Imports IronPdf
Imports Microsoft.AspNetCore.Http
app.MapGet("/PrintPdf", Async Function() As Task(Of IResult)
' 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
Dim html As String = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")
' Create a new instance of ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()
' Render the HTML string as a PDF document
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, "./wwwroot")
' Return the PDF file as a response
Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
End Function)
Pour une explication plus détaillée de cet extrait de code et pour explorer sa fonctionnalité supplémentaire, veuillez consulter notre guide complet.
2. Comment configurer les paramètres de conversion HTML en PDF
En termes de manipulation de documents PDF, IronPDF offre des personnalisations étendues via la propriété ChromePdfRenderer.RenderingOptions pour les PDFs rendus.
Paramètres
Description
Exemple
TailleDuPapier
Définir les dimensions des pages pour les PDF existants (A4, Letter, Legal, etc.)
PdfPaperSize.A4
OrientationDuPapier
Définir le mode portrait ou paysage pour les PDF existants
PdfPaperOrientation.Paysage
MargeHaut/Bas/Gauche/Droit
Définir les marges de page en millimètres (par défaut : 25mm)
25
CssMediaType
Écran ou impression CSS pour HTML vers PDF
PdfCssMediaType.Impression
PrintHtmlBackgrounds
Inclure les couleurs d'arrière-plan/images (par défaut : true)
vrai
ActiverJavaScript
Exécuter JavaScript avant de rendre le contenu HTML
vrai
AttentePour.RetardDeRendu
Temps d'attente pour un contenu HTML dynamique (ms)
500
Voir cet extrait de code pour un exemple complet de configuration pour manipuler des documents PDF :
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Apply print-specific CSS rulesrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;// Set custom margins in millimetersrenderer.RenderingOptions.MarginTop = 50;renderer.RenderingOptions.MarginBottom = 50;// Enable background colors and imagesrenderer.RenderingOptions.PrintHtmlBackgrounds = true;// Set paper size and orientationrenderer.RenderingOptions.PaperSize = PdfPaperSize.A4;renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;// Generate PDFs with all settings applied to HTML contentvar htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>";var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);pdfDocument.SaveAs("styled-output.pdf");
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
// Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Generate PDFs with all settings applied to HTML content
var htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>";
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
pdfDocument.SaveAs("styled-output.pdf");
ImportsIronPdfImportsIronPdf.RenderingDim renderer As New ChromePdfRenderer()' Apply print-specific CSS rulesrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print' Set custom margins in millimetersrenderer.RenderingOptions.MarginTop = 50renderer.RenderingOptions.MarginBottom = 50' Enable background colors and imagesrenderer.RenderingOptions.PrintHtmlBackgrounds = True' Set paper size and orientationrenderer.RenderingOptions.PaperSize = PdfPaperSize.A4renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape' Generate PDFs with all settings applied to HTML contentDim htmlContent AsString = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>"Dim pdfDocument AsPdfDocument = renderer.RenderHtmlAsPdf(htmlContent)pdfDocument.SaveAs("styled-output.pdf")
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer As New ChromePdfRenderer()
' Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
' Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
' Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = True
' Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
' Generate PDFs with all settings applied to HTML content
Dim htmlContent As String = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>"
Dim pdfDocument As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
pdfDocument.SaveAs("styled-output.pdf")
Conseils: Utilisez PdfCssMediaType pour des mises en page plus propres et optimisées pour l'impression dans votre format de fichier PDF rendu. Utilisez Écran pour correspondre exactement à ce que les utilisateurs voient dans leur navigateur.
Comment définir des en-têtes HTTP personnalisés, des cookies et des identifiants de connexion
Lors du rendu d'URL nécessitant une authentification ou des métadonnées de requête spécifiques, IronPDF vous permet d'inclure les identifiants de connexion, les cookies de session, et les en-têtes HTTP avec la requête. Cela permet de rendre des tableaux de bord intranet, des rapports restreints, ou des pages générées par une API directement en PDF sans avoir besoin de récupérer séparément le HTML.
Pour l'authentification basique ou NTLM, définissez un objet LoginCredentials sur le moteur de rendu. Pour l'accès basé sur les jetons ou les sessions, passez les cookies et les en-têtes par RenderingOptions avant d'appeler RenderUrlAsPdf.
using IronPdf;var renderer = new ChromePdfRenderer();// Network authentication (Basic, Digest, NTLM)renderer.LoginCredentials = new ChromeHttpLoginCredentials{NetworkUsername = "user@domain.com",NetworkPassword = "securePassword"};// Session cookies for authenticated pagesrenderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";// Custom HTTP headers (e.g., Bearer tokens, API keys)renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";var pdf = renderer.RenderUrlAsPdf("https://intranet.com/pany.com/quarterly-report");pdf.SaveAs("quarterly-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword"
};
// Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";
// Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://intranet.com/pany.com/quarterly-report");
pdf.SaveAs("quarterly-report.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Network authentication (Basic, Digest, NTLM)renderer.LoginCredentials = New ChromeHttpLoginCredentialsWith { .NetworkUsername = "user@domain.com", .NetworkPassword = "securePassword"}' Session cookies for authenticated pagesrenderer.RenderingOptions.CustomCookies("sessionId") = "abc123"' Custom HTTP headers (e.g., Bearer tokens, API keys)renderer.RenderingOptions.CustomHttpRequestHeaders("Authorization") = "Bearer eyJhbGciOi..."Dim pdf = renderer.RenderUrlAsPdf("https://intranet.com/pany.com/quarterly-report")pdf.SaveAs("quarterly-report.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = New ChromeHttpLoginCredentials With {
.NetworkUsername = "user@domain.com",
.NetworkPassword = "securePassword"
}
' Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies("sessionId") = "abc123"
' Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders("Authorization") = "Bearer eyJhbGciOi..."
Dim pdf = renderer.RenderUrlAsPdf("https://intranet.com/pany.com/quarterly-report")
pdf.SaveAs("quarterly-report.pdf")
Lors du rendu de HTML qui charge des ressources externes derrière un proxy d'entreprise, passez l'adresse du proxy en tant que troisième paramètre sur RenderHtmlAsPdf(). Il s'agit d'un paramètre de méthode, non d'une propriété sur ChromePdfRenderOptions, donc il est défini par appel de rendu, pas sur l'instance du moteur de rendu.
Pour les proxies authentifiés, intégrez directement les informations d'identification dans l'URL en utilisant le format http://user:pass@host:port. Encodez les caractères spéciaux des mots de passe en URL avec Uri.EscapeDataString().
using IronPdf;var renderer = new ChromePdfRenderer();// Proxy is the third parameter, not a render optionvar pdf = renderer.RenderHtmlAsPdf( "<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>", baseUrlOrPath: null, proxy: "http://proxy.co/rp.local:8080");pdf.SaveAs("proxied-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Proxy is the third parameter, not a render option
var pdf = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath: null,
proxy: "http://proxy.co/rp.local:8080"
);
pdf.SaveAs("proxied-report.pdf");
C#
Notez que RenderUrlAsPdf() n'accepte pas de paramètre proxy. Pour rendre une URL en direct derrière un proxy, récupérez d'abord le HTML avec HttpClient configuré avec un WebProxy, puis passez-le à RenderHtmlAsPdf() avec le paramètre proxy pour le chargement des ressources.
3. Comment utiliser les fonctionnalités avancées de génération et de sécurité des PDF
Débloquez des capacités de niveau entreprise pour la conversion HTML en PDF avec des modèles avancés, des opérations asynchrones, et des fonctionnalités de sécurité. Ces méthodes de manipulation de PDFs vous permettent de créer des documents PDF à grande échelle, de protéger les fichiers PDF sensibles, et d'assurer l'authenticité des documents lorsque vous convertissez HTML en format PDF professionnel.
Comment générer un modèle HTML pour la création de PDF par lot
Création de PDF par lot de base
La création de PDF par lot est essentielle pour générer efficacement plusieurs documents PDF personnalisés. Pour les scénarios basiques, la méthode String.Format en C# fonctionne le mieux pour la manipulation simple de PDF.
// Simple HTML templating with String.Formatstring htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World");// Results in HTML content: <h1>Hello World!</h1>
// Simple HTML templating with String.Format
string htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World");
// Results in HTML content: <h1>Hello World!</h1>
' Simple HTML templating with String.FormatDim htmlTemplate AsString = String.Format("<h1>Hello {0}!</h1>", "World")' Results in HTML content: <h1>Hello World!</h1>
' Simple HTML templating with String.Format
Dim htmlTemplate As String = String.Format("<h1>Hello {0}!</h1>", "World")
' Results in HTML content: <h1>Hello World!</h1>
Pour les modèles plus longs lorsque vous devez générer des documents PDF, utilisez le remplacement de repères dans votre contenu HTML :
using IronPdf;// Define reusable HTML template for PDF filesvar htmlTemplate = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>";// Customer names for batch PDF conversion processingvar names = new[] { "John", "James", "Jenny" };// Create personalized PDF documents for each customervar renderer = new ChromePdfRenderer();foreach (var name in names){ // Replace placeholder with actual data in HTML string var htmlInstance = htmlTemplate.Replace("[[NAME]]", name); // Generate personalized PDF document from HTML content var pdf = renderer.RenderHtmlAsPdf(htmlInstance); // Save with customer-specific filename as PDF files pdf.SaveAs($"{name}-invoice.pdf");}
using IronPdf;
// Define reusable HTML template for PDF files
var htmlTemplate = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>";
// Customer names for batch PDF conversion processing
var names = new[] { "John", "James", "Jenny" };
// Create personalized PDF documents for each customer
var renderer = new ChromePdfRenderer();
foreach (var name in names)
{
// Replace placeholder with actual data in HTML string
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
// Generate personalized PDF document from HTML content
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
// Save with customer-specific filename as PDF files
pdf.SaveAs($"{name}-invoice.pdf");
}
ImportsIronPdf' Define reusable HTML template for PDF filesDim htmlTemplate AsString = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>"' Customer names for batch PDF conversion processingDim names AsString() = {"John", "James", "Jenny"}' Create personalized PDF documents for each customerDim renderer As New ChromePdfRenderer()For Each name In names ' Replace placeholder with actual data in HTML string Dim htmlInstance AsString = htmlTemplate.Replace("[[NAME]]", name) ' Generate personalized PDF document from HTML content Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance) ' Save with customer-specific filename as PDF files pdf.SaveAs($"{name}-invoice.pdf")Next
Imports IronPdf
' Define reusable HTML template for PDF files
Dim htmlTemplate As String = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>"
' Customer names for batch PDF conversion processing
Dim names As String() = {"John", "James", "Jenny"}
' Create personalized PDF documents for each customer
Dim renderer As New ChromePdfRenderer()
For Each name In names
' Replace placeholder with actual data in HTML string
Dim htmlInstance As String = htmlTemplate.Replace("[[NAME]]", name)
' Generate personalized PDF document from HTML content
Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance)
' Save with customer-specific filename as PDF files
pdf.SaveAs($"{name}-invoice.pdf")
Next
Modélisation HTML en PDF avec Handlebars.NET
Pour les modèles complexes avec boucles et conditionnels lors de la conversion HTML en PDF, utilisez le modèle avancé avec Handlebars.NET pour générer des documents PDF avec du contenu HTML dynamique.
# First, install Handlebars.NET for HTML to PDF templatingPM > Install-Emballer Handlebars.NET
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-Emballer Handlebars.NET
SHELL
using HandlebarsDotNet;using IronPdf;// Define Handlebars template with placeholders for HTML contentvar source = @"<div class=""entry""> <h1>{{title}}</h1> <div class=""body""> {{body}} </div> </div>";// Compile template for reuse in PDF conversionvar template = Handlebars.Compile(source);// Create data object (can be database records) for HTML to PDF directlyvar data = new { title = "Monthly Report", body = "Sales increased by 15% this month."};// Merge template with data to create HTML contentvar htmlResult = template(data);// Convert templated HTML to PDF using the PDF convertervar renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf(htmlResult);pdf.SaveAs("monthly-report.pdf");
using HandlebarsDotNet;
using IronPdf;
// Define Handlebars template with placeholders for HTML content
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile template for reuse in PDF conversion
var template = Handlebars.Compile(source);
// Create data object (can be database records) for HTML to PDF directly
var data = new {
title = "Monthly Report",
body = "Sales increased by 15% this month."
};
// Merge template with data to create HTML content
var htmlResult = template(data);
// Convert templated HTML to PDF using the PDF converter
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlResult);
pdf.SaveAs("monthly-report.pdf");
ImportsHandlebarsDotNetImportsIronPdf' Define Handlebars template with placeholders for HTML contentDim source AsString = "<div class=""entry""> <h1>{{title}}</h1> <div class=""body""> {{body}} </div> </div>"' Compile template for reuse in PDF conversionDim template = Handlebars.Compile(source)' Create data object (can be database records) for HTML to PDF directlyDim data = New With { .title = "Monthly Report", .body = "Sales increased by 15% this month."}' Merge template with data to create HTML contentDim htmlResult = template(data)' Convert templated HTML to PDF using the PDF converterDim renderer = New ChromePdfRenderer()Dim pdf = renderer.RenderHtmlAsPdf(htmlResult)pdf.SaveAs("monthly-report.pdf")
Imports HandlebarsDotNet
Imports IronPdf
' Define Handlebars template with placeholders for HTML content
Dim source As String =
"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>"
' Compile template for reuse in PDF conversion
Dim template = Handlebars.Compile(source)
' Create data object (can be database records) for HTML to PDF directly
Dim data = New With {
.title = "Monthly Report",
.body = "Sales increased by 15% this month."
}
' Merge template with data to create HTML content
Dim htmlResult = template(data)
' Convert templated HTML to PDF using the PDF converter
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlResult)
pdf.SaveAs("monthly-report.pdf")
La gestion de la pagination dans les documents PDF générés garantit des mises en page professionnelles et lisibles lorsque vous convertissez des extraits HTML. Utilisez les feuilles de style CSS pour contrôler l'interruption des pages dans vos fichiers PDF.
Comment générer un PDF en utilisant la méthode asynchrone
IronPDF offre des performances de niveau entreprise avec un support complet asynchrone et multithread pour vos besoins de conversion de HTML en PDF lorsque vous devez générer des fichiers PDF à grande échelle.
using IronPdf;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;public class PdfGenerationService{ // Async method for non-blocking PDF generation from HTML content public async Task<byte[]> GeneratePdfAsync(string html) { var renderer = new ChromePdfRenderer(); // Async HTML to PDF conversion preserves thread pool var pdf = await renderer.RenderHtmlAsPdfAsync(html); // Return PDF files as byte array for web responses return pdf.BinaryData; } // Concurrent batch PDF generation for multiple HTML strings public async TaskGenerateMultiplePdfsAsync(List<string> htmlTemplates) { var renderer = new ChromePdfRenderer(); // Create parallel conversion tasks to generate PDF documents var tasks = htmlTemplates.Select(html => renderer.RenderHtmlAsPdfAsync(html) ); // Await all PDF conversions simultaneously var pdfs = awaitTask.WhenAll(tasks); // Save generated PDF files from HTML content for (int i = 0; i < pdfs.Length; i++) { pdfs[i].SaveAs($"document-{i}.pdf"); } }}
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
public class PdfGenerationService
{
// Async method for non-blocking PDF generation from HTML content
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
// Async HTML to PDF conversion preserves thread pool
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Return PDF files as byte array for web responses
return pdf.BinaryData;
}
// Concurrent batch PDF generation for multiple HTML strings
public async Task GenerateMultiplePdfsAsync(List<string> htmlTemplates)
{
var renderer = new ChromePdfRenderer();
// Create parallel conversion tasks to generate PDF documents
var tasks = htmlTemplates.Select(html =>
renderer.RenderHtmlAsPdfAsync(html)
);
// Await all PDF conversions simultaneously
var pdfs = await Task.WhenAll(tasks);
// Save generated PDF files from HTML content
for (int i = 0; i < pdfs.Length; i++)
{
pdfs[i].SaveAs($"document-{i}.pdf");
}
}
}
ImportsIronPdfImportsSystem.Collections.GenericImportsSystem.LinqImportsSystem.Threading.TasksPublic Class PdfGenerationService ' Async method for non-blocking PDF generation from HTML content PublicAsync Function GeneratePdfAsync(html AsString) AsTask(OfByte()) Dim renderer = New ChromePdfRenderer() ' Async HTML to PDF conversion preserves thread pool Dim pdf = Await renderer.RenderHtmlAsPdfAsync(html) ' Return PDF files as byte array for web responses Return pdf.BinaryData End Function ' Concurrent batch PDF generation for multiple HTML strings PublicAsync Function GenerateMultiplePdfsAsync(htmlTemplates AsList(OfString)) AsTask Dim renderer = New ChromePdfRenderer() ' Create parallel conversion tasks to generate PDF documents Dim tasks = htmlTemplates.Select(Function(html) renderer.RenderHtmlAsPdfAsync(html)) ' Await all PDF conversions simultaneously Dim pdfs = AwaitTask.WhenAll(tasks) ' Save generated PDF files from HTML content For i AsInteger = 0 To pdfs.Length - 1 pdfs(i).SaveAs($"document-{i}.pdf") Next End FunctionEnd Class
Imports IronPdf
Imports System.Collections.Generic
Imports System.Linq
Imports System.Threading.Tasks
Public Class PdfGenerationService
' Async method for non-blocking PDF generation from HTML content
Public Async Function GeneratePdfAsync(html As String) As Task(Of Byte())
Dim renderer = New ChromePdfRenderer()
' Async HTML to PDF conversion preserves thread pool
Dim pdf = Await renderer.RenderHtmlAsPdfAsync(html)
' Return PDF files as byte array for web responses
Return pdf.BinaryData
End Function
' Concurrent batch PDF generation for multiple HTML strings
Public Async Function GenerateMultiplePdfsAsync(htmlTemplates As List(Of String)) As Task
Dim renderer = New ChromePdfRenderer()
' Create parallel conversion tasks to generate PDF documents
Dim tasks = htmlTemplates.Select(Function(html) renderer.RenderHtmlAsPdfAsync(html))
' Await all PDF conversions simultaneously
Dim pdfs = Await Task.WhenAll(tasks)
' Save generated PDF files from HTML content
For i As Integer = 0 To pdfs.Length - 1
pdfs(i).SaveAs($"document-{i}.pdf")
Next
End Function
End Class
Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.
Conseils: Conseils d'optimisation des performances pour la conversion HTML vers PDF
Utilisez des systèmes 64 bits pour une performance optimale de génération de PDF.
Assurez des ressources serveur adéquates lorsque vous générez des documents PDF (évitez les niveaux gratuits sous-capacitaires)
Permettez un délai de rendu suffisant pour un JavaScript complexe dans le contenu HTML.
Réutilisez les instances ChromePdfRenderer lorsque c'est possible.
Profitez des correctifs de mémoire récents pour les opérations par lots/asynchrone pour réduire l'utilisation des ressources ; testez pour des tailles de fichiers réduites avec des en-têtes/pieds de page personnalisés répétés.
Comment ajouter des fonctionnalités de sécurité avancées
Comment ajouter une protection par mot de passe pour les fichiers PDF en .NET
Sécurisez les documents PDF générés sensibles avec des mots de passe et des permissions lorsque vous convertissez le contenu HTML au format PDF protégé.
using IronPdf;var renderer = new ChromePdfRenderer();// Convert HTML to PDF with securityvar pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>");// Configure security settings for PDF filespdf.SecuritySettings.UserPassword = "user123"; // Password to open PDF documentspdf.SecuritySettings.OwnerPassword = "owner456"; // Password to modify PDF files// Set granular permissions for PDF formatpdf.SecuritySettings.AllowUserCopyPasteContent = false;pdf.SecuritySettings.AllowUserAnnotations = false;pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality;// Apply strong encryption to PDF documentspdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256;pdf.SaveAs("secure-document.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Convert HTML to PDF with security
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>");
// Configure security settings for PDF files
pdf.SecuritySettings.UserPassword = "user123"; // Password to open PDF documents
pdf.SecuritySettings.OwnerPassword = "owner456"; // Password to modify PDF files
// Set granular permissions for PDF format
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality;
// Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256;
pdf.SaveAs("secure-document.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Convert HTML to PDF with securityDim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>")' Configure security settings for PDF filespdf.SecuritySettings.UserPassword = "user123" ' Password to open PDF documentspdf.SecuritySettings.OwnerPassword = "owner456" ' Password to modify PDF files' Set granular permissions for PDF formatpdf.SecuritySettings.AllowUserCopyPasteContent = Falsepdf.SecuritySettings.AllowUserAnnotations = Falsepdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality' Apply strong encryption to PDF documentspdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256pdf.SaveAs("secure-document.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Convert HTML to PDF with security
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>")
' Configure security settings for PDF files
pdf.SecuritySettings.UserPassword = "user123" ' Password to open PDF documents
pdf.SecuritySettings.OwnerPassword = "owner456" ' Password to modify PDF files
' Set granular permissions for PDF format
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality
' Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256
pdf.SaveAs("secure-document.pdf")
Comment ajouter des signatures numériques aux fichiers PDF
Ajoutez des signatures cryptographiques pour assurer l'authenticité des documents PDF lorsque vous générez des fichiers PDF à partir du contenu HTML. Une fois signée, vous pouvez vérifier la signature et lire le certificat du signataire pour les audits et les vérifications de conformité.
using IronPdf;using IronPdf.Signing;var renderer = new ChromePdfRenderer();// Generate PDF from HTML pagevar pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>");// Create digital signature with certificate for PDF filesvar signature = new PdfSignature("certificate.pfx", "password"){SigningContact = "legal@company.com",SigningLocation = "New York, NY",SigningReason = "Contract Approval"};// Apply signature to PDF documentspdf.Sign(signature);pdf.SaveAs("signed-contract.pdf");
using IronPdf;
using IronPdf.Signing;
var renderer = new ChromePdfRenderer();
// Generate PDF from HTML page
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>");
// Create digital signature with certificate for PDF files
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "legal@company.com",
SigningLocation = "New York, NY",
SigningReason = "Contract Approval"
};
// Apply signature to PDF documents
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
C#
Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.
Comment convertir des formulaires HTML en PDF remplissables
Pour convertir les éléments de formulaire HTML standard en champs de formulaire PDF interactifs et remplissables, activez l'option de rendu CreatePdfFormsFromHtml. Cela préserve les entrées de texte, les cases à cocher, les boutons radio et les menus déroulants comme champs modifiables dans le document PDF généré.
using IronPdf;var renderer = new ChromePdfRenderer();// Enable HTML form to PDF form conversionrenderer.RenderingOptions.CreatePdfFormsFromHtml = true;string htmlForm = @" <h2>Employee Onboarding Form</h2> <form> <label>Full Name:</label> <input type='text' name='fullName' value='' /><br/> <label>Department:</label> <select name='department'> <option value='engineering'>Engineering</option> <option value='marketing'>Marketing</option> <option value='sales'>Sales</option> </select><br/> <label>Agree to Terms:</label> <input type='checkbox' name='agreeTerms' /> </form>";var pdf = renderer.RenderHtmlAsPdf(htmlForm);pdf.SaveAs("onboarding-form.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
string htmlForm = @"
<h2>Employee Onboarding Form</h2>
<form>
<label>Full Name:</label>
<input type='text' name='fullName' value='' /><br/>
<label>Department:</label>
<select name='department'>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
<option value='sales'>Sales</option>
</select><br/>
<label>Agree to Terms:</label>
<input type='checkbox' name='agreeTerms' />
</form>";
var pdf = renderer.RenderHtmlAsPdf(htmlForm);
pdf.SaveAs("onboarding-form.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Enable HTML form to PDF form conversionrenderer.RenderingOptions.CreatePdfFormsFromHtml = TrueDim htmlForm AsString = " <h2>Employee Onboarding Form</h2> <form> <label>Full Name:</label> <input type='text' name='fullName' value='' /><br/> <label>Department:</label> <select name='department'> <option value='engineering'>Engineering</option> <option value='marketing'>Marketing</option> <option value='sales'>Sales</option> </select><br/> <label>Agree to Terms:</label> <input type='checkbox' name='agreeTerms' /> </form>"Dim pdf = renderer.RenderHtmlAsPdf(htmlForm)pdf.SaveAs("onboarding-form.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
Dim htmlForm As String = "
<h2>Employee Onboarding Form</h2>
<form>
<label>Full Name:</label>
<input type='text' name='fullName' value='' /><br/>
<label>Department:</label>
<select name='department'>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
<option value='sales'>Sales</option>
</select><br/>
<label>Agree to Terms:</label>
<input type='checkbox' name='agreeTerms' />
</form>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlForm)
pdf.SaveAs("onboarding-form.pdf")
Avertissement: Chaque champ de formulaire dans votre HTML doit avoir un attribut name unique. Les noms en double entraîneront les champs à partager la même valeur dans le PDF généré, conduisant à un comportement inattendu lorsque les utilisateurs remplissent le formulaire.
Comment convertir des éléments HTML spécifiques en PDF
Pour rendre une section spécifique d'une page plutôt que le document complet, isolez l'élément cible avant de le rendre. L'approche la plus directe utilise l'option de rendu JavaScript pour remplacer le corps du document par le contenu de l'élément cible, combiné avec WaitFor.HtmlQuerySelector() pour garantir que l'élément existe avant l'extraction. L'extrait ci-dessous préserve document.head afin que les feuilles de style et les polices soient transmises ; sans cette étape, les règles CSS s'appuyant sur des sélecteurs d'ancêtres seraient perdues dans le PDF extrait.
Pour les scénarios côté serveur où vous avez accès au HTML brut, extrayez le fragment cible avec un analyseur comme AngleSharp et passez-le à RenderHtmlAsPdf(), aucune exécution JavaScript nécessaire.
using IronPdf;// Full page HTML containing the target elementstring fullPageHtml = @"<html><body> <header><h1>Acme Corp Invoice</h1></header> <div id='invoice-summary'> <h2>Invoice #12345</h2> <p>Total: $1,250.00</p> </div> <footer>Confidential</footer></body></html>";var renderer = new ChromePdfRenderer();renderer.RenderingOptions.EnableJavaScript = true;// Replace the body with only the target elementrenderer.RenderingOptions.Javascript = @" var el = document.querySelector('#invoice-summary'); if (el) { var head = document.head.innerHTML; document.body.innerHTML = el.outerHTML; document.head.innerHTML = head; }";// Wait for the target element before JS executesrenderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000);var pdf = renderer.RenderHtmlAsPdf(fullPageHtml);pdf.SaveAs("invoice-summary.pdf");
using IronPdf;
// Full page HTML containing the target element
string fullPageHtml = @"
<html>
<body>
<header><h1>Acme Corp Invoice</h1></header>
<div id='invoice-summary'>
<h2>Invoice #12345</h2>
<p>Total: $1,250.00</p>
</div>
<footer>Confidential</footer>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
// Replace the body with only the target element
renderer.RenderingOptions.Javascript = @"
var el = document.querySelector('#invoice-summary');
if (el) {
var head = document.head.innerHTML;
document.body.innerHTML = el.outerHTML;
document.head.innerHTML = head;
}
";
// Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000);
var pdf = renderer.RenderHtmlAsPdf(fullPageHtml);
pdf.SaveAs("invoice-summary.pdf");
ImportsIronPdf' Full page HTML containing the target elementDim fullPageHtml AsString = "<html><body> <header><h1>Acme Corp Invoice</h1></header> <div id='invoice-summary'> <h2>Invoice #12345</h2> <p>Total: $1,250.00</p> </div> <footer>Confidential</footer></body></html>"Dim renderer As New ChromePdfRenderer()renderer.RenderingOptions.EnableJavaScript = True' Replace the body with only the target elementrenderer.RenderingOptions.Javascript = " var el = document.querySelector('#invoice-summary'); if (el) { var head = document.head.innerHTML; document.body.innerHTML = el.outerHTML; document.head.innerHTML = head; }"' Wait for the target element before JS executesrenderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000)Dim pdf = renderer.RenderHtmlAsPdf(fullPageHtml)pdf.SaveAs("invoice-summary.pdf")
Imports IronPdf
' Full page HTML containing the target element
Dim fullPageHtml As String = "
<html>
<body>
<header><h1>Acme Corp Invoice</h1></header>
<div id='invoice-summary'>
<h2>Invoice #12345</h2>
<p>Total: $1,250.00</p>
</div>
<footer>Confidential</footer>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
' Replace the body with only the target element
renderer.RenderingOptions.Javascript = "
var el = document.querySelector('#invoice-summary');
if (el) {
var head = document.head.innerHTML;
document.body.innerHTML = el.outerHTML;
document.head.innerHTML = head;
}
"
' Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000)
Dim pdf = renderer.RenderHtmlAsPdf(fullPageHtml)
pdf.SaveAs("invoice-summary.pdf")
Il existe trois mécanismes pour rendre les pages qui se trouvent derrière une authentification : les identifiants de connexion réseau, les cookies personnalisés et les en-têtes de requête HTTP. Ceux-ci couvrent les scénarios d'authentification les plus courants lors de la conversion de contenu web protégé en PDF.
Identifiants de connexion
Utilisez ChromeHttpLoginCredentials pour l'authentification basique, digest ou NTLM lors de la conversion d'URLs protégées en PDF.
using IronPdf;var renderer = new ChromePdfRenderer();// Configure network authenticationrenderer.LoginCredentials = new ChromeHttpLoginCredentials{NetworkUsername = "user@domain.com",NetworkPassword = "securePassword",AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic};var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports");pdf.SaveAs("authenticated-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure network authentication
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword",
AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
};
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports");
pdf.SaveAs("authenticated-report.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Configure network authenticationrenderer.LoginCredentials = New ChromeHttpLoginCredentialsWith { .NetworkUsername = "user@domain.com", .NetworkPassword = "securePassword", .AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic}Dim pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports")pdf.SaveAs("authenticated-report.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Configure network authentication
renderer.LoginCredentials = New ChromeHttpLoginCredentials With {
.NetworkUsername = "user@domain.com",
.NetworkPassword = "securePassword",
.AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
}
Dim pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports")
pdf.SaveAs("authenticated-report.pdf")
Cookies et en-têtes HTTP
Pour l'authentification basée sur les tokens ou les sessions, attachez directement les cookies et les en-têtes HTTP personnalisés à la requête de rendu.
using IronPdf;var renderer = new ChromePdfRenderer();// Add session cookiesrenderer.RenderingOptions.CustomCookies["sessionId"] = "abc123token";renderer.RenderingOptions.CustomCookies["authToken"] = "bearer-xyz";// Add custom HTTP headers (e.g., API key or Bearer token)renderer.RenderingOptions.HttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";var pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard");pdf.SaveAs("dashboard.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Add session cookies
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123token";
renderer.RenderingOptions.CustomCookies["authToken"] = "bearer-xyz";
// Add custom HTTP headers (e.g., API key or Bearer token)
renderer.RenderingOptions.HttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard");
pdf.SaveAs("dashboard.pdf");
C#
Pour les connexions basées sur des formulaires HTML (POST nom d'utilisateur/mot de passe), envisagez d'utiliser HttpClient pour authentifier d'abord, puis passez les cookies résultants au dictionnaire CustomCookies pour rendre la page protégée.
Comment générer des PDF à partir de plusieurs extraits HTML ?
Pour générer des PDF en combinant des extraits HTML, vous pouvez les fusionner . Cela permet de créer des rapports à plusieurs sections ou de combiner du contenu provenant de différentes sources :
var renderer = new ChromePdfRenderer();PdfDocument part1 = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>");PdfDocument part2 = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>");var merged = PdfDocument.Merge(part1, part2);merged.SaveAs("Merged.pdf");// Alternative approach: copy specific pagesvar combinedDoc = new PdfDocument();combinedDoc.CopyPage(part1, 0); // Copy first pagecombinedDoc.CopyPage(part2, 0); // Copy first pagecombinedDoc.SaveAs("Combined.pdf");
var renderer = new ChromePdfRenderer();
PdfDocument part1 = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>");
PdfDocument part2 = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>");
var merged = PdfDocument.Merge(part1, part2);
merged.SaveAs("Merged.pdf");
// Alternative approach: copy specific pages
var combinedDoc = new PdfDocument();
combinedDoc.CopyPage(part1, 0); // Copy first page
combinedDoc.CopyPage(part2, 0); // Copy first page
combinedDoc.SaveAs("Combined.pdf");
Dim renderer = New ChromePdfRenderer()Dim part1 AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>")Dim part2 AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>")Dim merged = PdfDocument.Merge(part1, part2)merged.SaveAs("Merged.pdf")' Alternative approach: copy specific pagesDim combinedDoc = New PdfDocument()combinedDoc.CopyPage(part1, 0) ' Copy first pagecombinedDoc.CopyPage(part2, 0) ' Copy first pagecombinedDoc.SaveAs("Combined.pdf")
Dim renderer = New ChromePdfRenderer()
Dim part1 As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>")
Dim part2 As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>")
Dim merged = PdfDocument.Merge(part1, part2)
merged.SaveAs("Merged.pdf")
' Alternative approach: copy specific pages
Dim combinedDoc = New PdfDocument()
combinedDoc.CopyPage(part1, 0) ' Copy first page
combinedDoc.CopyPage(part2, 0) ' Copy first page
combinedDoc.SaveAs("Combined.pdf")
Cela s'avère utile lors de la création de rapports à plusieurs sections à partir de différents fragments HTML. Vous pouvez également ajouter des signets pour améliorer la navigation.
Comment convertir du HTML en PDF via les API Web ?
Dans l'API Web ASP.NET , générez et renvoyez des fichiers PDF sans les enregistrer sur disque à l'aide de MemoryStream . Ce modèle est idéal pour les applications Blazor et les services RESTful :
[HttpGet("download")]public IActionResultGetPdf(){ var renderer = new ChromePdfRenderer(); string html = "<h1>Web Report</h1><p>Generated dynamically.</p>"; var pdf = renderer.RenderHtmlAsPdf(html); var bytes = pdf.BinaryData; // Optional: Add metadata pdf.MetaData.Author = "API Service"; pdf.MetaData.CreationDate = DateTime.Now; returnFile(bytes, "application/pdf", "report.pdf");}
[HttpGet("download")]
public IActionResult GetPdf()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Web Report</h1><p>Generated dynamically.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
var bytes = pdf.BinaryData;
// Optional: Add metadata
pdf.MetaData.Author = "API Service";
pdf.MetaData.CreationDate = DateTime.Now;
return File(bytes, "application/pdf", "report.pdf");
}
<HttpGet("download")>Public Function GetPdf() AsIActionResult Dim renderer = New ChromePdfRenderer() Dim html AsString = "<h1>Web Report</h1><p>Generated dynamically.</p>" Dim pdf = renderer.RenderHtmlAsPdf(html) Dim bytes = pdf.BinaryData ' Optional: Add metadata pdf.MetaData.Author = "API Service" pdf.MetaData.CreationDate = DateTime.Now ReturnFile(bytes, "application/pdf", "report.pdf")End Function
<HttpGet("download")>
Public Function GetPdf() As IActionResult
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<h1>Web Report</h1><p>Generated dynamically.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim bytes = pdf.BinaryData
' Optional: Add metadata
pdf.MetaData.Author = "API Service"
pdf.MetaData.CreationDate = DateTime.Now
Return File(bytes, "application/pdf", "report.pdf")
End Function
Ce modèle fonctionne parfaitement pour la génération de PDF côté serveur dans les applications web .NET 10. Vous pouvez intégrer des vues CSHTML pour les applications MVC.
Comment ajouter des en-têtes, des filigranes et des mesures de sécurité ?
Ajout d'en-têtes et de pieds de page Professional
Les en-têtes et pieds de page affichant les numéros de page, les dates ou la marque rendent les documents de plusieurs pages beaucoup plus lisibles et Professional. IronPDF les traite comme des fragments HTML, vous pouvez donc utiliser un style CSS complet, y compris les images et les couleurs de la marque :
using IronPdf;var renderer = new ChromePdfRenderer();renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter{MaxHeight = 50,HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",BaseUrl = new Uri(@"file:///C:/assets/")};renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter{MaxHeight = 30,HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",DrawDividerLine = true};renderer.RenderingOptions.MarginTop = 60;renderer.RenderingOptions.MarginBottom = 40;var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>");pdf.SaveAs("report-with-headers.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
MaxHeight = 50,
HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",
BaseUrl = new Uri(@"file:///C:/assets/")
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
MaxHeight = 30,
HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",
DrawDividerLine = true
};
renderer.RenderingOptions.MarginTop = 60;
renderer.RenderingOptions.MarginBottom = 40;
var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>");
pdf.SaveAs("report-with-headers.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooterWith { .MaxHeight = 50, .HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>", .BaseUrl = New Uri("file:///C:/assets/")}renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooterWith { .MaxHeight = 30, .HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>", .DrawDividerLine = True}renderer.RenderingOptions.MarginTop = 60renderer.RenderingOptions.MarginBottom = 40Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>")pdf.SaveAs("report-with-headers.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.MaxHeight = 50,
.HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",
.BaseUrl = New Uri("file:///C:/assets/")
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.MaxHeight = 30,
.HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",
.DrawDividerLine = True
}
renderer.RenderingOptions.MarginTop = 60
renderer.RenderingOptions.MarginBottom = 40
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>")
pdf.SaveAs("report-with-headers.pdf")
Les espaces réservés comme {page} et {total-pages} sont remplacés automatiquement lors du rendu. Consultez le tutoriel sur les en-têtes et pieds de page pour l'injection de dates dynamiques, le placement de logos et les styles de pages alternés.
Application de filigranes, de chiffrement et de signatures numériques
Les filigranes protègent les documents provisoires et les rapports confidentiels. La protection par mot de passe et les paramètres d'autorisation limitent les personnes autorisées à imprimer, copier ou modifier un PDF. Les signatures numériques ajoutent un niveau d'authentification vérifiable aux contrats et aux documents réglementés. Vous pouvez combiner les trois dans un seul flux de travail :
using IronPdf;using System.Security.Cryptography.X509Certificates;var renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>");// Watermarkpdf.ApplyWatermark( "<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>", rotation: 45, opacity: 30);// Encryption and permissionspdf.SecuritySettings.UserPassword = "user123";pdf.SecuritySettings.OwnerPassword = "owner456";pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;pdf.SecuritySettings.AllowUserCopyPasteContent = false;// Digital signaturevar cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");var signature = new PdfSignature(cert){SigningContact = "Jane Smith",SigningLocation = "New York, NY",SigningReason = "Contract Approval"};pdf.Sign(signature);pdf.SaveAsRevision("signed-contract.pdf");
using IronPdf;
using System.Security.Cryptography.X509Certificates;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>");
// Watermark
pdf.ApplyWatermark(
"<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>",
rotation: 45,
opacity: 30
);
// Encryption and permissions
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
// Digital signature
var cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");
var signature = new PdfSignature(cert)
{
SigningContact = "Jane Smith",
SigningLocation = "New York, NY",
SigningReason = "Contract Approval"
};
pdf.Sign(signature);
pdf.SaveAsRevision("signed-contract.pdf");
ImportsIronPdfImportsSystem.Security.Cryptography.X509CertificatesDim renderer As New ChromePdfRenderer()Dim pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>")' Watermarkpdf.ApplyWatermark( "<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>", rotation:=45, opacity:=30)' Encryption and permissionspdf.SecuritySettings.UserPassword = "user123"pdf.SecuritySettings.OwnerPassword = "owner456"pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrintpdf.SecuritySettings.AllowUserCopyPasteContent = False' Digital signatureDim cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password")Dim signature As New PdfSignature(cert) With { .SigningContact = "Jane Smith", .SigningLocation = "New York, NY", .SigningReason = "Contract Approval"}pdf.Sign(signature)pdf.SaveAsRevision("signed-contract.pdf")
Imports IronPdf
Imports System.Security.Cryptography.X509Certificates
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>")
' Watermark
pdf.ApplyWatermark(
"<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>",
rotation:=45,
opacity:=30
)
' Encryption and permissions
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint
pdf.SecuritySettings.AllowUserCopyPasteContent = False
' Digital signature
Dim cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password")
Dim signature As New PdfSignature(cert) With {
.SigningContact = "Jane Smith",
.SigningLocation = "New York, NY",
.SigningReason = "Contract Approval"
}
pdf.Sign(signature)
pdf.SaveAsRevision("signed-contract.pdf")
Ma bibliothèque préférée de ce genre est IronPDF. Elle permet une manipulation rapide et efficace des fichiers PDF. Elle dispose également de nombreuses fonctionnalités précieuses, comme l'exportation au format PDF/A et la signature numérique des documents PDF.
IronOCR signifie que nous pouvons économiser 40 000 $ par an grâce au traitement manuel, tout en améliorant la productivité et en libérant des ressources pour des tâches à fort impact. Je le recommande vivement.
Iron Suite joue un rôle crucial dans nos opérations. Ce sont des outils qui augmentent l'efficacité de l'entreprise, y compris la création de plans d'étage et l'amélioration de la gestion des stocks.
4. Comment déployer du HTML en PDF sur des plateformes cloud
Le déploiement de la conversion HTML en PDF dans des environnements cloud nécessite une configuration spécifique pour le rendu sans tête, les chemins de fichiers temporaires et l'allocation des ressources. Cette section couvre les plateformes cloud les plus courantes et les déploiements conteneurisés avec IronPDF.
Plate-forme
Ressources min.
Emballer
AutoConfig
Chemin Temp
Point clé
Service d'application Azure
Tier B1 (Basique)
IronPdf.Linux
true
/tmp
Les niveaux Gratuit/Partagé échouent (pas de GPU, faible mémoire)
Fonctions Azure (Windows)
Tiers B1
IronPdf
true
/tmp
Décochez "Exécuter à partir du fichier package"
AWS Lambda
512 MB / délai de 60s
IronPdf.Linux
true
/tmp (requis)
Le système de fichiers par défaut est en lecture seule
Docker (Ubuntu/Debian)
Dépendant de l'image
IronPdf.Linux
false
Par défaut de l'image
Définir sur false (Dockerfile gère les dépendances)
Comment déployer sur Azure
Lors du déploiement sur Azure Functions ou App Service, désactivez l'accélération GPU et assurez-vous que votre niveau d'hébergement fournit suffisamment de mémoire pour le rendu basé sur Chrome. Ajoutez ces paramètres au démarrage de l'application, avant tout appel de rendu.
Les sandboxes Azure fonctionnent sans tête sans accès GPU, et les tiers Free/Shared (F1, D1) manquent des ressources requises par Chrome. Ciblez au minimum un niveau B1 (Basique) ou supérieur.
using IronPdf;// Azure sandboxes block GPU access, always disableIronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;// Required on non-GUI Linux systemsIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;var renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>");pdf.SaveAs("azure-report.pdf");
using IronPdf;
// Azure sandboxes block GPU access, always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>");
pdf.SaveAs("azure-report.pdf");
ImportsIronPdf' Azure sandboxes block GPU access, always disableIronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled' Required on non-GUI Linux systemsIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = TrueDim renderer As New ChromePdfRenderer()Dim pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>")pdf.SaveAs("azure-report.pdf")
Imports IronPdf
' Azure sandboxes block GPU access, always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
' Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>")
pdf.SaveAs("azure-report.pdf")
Prudence: Les niveaux Free et Shared d'Azure App Service (F1, D1) n'ont pas assez de ressources pour le rendu PDF basé sur Chrome. Utilisez au minimum un niveau B1 (Basique) ou supérieur pour éviter les erreurs de manque de mémoire et les délais d'expiration des processus.
AWS Lambda nécessite un déploiement basé sur Docker pour le rendu sur Chrome. Le système de fichiers Lambda par défaut est en lecture seule, donc tous les chemins temporaires et de déploiement doivent pointer vers /tmp.
Configurez ces paramètres en haut de votre handler de fonction, avant tout appel de rendu.
using Amazon.Lambda.Core;using IronPdf;public class PdfFunction{ public stringFunctionHandler(string input, ILambdaContext context) { // Lambda's only writable directory var tmpPath = "/tmp/";IronPdf.Installation.TempFolderPath = tmpPath;IronPdf.Installation.CustomDeploymentDirectory = tmpPath;IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled; // Let IronPDF install Chrome dependencies on first cold startIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true; context.Logger.LogLine("Rendering PDF..."); var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(input); // Save to /tmp before uploading to S3 or returning var outputPath = $"{tmpPath}output.pdf"; pdf.SaveAs(outputPath); return outputPath; }}
using Amazon.Lambda.Core;
using IronPdf;
public class PdfFunction
{
public string FunctionHandler(string input, ILambdaContext context)
{
// Lambda's only writable directory
var tmpPath = "/tmp/";
IronPdf.Installation.TempFolderPath = tmpPath;
IronPdf.Installation.CustomDeploymentDirectory = tmpPath;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
context.Logger.LogLine("Rendering PDF...");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(input);
// Save to /tmp before uploading to S3 or returning
var outputPath = $"{tmpPath}output.pdf";
pdf.SaveAs(outputPath);
return outputPath;
}
}
ImportsAmazon.Lambda.CoreImportsIronPdfPublic Class PdfFunction Public Function FunctionHandler(input AsString, context AsILambdaContext) AsString ' Lambda's only writable directory Dim tmpPath AsString = "/tmp/"IronPdf.Installation.TempFolderPath = tmpPathIronPdf.Installation.CustomDeploymentDirectory = tmpPathIronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled ' Let IronPDF install Chrome dependencies on first cold startIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True context.Logger.LogLine("Rendering PDF...") Dim renderer As New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf(input) ' Save to /tmp before uploading to S3 or returning Dim outputPath AsString = $"{tmpPath}output.pdf" pdf.SaveAs(outputPath) Return outputPath End FunctionEnd Class
Imports Amazon.Lambda.Core
Imports IronPdf
Public Class PdfFunction
Public Function FunctionHandler(input As String, context As ILambdaContext) As String
' Lambda's only writable directory
Dim tmpPath As String = "/tmp/"
IronPdf.Installation.TempFolderPath = tmpPath
IronPdf.Installation.CustomDeploymentDirectory = tmpPath
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
' Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
context.Logger.LogLine("Rendering PDF...")
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(input)
' Save to /tmp before uploading to S3 or returning
Dim outputPath As String = $"{tmpPath}output.pdf"
pdf.SaveAs(outputPath)
Return outputPath
End Function
End Class
Veuillez noter: Configurez votre fonction Lambda avec au moins 512 MB de mémoire et un temps limite de 60 secondes minimum. Le rendu basé sur Chrome est gourmand en mémoire, et les démarrages à froid nécessitent un temps d'initialisation supplémentaire pour le moteur de navigateur intégré.
Pour les déploiements Docker, utilisez le paquet NuGet IronPdf.Linux pour réduire la taille de l'image et éviter les téléchargements d'actifs au runtime. Ce package inclut des binaires natifs Linux pré-empaquetés optimisés pour les environnements conteneurisés.
Définissez LinuxAndDockerDependenciesAutoConfig = false lorsque votre Dockerfile installe déjà les dépendances des bibliothèques partagées de Chrome via apt-get. L'auto-installation à l'exécution est redondante dans ce cas et peut entraîner des erreurs de permission ou des démarrages à froid plus longs.
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /app
COPY . .
RUN dotnet publish -c Release -o /out
FROM mcr.microsoft.com/dotnet/aspnet:10.0
# Install Chrome dependencies for PDF rendering
RUN apt-get update && apt-get install -y \
libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 \
libcups2 libdrm2 libxkbcommon0 libxcomposite1 \
libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 \
libcairo2 libasound2 libxshmfence1 && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /out .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Text
using IronPdf;// Dependencies handled by Dockerfile apt-get, disable runtime installIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;// No GPU in containersIronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;var renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>");pdf.SaveAs("output.pdf");
using IronPdf;
// Dependencies handled by Dockerfile apt-get, disable runtime install
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;
// No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>");
pdf.SaveAs("output.pdf");
ImportsIronPdf' Dependencies handled by Dockerfile apt-get, disable runtime installIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = False' No GPU in containersIronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.DisabledDim renderer As New ChromePdfRenderer()Dim pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>")pdf.SaveAs("output.pdf")
Imports IronPdf
' Dependencies handled by Dockerfile apt-get, disable runtime install
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = False
' No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>")
pdf.SaveAs("output.pdf")
Verified on IronPDF v2026.6.1 · .NET 10 · June 2026.
Comment optimiser et mettre à l'échelle les performances HTML vers PDF dans .NET Core ?
Le moteur Chromium d'IronPDF rend déjà la plupart des pages en moins de 1 s sur du matériel moderne, mais le débit peut être multiplié par le traitement par lots, l'activation du multithreading, et la réduction des charges de Headless Chrome. Les conseils ci-dessous s'appliquent également à toutes les versions .NET.
1. Rendus par lots sur un pool de threads en arrière-plan
IronPdf.License.LicenseKey = "YourLicenseKey";ChromePdfRenderer renderer = new ChromePdfRenderer();// Set rendering optionsrenderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;renderer.RenderHtmlFileAsPdf(@"testFile.html").SaveAs("GeneratedFile.pdf");
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;
renderer.RenderHtmlFileAsPdf(@"testFile.html").SaveAs("GeneratedFile.pdf");
ImportsIronPdfLicense.LicenseKey = "YourLicenseKey"Dim renderer As New ChromePdfRenderer()' Set rendering optionsrenderer.RenderingOptions.PaperSize = Rendering.PdfPaperSize.A4renderer.RenderingOptions.PaperOrientation = Rendering.PdfPaperOrientation.Portraitrenderer.RenderHtmlFileAsPdf("testFile.html").SaveAs("GeneratedFile.pdf")
Imports IronPdf
License.LicenseKey = "YourLicenseKey"
Dim renderer As New ChromePdfRenderer()
' Set rendering options
renderer.RenderingOptions.PaperSize = Rendering.PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = Rendering.PdfPaperOrientation.Portrait
renderer.RenderHtmlFileAsPdf("testFile.html").SaveAs("GeneratedFile.pdf")
ChromePdfRenderer is thread-safe; une seule instance peut servir des dizaines de tâches concurrentes sans blocage.
Parallel.ForEach sature chaque cœur CPU ; Les serveurs classiques enregistrent des gains de débit de 4 à 6 fois supérieurs à ceux d'une boucle à thread unique.
2. Réduire le coût de démarrage de Headless Chrome
IronPDF distribue sa propre version Chromium, mais chaque rendu entraîne un petit surcoût initial. La mise en commun des ressources est utile, et les conteneurs Linux doivent inclure deux bibliothèques natives :
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim pdf As PdfDocument = PdfDocument.FromFile("1.pdf")
Dim pdf2 As PdfDocument = PdfDocument.FromFile("2.pdf")
pdf.AppendPdf(pdf2)
pdf.SaveAs("appendedFile.pdf")
Les traces Live DevTools exposent les polices manquantes, les images en 404 et les événements de timing sans recompilation du code.
5. Réutilisez les PDF modèles au lieu de les re-rendre
Pour les séries de factures, créez un modèle PDF avec des espaces réservés comme [[name]] et effectuez un remplacement de texte au lieu de reconstruire du HTML complexe. C'est 10× plus rapide et léger en mémoire.
5. Comparer IronPDF avec d'autres bibliothèques PDF .NET
IronPDF est la solution de choix pour de nombreuses équipes en matière de génération PDF en C# grâce à son moteur de rendu basé sur Chromium robuste, ses API intuitives et ses améliorations produit fréquentes. Comparons IronPDF avec d'autres convertisseurs PDF pour trouver la meilleure adaptation à vos besoins de génération PDF.
Alternatives Gratuites et Open Source
Certains outils qui pourraient être pris en compte :
PuppeteerSharp : un port .NET sous licence MIT de Puppeteer qui pilote Chrome en mode headless.
Playwright for .NET : la bibliothèque d'automatisation Apache-2.0 de Microsoft, également basée sur Chromium.
wkhtmltopdf : un binaire HTML-to-PDF autonome de longue date.
Routes de navigateur natif : imprimer en PDF directement depuis un navigateur en mode headless ou un driver d'impression OS.
Une distinction à faire d'abord : PuppeteerSharp et Playwright sont des frameworks d'automatisation de navigateur plutôt que des bibliothèques PDF. Ils exposent un appel d'impression vers PDF par-dessus un Chromium réel, donc la fidélité de rendu est excellente, mais les spécificités PDF comme les en-têtes et pieds de page, le cryptage, les signatures, et PDF/A, ainsi que le cycle de vie du navigateur, sont laissés à vous : expédition et mise à jour du binaire Chromium, gestion de la concurrence et récupération après crash, et construction de la structure du document à la main. Playwright ajoute une contrainte importante à connaître dès le départ : son PdfAsync fonctionne uniquement dans Chromium sans tête (pas Firefox ou WebKit), donc les déploiements doivent garantir un Chrome sans tête, ce qui est important dans les conteneurs et sans serveur.
wkhtmltopdf est à nouveau différent. Le projet a été archivé en 2024, et sa dernière version (0.12.6, 2020) exécute un moteur Qt WebKit ~2012 ne recevant plus de correctifs de sécurité, y compris un avis SSRF critique non corrigé (CVE-2022-35583) ; il reste utilisable pour des documents statiques simples sur des entrées de confiance, mais moins pour une sortie face au public. Les routes de navigateur natif n'ont besoin d'aucune bibliothèque du tout, au prix d'une API PDF native en .NET ou d'un véritable contrôle sur l'automatisation côté serveur.
Pour les prototypes, outils internes, et travaux à budget zéro, ce sont des choix légitimes. La comparaison ci-dessous couvre les bibliothèques commerciales, fonction par fonction.
Matrice de décision rapide : IronPDF par rapport à d'autres convertisseurs PDF .NET
Solution
Quand utiliser
Meilleur pour
IronPDF
Convertir des sites web modernes/HTML en PDF avec une fidélité visuelle exacte.
Applications d'entreprise nécessitant un moteur de rendu HTML fiable, un contenu dynamique et une assistance professionnelle.
wkhtmltopdf
Conversion HTML simple dans les applications non critiques où un rendu obsolète est acceptable.
Génération de documents de base avec les anciens HTML/CSS.
Syncfusion
Lorsque déjà investi dans l'écosystème Syncfusion ou éligible à la licence communautaire gratuite.
Organisations utilisant plusieurs composants Syncfusion.
Aspose.PDF
Manipulation complexe de fichiers PDF lorsque la qualité du rendu HTML est moins critique.
Fonctionnalités d'édition PDF étendues au-delà de la conversion HTML.
Communauté style="color:#16a34a">libreMIT < 1 million de dollars
Essai gratuit
30 jours · Fonctionnalités complètes , sans limites
N/A (Gratuit)
30 jours
Oui (avec filigrane)
Community <$1M Rev
Oui
Communauté (5 pages)
Gratuit (10 pages)
N/A (Gratuit)
N/A (MIT Free <$1M)
Transparence des prix
Publié et clair Meilleur
Open Source
AGPL complexe
Plusieurs niveaux
Contactez-nous pour un devis
Prix non publié
Publié
Publié
MIT ; Aucune restriction
MIT ; Basé sur la confiance
Comparaison de conversion HTML en PDF dans la vie réelle : rendu de la page d'accueil de Reddit
Pour évaluer la qualité du PDF de sortie, nous avons testé ces bibliothèques avec la page d'accueil de Reddit contenant du contenu web dynamique, des CSS modernes, et des éléments HTML JavaScript. Cette page sert de cas de test idéal pour la génération de PDF.
IronPDF fournit des résultats parfaits, préservant tout le contenu web dynamique, le style des polices modernes et les éléments interactifs exactement comme affichés dans Chrome, le tout en seulement quelques lignes de code.
Syncfusion
Syncfusion a rendu le PDF avec la plupart des sections et des styles manquants, en particulier le contenu dynamique. Initialement bloqué par la sécurité de Reddit. Obtenir de meilleurs résultats nécessite un réglage approfondi de la ligne de commande, mais la sortie reste incomplète.
Aspose.PDF
Aspose.PDF a nécessité un téléchargement manuel de l'HTML d'abord (pas de support direct d'URL). Après conversion, la sortie manquait de mise en forme correcte et manquait pratiquement toutes les sections de contenu, ce qui la rendait inadaptée pour le web moderne avec du contenu dynamique.
wkhtmltopdf
wkhtmltopdf a terminé rapidement mais a produit une page simple et statique manquant de contenu critique comme les mises à jour en direct, les éléments dynamiques, et les sections interactives. Ceci démontre l'incompatibilité de wkhtmltopdf avec les sites modernes pilotés par JavaScript.
Conclusion sur la performance et la qualité de sortie PDF
Pour les développeurs .NET ayant besoin d'un convertisseur HTML en PDF fiable, IronPDF se démarque avec un code minimal, des API faciles à utiliser, et des améliorations fréquentes du produit.
Dans un test réel sur du contenu web, il a fourni les résultats les plus rapides et les plus précis tandis que Syncfusion était à la traîne, Aspose nécessitait des étapes supplémentaires, et wkhtmltopdf manquait de style moderne. IronPDF offre le meilleur équilibre entre vitesse, précision et simplicité pour les flux de travail de conversion HTML en PDF d'aujourd'hui.
Veuillez noter: Aspose, Syncfusion et wkhtmltopdf sont des marques commerciales de leurs propriétaires respectifs. Ce site n'est pas affilié ou approuvé par eux. Tous les noms, logos et marques appartiennent à leurs propriétaires, et les comparaisons sont basées sur les informations publiquement disponibles au moment de l'écriture.
Résumé
Ce guide a couvert tout ce qu'il fallait pour convertir HTML en PDF dans .NET : de la conversion de chaîne de base aux fonctionnalités avancées comme le traitement asynchrone, les signatures numériques, et la génération par lot. Nous avons démontré trois méthodes de conversion, des configurations essentielles, des fonctionnalités avancées et des paramètres de sécurité, et comparé IronPDF avec d'autres bibliothèques à travers des tests réels de génération de documents dynamiques.
Tandis que les concurrents ont eu des difficultés avec les sites modernes ou ont nécessité des solutions complexes, IronPDF a fourni des résultats impeccables avec un code minimal et un moteur de rendu puissant.
Prêt à simplifier votre flux de travail PDF et à expérimenter une génération de PDF polyvalente en seulement quelques lignes de code ? Installez IronPDF via le Emballer Manager NuGet (ou sélectionnez Gérer NuGet Emballer dans Visual Studio) et convertissez votre premier HTML en PDF aujourd'hui.
Avez-vous des difficultés avec les erreurs suivantes lors de la conversion HTML en PDF ? IronPDF offre un support ingénieur 24/7 via le widget de chat sur https://ironpdf.com/
Solutions rapides aux erreurs courantes
Rendu lent au premier? Normal. Chrome s'initialise en 2–3 s, puis accélère.
Problèmes de cloud? Utilisez au moins Azure B1 ou équivalent.
Ressources manquantes? Définissez des chemins de base ou intégrez sous forme de base64.
Éléments manquants? Ajoutez RenderDelay pour l'exécution JavaScript.
Mémoire dans le rendu ? Mettez à jour vers la dernière version (v2026.6.1) pour des correctifs dans HTML vers PDF, tampons et en-têtes/pieds de page.
Problèmes de champ de formulaire (par exemple, longues zones de texte, cases à cocher)? Corrigé en v2025.7.17 ; assurez-vous que les cases ont des noms uniques.
Coupures d'en-tête/pied de page personnalisés ou caractères spéciaux corrompus? Résolu en v2025.8.8 ; testez le retour à la ligne et les métadonnées.
Obtenez de l'aide des ingénieurs qui ont développé IronPDF, 24/7
Vous pouvez convertir du HTML en PDF en C# à l'aide d'une bibliothèque de rendu Chrome qui transforme le HTML, le CSS3 et le JavaScript en PDF parfaits au pixel près. Des outils comme IronPDF vous permettent d'effectuer le rendu à partir d'URL, de chaînes HTML ou de fichiers, tout en prenant en charge les en-têtes, l'authentification et les paramètres d'impression.
Quelle est la meilleure bibliothèque HTML vers PDF for .NET ?
La meilleure bibliothèque devrait prendre en charge le rendu précis de Chrome, le déploiement multiplateforme et les fonctionnalités d'entreprise. IronPDF couvre tous ces éléments — fonctionnant sur Windows, Linux, macOS et Docker, avec prise en charge de la sécurité, des signatures, de la conformité et des applications .NET évolutives.
Quelles sont les options gratuites pour convertir HTML en PDF sous .NET ?
Les solutions open-source telles que wkhtmltopdf, PuppeteerSharp et Playwright convertissent HTML en PDF sans coût, mais échangent la commodité contre l'entretien — moteurs de rendu plus anciens, fichiers binaires de navigateur inclus ou configuration manuelle du serveur. IronPDF est commercial, avec un essai gratuit de 30 jours comprenant toutes les fonctionnalités et sans filigranes pendant le développement; les licences de production commencent à 999 $. Voir les tarifs →
Comment puis-je convertir des chaînes HTML en PDF en utilisant C# ?
Pour convertir des chaînes HTML en PDF, utilisez la classe ChromePdfRenderer et sa méthode RenderHtmlAsPdf. Passez votre chaîne HTML à cette méthode, puis enregistrez le PDF en utilisant SaveAs.
Quelles sont les étapes pour convertir une URL de page web en document PDF en C# ?
Vous pouvez convertir directement une URL de page web en PDF en utilisant la méthode RenderUrlAsPdf, qui vous permet de préserver la mise en forme, les images et les éléments interactifs tels que les formulaires et les hyperliens.
Comment convertir un fichier HTML en PDF en C# ?
Utilisez ChromePdfRenderer.RenderHtmlFileAsPdf("path/to/file.html") pour convertir les fichiers HTML locaux en PDF. IronPDF résout automatiquement tous les chemins d'accès relatifs aux ressources (images, CSS, JS).
Comment convertir les Razor Pages ASP.NET ou les vues MVC en PDF ?
IronPDF propose des packages d'extension dédiés — IronPdf.Extensions.Razor pour Razor Pages et IronPdf.Extensions.Mvc.Core pour les vues MVC. Utilisez RenderRazorToPdf ou RenderRazorViewToPdf avec l'injection de dépendances pour convertir directement les vues en PDF depuis vos contrôleurs. Voir le guide Razor →
Comment puis-je m'assurer que le contenu JavaScript est correctement rendu dans le PDF ?
Activez le rendu JavaScript en définissant RenderingOptions.EnableJavaScript = true et ajoutez un délai de rendu en utilisant RenderingOptions.WaitFor.RenderDelay pour vous assurer que le contenu dynamique est entièrement chargé avant la conversion. Voir le guide WaitFor →
Pourquoi la sortie de ma conversion HTML en PDF est-elle vide ou manque-t-elle de contenu ?
Un PDF vide ou partiel signifie presque toujours que la page n'avait pas terminé de se rendre visible ou que ses ressources ne se sont pas chargées. Pour le contenu dynamique ou piloté par JavaScript, définissez RenderingOptions.EnableJavaScript = true et ajoutez un WaitFor.RenderDelay (ou WaitFor.HtmlQuerySelector) pour que Chrome termine d'afficher d'abord. Si des images locales, des CSS ou des polices manquent, passez un BaseUrlPath pour que les chemins relatifs soient résolus correctement. Voir le guide WaitFor →
Quelle est la meilleure méthode pour ajouter des en-têtes et pieds de page à un PDF en C# ?
Utilisez la classe TextHeaderFooter pour des en-têtes et pieds de page simples, ou la classe HtmlHeaderFooter pour un contenu HTML plus complexe. Vous pouvez inclure des espaces réservés dynamiques tels que {page}, {total-pages}, et {date} pour une génération automatique de contenu. Voir le guide des en-têtes et pieds de page →
Comment gérer les sauts de page dans la sortie PDF en C# .NET ?
Contrôlez les sauts de page dans vos PDF en utilisant des propriétés CSS telles que page-break-after: always et page-break-inside: avoid dans un bloc CSS de type média d'impression. Voir le guide des sauts de page →
Quelles options sont disponibles pour définir la taille et l'orientation du papier dans les PDFs ?
Définissez la taille du papier en utilisant RenderingOptions.PaperSize (les options incluent A4, Lettre, Légal, etc.) et l'orientation avec RenderingOptions.PaperOrientation pour Portrait ou Paysage. Les tailles personnalisées en millimètres ou en pouces sont également prises en charge. Voir le guide des tailles de papier →
Puis-je convertir des pages Web authentifiées en PDF ?
Oui. IronPDF prend en charge les cookies, les en-têtes HTTP personnalisés, et l'authentification basée sur les formulaires. Définissez les cookies via ChromePdfRenderer.RenderingOptions.CustomCookies, ou passez des en-têtes d'authentification pour l'authentification basée sur des jetons. L'authentification Windows NTLM et Kerberos est également prise en charge. Voir le guide des cookies →
Puis-je créer plusieurs PDFs à partir d'un seul modèle HTML en C# ?
Oui, créez des modèles HTML avec des espaces réservés, puis utilisez la substitution de chaînes ou des bibliothèques de templating comme Handlebars.NET. Remplacez les espaces réservés par des valeurs réelles dans vos données bouclées, et générez des PDFs en utilisant RenderHtmlAsPdf.
Est-il possible de sécuriser mes PDFs générés avec un mot de passe ?
Oui, vous pouvez utiliser la propriété SecuritySettings pour définir des mots de passe utilisateur et propriétaire, configurer des permissions comme l'impression et la copie, et appliquer le cryptage AES256 avec SecuritySettings.EncryptionAlgorithm. Voir le guide de cryptage →
Puis-je générer des documents conformes à PDF/A à partir de HTML ?
Oui. IronPDF prend en charge les normes PDF/A-1b, PDF/A-2b, PDF/A-3b et PDF/UA pour la conformité d'archivage et d'accessibilité, que la plupart des convertisseurs HTML en PDF ne proposent pas. Voir le guide PDF/A →
Comment puis-je optimiser les performances pour la génération d'un grand volume de PDFs ?
Optimisez les performances en utilisant des méthodes asynchrones comme RenderHtmlAsPdfAsync pour des opérations non bloquantes. Réutilisez les instances ChromePdfRenderer, traitez plusieurs PDF simultanément en utilisant Task.WhenAll, et assurez-vous que vous avez des ressources serveur adéquates sur un système 64 bits. Voir le guide async →
Comment puis-je fusionner plusieurs PDFs ou inclure une page de garde dans mon document ?
Utilisez la méthode statique PdfDocument.Merge pour combiner plusieurs PDF. Générez votre page de couverture séparément et fusionnez-la avec votre document principal pour créer un PDF complet. Voir le guide de fusion →
Puis-je déployer IronPDF sur Azure, AWS, ou Docker ?
Oui. IronPDF fonctionne sur Azure App Service, Azure Functions, AWS Lambda, et les conteneurs Docker sur Linux. Des guides de configuration dédiés et des images Docker sont disponibles pour chaque plateforme. Voir le guide Azure → · Voir le guide AWS → · Voir le guide Docker →
Oui — IronPDF est entièrement compatible avec .NET 10. Selon les notes de version d'IronPDF, la bibliothèque est prête dès le premier jour pour les projets .NET 10, sans configuration supplémentaire. Que vous utilisiez des applications web, console, desktop, ou microservices, IronPDF fonctionne "prêt à l'emploi" avec .NET 10.
IronPDF est-il gratuit ?
IronPDF offre un essai gratuit de 30 jours avec toutes les fonctionnalités et sans filigranes en développement. L'utilisation en production nécessite une licence commerciale à partir de 999 $. Les formules Lite, Plus, Professional et Enterprise sont disponibles. Voir les tarifs →
Comment la qualité de rendu de cette bibliothèque se compare-t-elle à d'autres options comme wkhtmltopdf ?
Cette bibliothèque utilise un moteur de rendu Chrome moderne pour des PDFs parfaits au pixel près, contrairement au moteur WebKit obsolète de wkhtmltopdf. Elle ne nécessite pas d'exécutables serveur, prend en charge JavaScript/CSS3 complet, bénéficie de mises à jour régulières et offre un support professionnel.
Pourquoi devrais-je choisir cette bibliothèque plutôt que PDFSharp pour la conversion HTML en PDF ?
PDFSharp manque de conversion HTML en PDF intégrée, nécessitant des solutions complexes. Cette bibliothèque offre une conversion directe HTML/URL/fichier avec une API de haut niveau, la prise en charge des technologies web modernes, et des mises à jour régulières avec un support professionnel. Voir la comparaison PDFSharp →
Qu'est-ce qui fait de ce choix une meilleure option qu'iTextSharp pour la conversion HTML ?
La version gratuite d'iTextSharp ne prend pas en charge la conversion native de HTML en PDF et possède une API bas niveau complexe. Cette bibliothèque offre une conversion HTML fluide avec une API intuitive, une prise en charge complète de CSS3/JavaScript, et aucune restriction de licence AGPL. Voir la comparaison iTextSharp →
Comment la qualité de rendu de cette bibliothèque se compare-t-elle à Aspose.PDF ?
Cette bibliothèque produit des PDF de qualité Chrome pixel perfect, alors qu'Aspose.PDF manque souvent de style et de contenu dynamique. Aspose nécessite des téléchargements HTML manuels pour la conversion d'URL, mais cette bibliothèque convertit directement les URLs avec une précision supérieure. Voir la comparaison Aspose →
Pourquoi pourrais-je choisir cette bibliothèque plutôt que Syncfusion PDF ?
Bien que Syncfusion soit capable, le moteur optimisé Chrome de cette bibliothèque fonctionne plus rapidement et gère plus efficacement le contenu dynamique. Elle offre une API plus simple et des fonctions supplémentaires comme la génération OCR et de code-barres. Voir la comparaison Syncfusion →
Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.