
Comment extraire des images d'un PDF en C#
Les applications web modernes exigent plus qu'une simple création de documents statiques. Que ce soit pour générer des factures personnalisées, créer des rapports PDF basés sur les données, ou produire des champs de formulaire personnalisés, les développeurs ont besoin d'outils robustes pour générer des documents PDF à l'exécution. IronPDF émerge comme la solution leader, offrant un rendu puissant basé sur Chrome pour créer des documents PDF avec une intégration C# fluide pour la génération dynamique de PDF dans les environnements C# et .NET Framework.

What is Dynamic PDF Generation in C#?
La génération dynamique de PDF en C# crée des documents PDF à l'exécution en utilisant des données variables provenant de multiples sources de données, y compris des bases de données, des API, ou des entrées utilisateur. Contrairement aux fichiers PDF statiques, la génération à l'exécution permet un contenu personnalisé, des sections conditionnelles, et des mises en page basées sur les données ; ceci est essentiel pour les factures, les rapports PDF, les certificats, et les formulaires qui s'adaptent aux exigences changeantes. Cette approche pour créer un PDF de façon programmatique est devenue cruciale pour les applications modernes .NET Framework et .NET Core.

Commencer avec IronPDF
Commencez par installer le package NuGet IronPDF via la console du gestionnaire de packages dans Visual Studio :

Ou utilisez l'interface du gestionnaire de packages NuGet pour télécharger et installer. Initialisez le ChromePdfRenderer pour une génération de PDF au pixel près :
using IronPdf;
// Create Chrome renderer instance
var renderer = new ChromePdfRenderer();
// Configure rendering options for PDF format
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;Imports IronPdf
' Create Chrome renderer instance
Dim renderer As New ChromePdfRenderer()
' Configure rendering options for PDF format
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
renderer.RenderingOptions.PrintHtmlBackgrounds = TrueLa classe ChromePdfRenderer fournit la base pour générer un PDF à l'exécution. Le réglage des marges assure un espace pour les en-têtes et pieds de page, tandis que PrintHtmlBackgrounds préserve les éléments de design. Cette configuration aide à créer des documents PDF basés sur le contenu HTML exactement. En savoir plus sur les options de rendu pour personnaliser vos documents PDF.
Comment créer dynamiquement des documents PDF en utilisant un modèle
Créez des modèles HTML réutilisables avec des espaces réservés pour l'injection de données dynamiques :
// Define HTML string template with placeholders
string invoiceTemplate = @"
<html>
<body>
<h1>Invoice #[[INVOICE_NUMBER]]</h1>
<p>Date: [[DATE]]</p>
<p>Customer: [[CUSTOMER_NAME]]</p>
<table>
<tr><th>Item</th><th>Price</th></tr>
[[ITEMS]]
</table>
<p><strong>Total: $[[TOTAL]]</strong></p>
</body>
</html>";
// Replace placeholders with dynamic data
var invoiceData = new {
InvoiceNumber = "INV-2025-001",
Date = DateTime.Now.ToString("yyyy-MM-dd"),
CustomerName = "John Doe",
Total = 1250.00m
};
string finalHtml = invoiceTemplate
.Replace("[[INVOICE_NUMBER]]", invoiceData.InvoiceNumber)
.Replace("[[DATE]]", invoiceData.Date)
.Replace("[[CUSTOMER_NAME]]", invoiceData.CustomerName)
.Replace("[[TOTAL]]", invoiceData.Total.ToString());
// Generate PDF from populated HTML content
var pdf = renderer.RenderHtmlAsPdf(finalHtml);
pdf.SaveAs("invoice.pdf");' Define HTML string template with placeholders
Dim invoiceTemplate As String = "
<html>
<body>
<h1>Invoice #[[INVOICE_NUMBER]]</h1>
<p>Date: [[DATE]]</p>
<p>Customer: [[CUSTOMER_NAME]]</p>
<table>
<tr><th>Item</th><th>Price</th></tr>
[[ITEMS]]
</table>
<p><strong>Total: $[[TOTAL]]</strong></p>
</body>
</html>"
' Replace placeholders with dynamic data
Dim invoiceData = New With {
.InvoiceNumber = "INV-2025-001",
.Date = DateTime.Now.ToString("yyyy-MM-dd"),
.CustomerName = "John Doe",
.Total = 1250.00D
}
Dim finalHtml As String = invoiceTemplate _
.Replace("[[INVOICE_NUMBER]]", invoiceData.InvoiceNumber) _
.Replace("[[DATE]]", invoiceData.Date) _
.Replace("[[CUSTOMER_NAME]]", invoiceData.CustomerName) _
.Replace("[[TOTAL]]", invoiceData.Total.ToString())
' Generate PDF from populated HTML content
Dim pdf = renderer.RenderHtmlAsPdf(finalHtml)
pdf.SaveAs("invoice.pdf")Cette approche de modèle sépare la présentation des données, permettant aux designers de modifier des mises en page complexes tandis que les développeurs se concentrent sur l'intégration des données. La méthode Replace remplace les espaces réservés d'ID de modèle par des valeurs à l'exécution, créant des documents PDF personnalisés. Pour convertir du contenu HTML avec des sections répétitives, construisez le HTML dynamiquement en utilisant des boucles avant la conversion en PDF. Explorez plus d'exemples HTML vers PDF pour un modelage avancé.
Sortie

Liage de données avancé avec traitement asynchrone
Échelle votre génération de PDF avec des méthodes asynchrones pour un traitement à grand volume :
// Async batch generation for multiple PDF documents
public async Task GenerateMonthlyReportsAsync(List<Customer> customers)
{
var renderer = new ChromePdfRenderer();
var tasks = new List<Task>();
foreach (var customer in customers)
{
tasks.Add(Task.Run(async () =>
{
// Create HTML content with dynamic data
string html = $@"
<h2>Monthly Report - {customer.Name}</h2>
<p>Account Balance: ${customer.Balance:F2}</p>
<p>Transactions: {customer.TransactionCount}</p>
<div style='page-break-after: always;'></div>";
// Convert HTML to PDF format
var document = await renderer.RenderHtmlAsPdfAsync(html);
await document.SaveAs($"reports/{customer.Id}_report.pdf");
}));
}
await Task.WhenAll(tasks);
}Imports System.Threading.Tasks
Imports System.Collections.Generic
' Async batch generation for multiple PDF documents
Public Async Function GenerateMonthlyReportsAsync(customers As List(Of Customer)) As Task
Dim renderer = New ChromePdfRenderer()
Dim tasks = New List(Of Task)()
For Each customer In customers
tasks.Add(Task.Run(Async Function()
' Create HTML content with dynamic data
Dim html As String = $"
<h2>Monthly Report - {customer.Name}</h2>
<p>Account Balance: ${customer.Balance:F2}</p>
<p>Transactions: {customer.TransactionCount}</p>
<div style='page-break-after: always;'></div>"
' Convert HTML to PDF format
Dim document = Await renderer.RenderHtmlAsPdfAsync(html)
Await document.SaveAs($"reports/{customer.Id}_report.pdf")
End Function))
Next
Await Task.WhenAll(tasks)
End FunctionLe modèle asynchrone permet une génération de PDF concurrente, améliorant considérablement le débit lorsque vous générez des documents PDF en lot. Task.WhenAll s'assure que tous les fichiers PDF sont complets avant de continuer. Le code ci-dessus utilise les propriétés CSS de saut de page pour contrôler la pagination, garantissant que chaque rapport client commence sur une nouvelle page. Consultez la documentation de génération de PDF asynchrone pour les applications web d'entreprise.
Créer des formulaires PDF interactifs de façon dynamique
Transformez les pages web avec formulaires HTML en PDFs remplissables de manière programmatique :
// Enable form fields creation in rendering options
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Define HTML string with form elements
string formHtml = @"
<form>
<h2>Customer Survey</h2>
<label>Name:
<label>Email:
<label>Satisfaction:
<select name='satisfaction'>
<option>Excellent</option>
<option>Good</option>
<option>Fair</option>
</select>
</label><br>
<label>Comments: <textarea name='comments'></textarea></label>
</form>";
// Create a PDF with interactive form fields
var pdfDocument = renderer.RenderHtmlAsPdf(formHtml);
pdfDocument.SaveAs("survey_form.pdf");' Enable form fields creation in rendering options
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
' Define HTML string with form elements
Dim formHtml As String = "
<form>
<h2>Customer Survey</h2>
<label>Name:
<label>Email:
<label>Satisfaction:
<select name='satisfaction'>
<option>Excellent</option>
<option>Good</option>
<option>Fair</option>
</select>
</label><br>
<label>Comments: <textarea name='comments'></textarea></label>
</form>"
' Create a PDF with interactive form fields
Dim pdfDocument = renderer.RenderHtmlAsPdf(formHtml)
pdfDocument.SaveAs("survey_form.pdf")Le réglage CreatePdfFormsFromHtml convertit les éléments de formulaire HTML en champs de formulaire PDF interactifs. Les utilisateurs peuvent remplir, enregistrer, et soumettre ces documents PDF électroniquement. Cette fonctionnalité simplifie les flux de travail en éliminant les formulaires papier tout en maintenant des schémas de développement HTML familiers. L'objet PDFDocument permet d'accéder à la manipulation des champs de formulaire de manière programmatique. Apprenez à manipuler les formulaires PDF pour les implémentations avancées, y compris les signatures numériques.
Sortie

Pourquoi Choisir IronPDF par Rapport à d'Autres Méthodes
Le moteur de rendu Chrome d'IronPDF garantit une précision au pixel près lorsque vous créez des PDFs, éliminant les compromis des solutions de moteur de rendu WebKit plus anciennes. Contrairement aux alternatives de bibliothèques open source nécessitant des exécutables externes ou des configurations de navigateurs sans tête, IronPDF s'intègre de manière transparente sans aucune dépendance. Les API fluent et design de haut niveau le rendent supérieur aux classes intégrées ou aux implémentations complexes de Crystal Reports.

Key advantages for dynamic PDF generation in C#
- Exécution complète de JavaScript, contrairement à d'autres méthodes
- Opérations thread-safe pour les applications web
- Prise en charge complète de l'async avec les modèles d'exemple suivants
- Numéros de page et contrôle de la taille des polices par une configuration simple de l'API
- La conversion HTML en PDF correspond exactement à Chrome

Les licences commencent à $999 pour des licences de développeur unique, avec des options pour équipes et entreprises disponibles. Chaque package a ses propres avantages, et l'investissement s'amortit en termes d'économies de temps de développement. Accédez instantanément à votre clé API après l'achat. Consultez les options de licence pour trouver le bon package NuGet pour votre projet.
Conclusion
La génération dynamique de PDF en C# transforme la manière dont les applications délivrent des documents personnalisés à l'exécution. IronPDF fournit des outils essentiels pour générer des fichiers PDF à partir de contenu HTML, de pages web, et de sources de données. Son rendu basé sur Chrome garantit que vos PDFs en C# correspondent exactement aux spécifications de conception, tandis que la prise en charge de l'async permet un traitement à l'échelle entreprise.
La commande suivante démarre votre parcours : Install-Package IronPdf. Avec IronPDF, vous pouvez convertir des chaînes HTML, créer des PDFs complexes avec images et tables, ajouter des numéros de page, contrôler la taille des polices, et générer des rapports PDF à partir de n'importe quelle source de données. Chaque nouveau document bénéficie d'un rendu au pixel près, que ce soit pour créer une simple var page ou des mises en page complexes avec plusieurs instances de document var.
Commencez avec le essai gratuit de 30 jours d'IronPDF.

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.
Articles connexes


