Génération de PDF en C# avec IronPDF
IronPDF permet aux développeurs C# de convertir du HTML en PDF en seulement 5 étapes grâce à une application Windows Forms simple, ne nécessitant que l'installation du package NuGet et quelques lignes de code pour générer des documents PDF Professional à partir de HTML.
Les développeurs C# peuvent utiliser IronPDF pour générer des PDF à partir de HTML. Cet article va démontrer ce processus avec une application Windows Forms en C# créée en utilisant le .NET Framework.
Veuillez suivre ces étapes pour créer un projet dans Visual Studio 2019.
Comment créer un projet Visual Studio pour la génération de PDF ?
Tout d'abord, ouvrez Visual Studio 2019.

Cliquez sur 'Créer un nouveau projet'.
Sélectionnez maintenant 'Application Windows Forms' dans le Modèle, et appuyez sur 'Suivant'. La fenêtre suivante apparaîtra :

Entrez le nom du projet 'Create PDF using IronPDF'.

Cliquez sur le bouton 'Créer'. Le projet sera créé comme ci-dessous.

Pourquoi utiliser Windows Forms pour ce tutoriel ?
Windows Forms offre un environnement visuel simple pour les débutants apprenant la génération de PDF en C# . Il propose un concepteur par glisser-déposer qui facilite la création d'interfaces utilisateur sans connaissances approfondies en HTML ou en développement web. Le modèle de programmation événementiel de Windows Forms correspond bien à la façon dont les développeurs juniors conçoivent le flux d'une application, ce qui le rend idéal pour démontrer les fonctionnalités de base d'IronPDF en matière de conversion HTML vers PDF .
Pour les applications de production, vous pourriez envisager ASP.NET Core pour la génération de PDF sur le Web ou des applications console pour le traitement par lots . Cependant, Windows Forms reste un excellent choix pour les outils internes, les utilitaires de bureau et les environnements d'apprentissage où un retour visuel rapide est nécessaire pendant le développement.
Quelle version de Visual Studio fonctionne le mieux ?
Visual Studio 2019 ou version ultérieure offre la meilleure expérience pour le développement IronPDF . Ces versions incluent une gestion améliorée des packages NuGet , une meilleure prise en charge des fonctionnalités modernes de C# et des capacités de débogage améliorées qui aident à résoudre les problèmes de génération de PDF.
Bien que Visual Studio 2022 offre les dernières fonctionnalités et améliorations de performances, Visual Studio 2019 reste largement utilisé et entièrement pris en charge. Les deux versions fonctionnent parfaitement avec les packages NuGet d'IronPDF . Pour les développeurs utilisant Visual Studio Code, il est toujours possible de travailler avec IronPDF, mais il faudra utiliser l'interface de ligne de commande pour la gestion des packages et certaines fonctionnalités de conception visuelle présentées dans ce tutoriel seront absentes.
Puis-je utiliser .NET Core à la place de .NET Framework?
Absolument! IronPDF prend entièrement en charge .NET Core, .NET 5, .NET 6 et .NET 7+ . En effet, l'utilisation de .NET Core ou de versions plus récentes offre plusieurs avantages, notamment la compatibilité multiplateforme, de meilleures performances et l'accès aux dernières fonctionnalités du langage C#.
Pour utiliser .NET Core, il vous suffit de sélectionner le framework cible approprié lors de la création de votre projet. Les exemples de code de ce tutoriel fonctionnent de manière identique sur tous les frameworks pris en charge. Pour une plus grande flexibilité de déploiement, les applications .NET Core peuvent s'exécuter sous Linux et macOS en plus de Windows, ce qui les rend idéales pour les déploiements dans le cloud et les environnements conteneurisés.
Comment installer IronPDF à l'aide du gestionnaire de packages NuGet ?
- Cliquez d'abord sur le bouton 'Outils' dans la barre de menu.
- Un menu va s'ouvrir. Cliquez maintenant sur l'option Package Manager NuGet.
- Un autre sous-menu va s'ouvrir. Cliquez maintenant sur l'option nommée Console du Package Manager.

Une nouvelle fenêtre s'affichera sous l'invite de commandes. Saisissez-y la commande permettant d'installer le paquet IronPDF .
Install-Package IronPdf

Appuyez sur Entrée après avoir tapé la commande. Assurez-vous que votre ordinateur/portable est connecté à Internet. Le package IronPDF sera automatiquement ajouté à votre projet existant.

L'écran ci-dessus montre le package ajouté avec succès à votre projet.
Quelles sont les autres façons d'installer IronPDF?
Outre la console du Package Manager, plusieurs options s'offrent à vous pour installer IronPDF :
-
Interface utilisateur du gestionnaire de packages NuGet : Cliquez avec le bouton droit sur votre projet, sélectionnez " Gérer les packages NuGet ", recherchez " IronPDF", puis cliquez sur Installer. Idéal pour les débutants qui préfèrent les interfaces graphiques.
-
PackageReferencedans .csproj : Pour les projets .NET modernes, vous pouvez ajouter IronPDF directement à votre fichier de projet :<PackageReference Include="IronPdf" Version="*" /><PackageReference Include="IronPdf" Version="*" />XML -
Interface de ligne de commande dotnet : Pour les développeurs qui préfèrent les outils en ligne de commande ou utilisent Visual Studio Code :
dotnet add package IronPdfdotnet add package IronPdfSHELL - Téléchargement manuel : Vous pouvez télécharger la DLL directement depuis le site Web IronPDF et l'ajouter comme référence, bien que cette approche rende les mises à jour plus difficiles.
Pourquoi ai-je besoin d'une connexion Internet pendant l'installation ?
NuGet nécessite une connexion Internet pour télécharger IronPDF et ses dépendances depuis le dépôt NuGet. Le package inclut la bibliothèque IronPDF principale et les binaires du moteur de rendu Chrome nécessaires à la conversion HTML vers PDF.
Pour les installations hors ligne, vous pouvez :
- Créer un cache de packages NuGet local
- Utilisez le programme d'installation IronPDF pour Windows
- Téléchargez les paquets sur un ordinateur connecté et transférez-les manuellement.
Notez que le moteur de rendu d'IronPDF nécessite des composants d'exécution supplémentaires qui peuvent être téléchargés lors de la première utilisation ; la génération initiale du PDF bénéficie donc également d'une connexion Internet.
Comment puis-je vérifier que l'installation a réussi ?
Après l'installation, vérifiez que IronPDF fonctionne correctement en contrôlant les indicateurs suivants :
-
Nœud Références : Dans l'Explorateur de solutions, développez le nœud Références. Vous devriez voir "IronPDF" listé parmi les références de votre projet.
-
IntelliSenseAssistance : Saisissezusing IronPdf;en haut d'un fichier C#.IntelliSensedevrait reconnaître l'espace de noms sans erreur. - Code de test simple : Ajoutez ce test de base pour vérifier la fonctionnalité :
using IronPdf;using IronPdf;Imports IronPdf$vbLabelText $csharpLabel
// Quick verification test var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("
Test
"); // If no exceptions occur, IronPDF is installed correctly
4. **Gestionnaire de packages** : Exécutez `Get-Package IronPdf` dans la console du gestionnaire de packages pour afficher les informations de version.
En cas de problème, consultez le [guide de dépannage](/troubleshooting/quick-ironpdf-troubleshooting/) ou vérifiez que votre [système répond aux exigences](/get-started/windows/) .
## Comment concevoir l'interface utilisateur pour la génération de PDF ?
Ajoutez maintenant une étiquette et réglez le texte sur "Créer un PDF à partir de HTML en using IronPDF".

Ensuite, ajoutez une boîte de texte riche et un bouton depuis la boîte à outils. Réglez le texte du bouton sur 'Convertir'.

### Pourquoi utiliser un `RichTextBox` au lieu d'un `TextBox` régulier ?
Un `RichTextBox` offre plusieurs avantages pour [la saisie HTML dans les scénarios de génération de PDF](/how-to/html-string-to-pdf/) :
1. **Prise en charge multiligne** : le HTML s'étend généralement sur plusieurs lignes, et `RichTextBox` gère cela naturellement tandis que `TextBox` nécessite de définir Multiline = true.
2. **Préservation de la mise en forme** : Lorsque nous saisissons du HTML simple, `RichTextBox` préserve la mise en forme comme l'indentation et les sauts de ligne, rendant le HTML plus lisible pendant le développement.
3. **Capacité plus grande** : `RichTextBox` peut gérer de plus grandes quantités de texte, utile lors du travail avec des documents HTML complets plutôt qu'avec des extraits.
4. **Potentiel de coloration syntaxique** : Bien que non implémenté dans cet exemple de base, `RichTextBox` peut être étendu pour fournir [une coloration syntaxique pour HTML](/tutorials/pixel-perfect-html-to-pdf/) , améliorant ainsi l'expérience du développeur.
Pour les applications de production, envisagez d'utiliser un contrôle d'éditeur HTML dédié ou de vous intégrer à des éditeurs externes pour une meilleure expérience utilisateur.
### Quelles autres commandes pourraient améliorer l'interface utilisateur ?
Pour créer une application de génération de PDF plus robuste, envisagez d'ajouter les contrôles suivants :
1. **`WebBrowser` Contrôle** : Affiche un aperçu du code HTML avant la conversion, permettant aux utilisateurs de visualiser l'apparence de leur PDF. Ce comportement imite celui [du moteur de rendu Chrome d'IronPDF](/how-to/pixel-perfect-html-to-pdf/) .
2. **`ProgressBar`** : Afficher la progression de la conversion pour les documents volumineux ou [les opérations par lots](/how-to/async/) .
3. **`ComboBox` pour les modèles** : Fournir des modèles HTML prédéfinis pour les types de documents courants comme les factures ou les rapports.
4. **`PropertyGrid`** : Autoriser les utilisateurs à modifier [les paramètres de rendu PDF](/how-to/custom-paper-size/) tels que la taille de la page, les marges et l'orientation.
5. **`TabControl`** : Séparer [les paramètres HTML, aperçu et PDF](/how-to/rendering-options/) de l'entrée dans des onglets organisés.
Exemple d'ajout d'une barre d'état pour les commentaires :
```csharp
// Add to your form
StatusStrip statusStrip = new StatusStrip();
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel("Ready");
statusStrip.Items.Add(statusLabel);
this.Controls.Add(statusStrip);
Comment nommer correctement mes contrôles ?
Le respect de conventions d'appellation cohérentes améliore la lisibilité et la maintenance du code. Voici les bonnes pratiques recommandées pour votre formulaire de génération de PDF :
-
Utilisez des préfixes descriptifs :
txtHtmlpour l'entrée HTMLRichTextBoxbtnConvertpour le bouton ConvertirlblTitlepour l'étiquette de titre
-
Soyez cohérent : Choisissez soit camelCase, soit
PascalCaseet conservez-le tout au long de votre projet. -
Évitez les noms par défaut : remplacez
richTextBox1par des noms significatifs commertbHtmlInput. -
Regrouper les contrôles associés : Pour les formulaires complexes, utilisez des préfixes qui regroupent les fonctionnalités :
pdfPageSize,pdfOrientationpour les paramètres spécifiques aux PDFhtmlTemplate,htmlPreviewpour les contrôles liés au HTML
- Tenez compte de l'accessibilité : définissez la propriété
Namepour les lecteurs d'écran et la propriétéAccessibleNamepour une meilleure utilisabilité.
Une bonne dénomination rend votre code auto-documenté et facilite la mise en œuvre de fonctionnalités telles que l'extraction de données de formulaires .
Comment écrire le code pour convertir du HTML en PDF ?
Double-cliquez sur le bouton 'Convertir'. Une fenêtre de code avec un événement de clic sur le bouton de conversion va s'ouvrir.

Ajoutez le code d'importation de la bibliothèque IronPDF en haut du fichier .cs.
Tout d'abord, ajoutez le code suivant pour utiliser les méthodes de la bibliothèque IronPDF.
using IronPdf;
using IronPdf;
Imports IronPdf
Voici le code initial de l'événement btnConvert_Click, qui est actuellement vide :
private void btnConvert_Click(object sender, EventArgs e)
{
}
private void btnConvert_Click(object sender, EventArgs e)
{
}
Private Sub btnConvert_Click(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Écrivez maintenant le code suivant dans l'événement de clic sur le bouton :
private void btnConvert_Click(object sender, EventArgs e)
{
// Declare an HtmlToPdf object
var HtmlLine = new HtmlToPdf();
// Get HTML text from the user
string strHtml = txtHtml.Text;
// Create SaveFileDialog to choose the save path for the PDF file
SaveFileDialog saveFileDialog = new SaveFileDialog
{
InitialDirectory = @"D:\",
Title = "Save PDF",
CheckPathExists = true,
DefaultExt = "pdf",
Filter = "pdf files (*.pdf)|*.pdf",
FilterIndex = 2,
RestoreDirectory = true
};
// If the user presses Save
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
// Get the file path from the user
string filePath = saveFileDialog.FileName;
// Convert HTML to PDF and save at the specified path
using var PDF = HtmlLine.RenderHtmlAsPdf(strHtml);
PDF.SaveAs(filePath);
// Clear the TextBox and show a message confirming the successful creation
txtHtml.Text = "";
MessageBox.Show("File created successfully.");
}
}
private void btnConvert_Click(object sender, EventArgs e)
{
// Declare an HtmlToPdf object
var HtmlLine = new HtmlToPdf();
// Get HTML text from the user
string strHtml = txtHtml.Text;
// Create SaveFileDialog to choose the save path for the PDF file
SaveFileDialog saveFileDialog = new SaveFileDialog
{
InitialDirectory = @"D:\",
Title = "Save PDF",
CheckPathExists = true,
DefaultExt = "pdf",
Filter = "pdf files (*.pdf)|*.pdf",
FilterIndex = 2,
RestoreDirectory = true
};
// If the user presses Save
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
// Get the file path from the user
string filePath = saveFileDialog.FileName;
// Convert HTML to PDF and save at the specified path
using var PDF = HtmlLine.RenderHtmlAsPdf(strHtml);
PDF.SaveAs(filePath);
// Clear the TextBox and show a message confirming the successful creation
txtHtml.Text = "";
MessageBox.Show("File created successfully.");
}
}
Private Sub btnConvert_Click(ByVal sender As Object, ByVal e As EventArgs)
' Declare an HtmlToPdf object
Dim HtmlLine = New HtmlToPdf()
' Get HTML text from the user
Dim strHtml As String = txtHtml.Text
' Create SaveFileDialog to choose the save path for the PDF file
Dim saveFileDialog As New SaveFileDialog With {
.InitialDirectory = "D:\",
.Title = "Save PDF",
.CheckPathExists = True,
.DefaultExt = "pdf",
.Filter = "pdf files (*.pdf)|*.pdf",
.FilterIndex = 2,
.RestoreDirectory = True
}
' If the user presses Save
If saveFileDialog.ShowDialog() = DialogResult.OK Then
' Get the file path from the user
Dim filePath As String = saveFileDialog.FileName
' Convert HTML to PDF and save at the specified path
Dim PDF = HtmlLine.RenderHtmlAsPdf(strHtml)
PDF.SaveAs(filePath)
' Clear the TextBox and show a message confirming the successful creation
txtHtml.Text = ""
MessageBox.Show("File created successfully.")
End If
End Sub
Explication :
- Un objet
HtmlToPdfest créé pour utiliser les capacités de conversion d'IronPDF. - L'entrée HTML est récupérée depuis une boîte de texte.
- Un
SaveFileDialogest utilisé pour inviter l'utilisateur à spécifier où le PDF résultant doit être enregistré. - Si l'utilisateur choisit un emplacement de fichier et appuie sur Enregistrer, le chemin est obtenu.
- L'entrée HTML est ensuite transformée en PDF à l'aide de
RenderHtmlAsPdfet enregistrée à l'emplacement choisi. - Après l'enregistrement, la boîte de texte est effacée, et une boîte de message est affichée pour confirmer la création du PDF.
Quelle gestion des erreurs dois-je ajouter à ce code ?
Une gestion robuste des erreurs est cruciale pour les applications de génération de PDF en production . Voici une version améliorée avec une gestion complète des erreurs :
private void btnConvert_Click(object sender, EventArgs e)
{
try
{
// Validate input
if (string.IsNullOrWhiteSpace(txtHtml.Text))
{
MessageBox.Show("Please enter HTML content.", "Validation Error",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
var renderer = new ChromePdfRenderer();
string strHtml = txtHtml.Text;
SaveFileDialog saveFileDialog = new SaveFileDialog
{
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
Title = "Save PDF",
CheckPathExists = true,
DefaultExt = "pdf",
Filter = "pdf files (*.pdf)|*.pdf",
FilterIndex = 1,
RestoreDirectory = true
};
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
// Show progress cursor
Cursor.Current = Cursors.WaitCursor;
using var pdf = renderer.RenderHtmlAsPdf(strHtml);
pdf.SaveAs(saveFileDialog.FileName);
txtHtml.Text = "";
MessageBox.Show("PDF created successfully!", "Success",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (IronPdf.Exceptions.IronPdfProductException ex)
{
// Handle licensing issues
MessageBox.Show($"Licensing error: {ex.Message}", "License Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
}
catch (Exception ex)
{
MessageBox.Show($"An error occurred: {ex.Message}", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
// Log the full exception for debugging
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}
private void btnConvert_Click(object sender, EventArgs e)
{
try
{
// Validate input
if (string.IsNullOrWhiteSpace(txtHtml.Text))
{
MessageBox.Show("Please enter HTML content.", "Validation Error",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
var renderer = new ChromePdfRenderer();
string strHtml = txtHtml.Text;
SaveFileDialog saveFileDialog = new SaveFileDialog
{
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
Title = "Save PDF",
CheckPathExists = true,
DefaultExt = "pdf",
Filter = "pdf files (*.pdf)|*.pdf",
FilterIndex = 1,
RestoreDirectory = true
};
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
// Show progress cursor
Cursor.Current = Cursors.WaitCursor;
using var pdf = renderer.RenderHtmlAsPdf(strHtml);
pdf.SaveAs(saveFileDialog.FileName);
txtHtml.Text = "";
MessageBox.Show("PDF created successfully!", "Success",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (IronPdf.Exceptions.IronPdfProductException ex)
{
// Handle licensing issues
MessageBox.Show($"Licensing error: {ex.Message}", "License Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
}
catch (Exception ex)
{
MessageBox.Show($"An error occurred: {ex.Message}", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
// Log the full exception for debugging
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}
Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click
Try
' Validate input
If String.IsNullOrWhiteSpace(txtHtml.Text) Then
MessageBox.Show("Please enter HTML content.", "Validation Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return
End If
Dim renderer As New ChromePdfRenderer()
Dim strHtml As String = txtHtml.Text
Dim saveFileDialog As New SaveFileDialog With {
.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
.Title = "Save PDF",
.CheckPathExists = True,
.DefaultExt = "pdf",
.Filter = "pdf files (*.pdf)|*.pdf",
.FilterIndex = 1,
.RestoreDirectory = True
}
If saveFileDialog.ShowDialog() = DialogResult.OK Then
Try
' Show progress cursor
Cursor.Current = Cursors.WaitCursor
Using pdf = renderer.RenderHtmlAsPdf(strHtml)
pdf.SaveAs(saveFileDialog.FileName)
End Using
txtHtml.Text = ""
MessageBox.Show("PDF created successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As IronPdf.Exceptions.IronPdfProductException
' Handle licensing issues
MessageBox.Show($"Licensing error: {ex.Message}", "License Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
Cursor.Current = Cursors.Default
End Try
End If
Catch ex As Exception
MessageBox.Show($"An error occurred: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
' Log the full exception for debugging
System.Diagnostics.Debug.WriteLine(ex.ToString())
End Try
End Sub
Améliorations majeures dans la gestion des erreurs :
- Validation des données saisies avant traitement
- Gestion spécifique des exceptions de licence IronPDF
- Indication de progression par changement de curseur
- Journalisation correcte des exceptions pour le débogage
- Messages d'erreur conviviaux
Comment puis-je personnaliser les paramètres PDF, comme la taille de la page ?
IronPDF offre une personnalisation poussée grâce à la classe ChromePdfRenderOptions . Voici comment mettre en œuvre les personnalisations courantes :
private void ConvertWithCustomSettings()
{
var renderer = new ChromePdfRenderer();
// Configure rendering options
renderer.RenderingOptions = new ChromePdfRenderOptions
{
// Page setup
PaperSize = PdfPaperSize.A4,
PaperOrientation = PdfPaperOrientation.Portrait,
MarginTop = 25, // millimeters
MarginBottom = 25,
MarginLeft = 20,
MarginRight = 20,
// Rendering behavior
EnableJavaScript = true,
RenderDelay = 500, // milliseconds
CreatePdfFormsFromHtml = true,
// Headers and footers
TextHeader = new TextHeaderFooter
{
CenterText = "My Document",
FontSize = 12,
DrawDividerLine = true
},
TextFooter = new TextHeaderFooter
{
RightText = "Page {page} of {total-pages}",
FontSize = 10
}
};
// Apply custom CSS for print
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Generate PDF with custom settings
var pdf = renderer.RenderHtmlAsPdf(txtHtml.Text);
pdf.SaveAs("custom-output.pdf");
}
private void ConvertWithCustomSettings()
{
var renderer = new ChromePdfRenderer();
// Configure rendering options
renderer.RenderingOptions = new ChromePdfRenderOptions
{
// Page setup
PaperSize = PdfPaperSize.A4,
PaperOrientation = PdfPaperOrientation.Portrait,
MarginTop = 25, // millimeters
MarginBottom = 25,
MarginLeft = 20,
MarginRight = 20,
// Rendering behavior
EnableJavaScript = true,
RenderDelay = 500, // milliseconds
CreatePdfFormsFromHtml = true,
// Headers and footers
TextHeader = new TextHeaderFooter
{
CenterText = "My Document",
FontSize = 12,
DrawDividerLine = true
},
TextFooter = new TextHeaderFooter
{
RightText = "Page {page} of {total-pages}",
FontSize = 10
}
};
// Apply custom CSS for print
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Generate PDF with custom settings
var pdf = renderer.RenderHtmlAsPdf(txtHtml.Text);
pdf.SaveAs("custom-output.pdf");
}
Private Sub ConvertWithCustomSettings()
Dim renderer = New ChromePdfRenderer()
' Configure rendering options
renderer.RenderingOptions = New ChromePdfRenderOptions With {
' Page setup
.PaperSize = PdfPaperSize.A4,
.PaperOrientation = PdfPaperOrientation.Portrait,
.MarginTop = 25, ' millimeters
.MarginBottom = 25,
.MarginLeft = 20,
.MarginRight = 20,
' Rendering behavior
.EnableJavaScript = True,
.RenderDelay = 500, ' milliseconds
.CreatePdfFormsFromHtml = True,
' Headers and footers
.TextHeader = New TextHeaderFooter With {
.CenterText = "My Document",
.FontSize = 12,
.DrawDividerLine = True
},
.TextFooter = New TextHeaderFooter With {
.RightText = "Page {page} of {total-pages}",
.FontSize = 10
}
}
' Apply custom CSS for print
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
' Generate PDF with custom settings
Dim pdf = renderer.RenderHtmlAsPdf(txtHtml.Text)
pdf.SaveAs("custom-output.pdf")
End Sub
Pour des options de personnalisation plus avancées, explorez les formats de papier personnalisés , les marges personnalisées et les paramètres de la fenêtre d'affichage .
Pourquoi utiliser l'instruction using pour la génération de PDF ?
L'instruction using est essentielle pour une gestion correcte des ressources lors de la génération de PDF :
-
Suppression automatique : les documents PDF peuvent consommer une quantité importante de mémoire, surtout lorsqu'ils contiennent des images ou un contenu volumineux. L'instruction
usinggarantit que l'objet PDF est correctement supprimé après utilisation. -
Libération des descripteurs de fichiers : Sans une suppression appropriée, les descripteurs de fichiers peuvent rester verrouillés, empêchant les opérations ultérieures sur le fichier PDF.
- Gestion de la mémoire : Le moteur de rendu d'IronPDF utilise des ressources natives qui doivent être libérées pour éviter les fuites de mémoire dans les applications de longue durée.
Voici la comparaison des modèles :
// Recommended approach with using
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
} // Resources automatically released here
// Alternative with try-finally (more verbose)
PdfDocument pdf = null;
try
{
pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
finally
{
pdf?.Dispose();
}
// Recommended approach with using
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
} // Resources automatically released here
// Alternative with try-finally (more verbose)
PdfDocument pdf = null;
try
{
pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
finally
{
pdf?.Dispose();
}
' Recommended approach with Using
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Using ' Resources automatically released here
' Alternative with Try-Finally (more verbose)
Dim pdf As PdfDocument = Nothing
Try
pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Finally
If pdf IsNot Nothing Then
pdf.Dispose()
End If
End Try
Pour les opérations asynchrones , utilisez await using en C# 8.0+ :
await using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
await using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
Await Using pdf = Await renderer.RenderHtmlAsPdfAsync(html)
Quelles sont les balises HTML courantes les plus performantes ?
Le moteur de rendu Chrome d'IronPDF prend en charge toutes les balises HTML5 modernes, mais certaines fonctionnent particulièrement bien pour la génération de PDF :
Structure du document :
<html>
<head>
<meta charset="UTF-8">
<style>
@media print { /* PDF-specific styles */ }
body { font-family: Arial, sans-serif; }
.page-break { page-break-after: always; }
</style>
</head>
<body>
<h1>Document Title</h1>
<div class="page-break"></div>
<h2>New Page Content</h2>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<style>
@media print { /* PDF-specific styles */ }
body { font-family: Arial, sans-serif; }
.page-break { page-break-after: always; }
</style>
</head>
<body>
<h1>Document Title</h1>
<div class="page-break"></div>
<h2>New Page Content</h2>
</body>
</html>
Balises les plus performantes pour les PDF :
<h1>à<h6>: Crée une hiérarchie de documents claire<table>: Excellent pour les données structurées et les factures<img>: Prend en charge les images intégrées et les données base64<div>avec CSS : Contrôle précis de la mise en page<p>et<span>: Formatage de texte standard<ul>et<ol>: Formatage de liste propre
Considérations particulières :
- Utilisez les sauts de page CSS pour la gestion des pages multiples
- Incorporez les polices avec @font-face pour plus de cohérence.
- Utilisez le positionnement absolu avec parcimonie
- Tester minutieusement le contenu généré par JavaScript
Comment tester l'application de génération de PDF ?
Lorsque vous exécutez le projet, vous verrez l'écran suivant :

Saisissez le code HTML dans le champ RichTextBox, par exemple :
<h1>A Simple PDF File</h1><br><h6>Heading 6</h6>
<h1>A Simple PDF File</h1><br><h6>Heading 6</h6>
Cliquez sur 'Convertir'. Vous obtiendrez une boîte de dialogue pour enregistrer le fichier.

Une fois que vous cliquez sur le bouton d'enregistrement, le fichier sera enregistré à l'emplacement que vous avez spécifié avec le nom et l'emplacement définis.
Quels éléments HTML dois-je tester en premier ?
Commencez par ces exemples HTML de complexité croissante pour comprendre les capacités de rendu d'IronPDF :
Mise en forme de texte de base :
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
.highlight { background-color: yellow; }
.important { color: red; font-weight: bold; }
</style>
</head>
<body>
<h1>Test Document</h1>
<p>This is <strong>bold</strong> and <em>italic</em> text.</p>
<p class="highlight">Highlighted text example.</p>
<p class="important">Important notice!</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
.highlight { background-color: yellow; }
.important { color: red; font-weight: bold; }
</style>
</head>
<body>
<h1>Test Document</h1>
<p>This is <strong>bold</strong> and <em>italic</em> text.</p>
<p class="highlight">Highlighted text example.</p>
<p class="important">Important notice!</p>
</body>
</html>
Tableau avec style :
<table style="border-collapse: collapse; width: 100%;">
<tr style="background-color: #f2f2f2;">
<th style="border: 1px solid #ddd; padding: 8px;">Product</th>
<th style="border: 1px solid #ddd; padding: 8px;">Price</th>
</tr>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">IronPDF</td>
<td style="border: 1px solid #ddd; padding: 8px;">$749</td>
</tr>
</table>
<table style="border-collapse: collapse; width: 100%;">
<tr style="background-color: #f2f2f2;">
<th style="border: 1px solid #ddd; padding: 8px;">Product</th>
<th style="border: 1px solid #ddd; padding: 8px;">Price</th>
</tr>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">IronPDF</td>
<td style="border: 1px solid #ddd; padding: 8px;">$749</td>
</tr>
</table>
Fonctionnalités avancées :
<img src="___PROTECTED_URL_118___" width="200" alt="Company Logo">
<div style="page-break-after: always;"></div>
<ul>
<li>First item</li>
<li>Second item</li>
</ul>
<img src="___PROTECTED_URL_118___" width="200" alt="Company Logo">
<div style="page-break-after: always;"></div>
<ul>
<li>First item</li>
<li>Second item</li>
</ul>
Testez ces éléments pour vous assurer que votre conversion HTML vers PDF fonctionne comme prévu.
Comment puis-je déboguer si le PDF ne se génère pas ?
En cas d'échec de la génération du PDF, suivez cette approche de débogage systématique :
-
Activer la journalisation :
IronPdf.Logging.Logger.EnableDebugging = true; IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt"; IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;IronPdf.Logging.Logger.EnableDebugging = true; IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt"; IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;IronPdf.Logging.Logger.EnableDebugging = True IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt" IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All$vbLabelText $csharpLabel -
Vérifier la validité du code HTML :
// Validate HTML before conversion private bool IsValidHtml(string html) { try { var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(html); return doc.ParseErrors.Count() == 0; } catch { return false; } }// Validate HTML before conversion private bool IsValidHtml(string html) { try { var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(html); return doc.ParseErrors.Count() == 0; } catch { return false; } }' Validate HTML before conversion Private Function IsValidHtml(html As String) As Boolean Try Dim doc As New HtmlAgilityPack.HtmlDocument() doc.LoadHtml(html) Return doc.ParseErrors.Count() = 0 Catch Return False End Try End Function$vbLabelText $csharpLabel -
Utilisez Chrome
DevTools: Enregistrez votre code HTML dans un fichier et ouvrez-le dans Chrome.- Appuyez sur F12 pour vérifier les erreurs JavaScript
- Vérifiez si la console présente des problèmes. Utilisez l'aperçu avant impression de Chrome pour voir le rendu.
-
Problèmes courants et solutions :
- PDF vierge : Vérifier si JavaScript nécessite un délai de rendu plus long
- Images manquantes : Assurez-vous que les chemins d'accès aux images sont absolus ou utilisez le format base64.
- Problèmes de polices : Incorporez correctement les polices.
- Problèmes de mise en page : Examiner les types de médias CSS
- Exemple minimal de test :
// Start with the simplest possible HTML var testHtml = "<h1>Test</h1>"; var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(testHtml); pdf.SaveAs("test.pdf");// Start with the simplest possible HTML var testHtml = "<h1>Test</h1>"; var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(testHtml); pdf.SaveAs("test.pdf");' Start with the simplest possible HTML Dim testHtml = "<h1>Test</h1>" Dim pdf = New ChromePdfRenderer().RenderHtmlAsPdf(testHtml) pdf.SaveAs("test.pdf")$vbLabelText $csharpLabel
Quels sont les problèmes courants rencontrés lors de l'exécution de l'application ?
Voici les problèmes les plus fréquents rencontrés par les développeurs juniors et leurs solutions :
-
"IronPdf.Exceptions.
IronPdfDeploymentException" Solution : assurez-vous que Visual C++ Runtime est installé.- Exécutez Windows Update pour obtenir les derniers environnements d'exécution.
-
Erreurs " Accès refusé "
- Ne pas enregistrer dans des répertoires protégés (C:\, Program Files)
- Utilisez
Environment.SpecialFolderpour des chemins sûrs - Vérifier les autorisations IIS pour les applications web
-
Taille des fichiers importante
- Appliquer la compression PDF :
pdf.CompressImages(90); // 90% qualitypdf.CompressImages(90); // 90% qualitypdf.CompressImages(90) ' 90% quality$vbLabelText $csharpLabel
- Appliquer la compression PDF :
-
Performances lentes
- Implémenter le rendu asynchrone pour une meilleure réactivité
- Envisagez un traitement parallèle pour plusieurs fichiers PDF.
- Utilisez judicieusement les délais de rendu
- Contenu manquant
- Les ressources externes peuvent nécessiter des URL absolues
- Le contenu JavaScript peut nécessiter des délais.
- Vérifier les identifiants réseau pour les ressources protégées
Pour les problèmes persistants, consultez le guide de dépannage complet .
À quoi ressemble le fichier PDF final ?
Le document PDF de sortie ressemblera à ceci :

Comment puis-je améliorer la qualité de mon PDF ?
Améliorez la qualité de vos fichiers PDF grâce à ces techniques Professional :
-
Rendu haute résolution :
renderer.RenderingOptions.PrintHtmlBackgrounds = true; renderer.RenderingOptions.ImageQuality = 95; // Higher quality for images renderer.RenderingOptions.DPI = 300; // Print-quality resolutionrenderer.RenderingOptions.PrintHtmlBackgrounds = true; renderer.RenderingOptions.ImageQuality = 95; // Higher quality for images renderer.RenderingOptions.DPI = 300; // Print-quality resolutionrenderer.RenderingOptions.PrintHtmlBackgrounds = True renderer.RenderingOptions.ImageQuality = 95 ' Higher quality for images renderer.RenderingOptions.DPI = 300 ' Print-quality resolution$vbLabelText $csharpLabel -
Stylisme Professional :
<style> @page { size: A4; margin: 2cm; } body { font-family: 'Segoe UI', Tahoma, sans-serif; line-height: 1.6; color: #333; } h1 { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; } </style><style> @page { size: A4; margin: 2cm; } body { font-family: 'Segoe UI', Tahoma, sans-serif; line-height: 1.6; color: #333; } h1 { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; } </style>HTML -
Ajouter des éléments visuels :
- Optimiser pour différents usages :
- Affichage à l'écran : Faible résolution (96-150), compression PDF Impression : Haute résolution (300+ dpi), couleurs CMJN
- Archivage : format PDF/A
Pourquoi le résultat pourrait-il être différent de ce qui était prévu ?
Plusieurs facteurs peuvent être à l'origine des différences de rendu entre l'aperçu HTML et la sortie PDF :
-
Types de médias CSS : Les PDF utilisent par défaut les supports d'impression. Ajouter des styles spécifiques à l'impression :
@media print { .no-print { display: none; } body { font-size: 12pt; } } -
Disponibilité des polices : Intégrez des polices personnalisées pour garantir la cohérence :
@font-face { font-family: 'MyFont'; src: url('data:font/woff2;base64,...') format('woff2'); } -
Contenu dynamique : le contenu rendu en JavaScript nécessite du temps pour se charger :
renderer.RenderingOptions.RenderDelay = 2000; // Wait 2 secondsrenderer.RenderingOptions.RenderDelay = 2000; // Wait 2 secondsrenderer.RenderingOptions.RenderDelay = 2000 ' Wait 2 seconds$vbLabelText $csharpLabel -
Différences entre navigateurs : IronPDF utilise Chromium, effectuez donc un test sous Chrome pour obtenir un aperçu précis. Découvrez le moteur de rendu Chrome .
- Résolution et mise à l'échelle : La résolution DPI du moniteur diffère de la résolution DPI d'impression. Utilisez les paramètres de la fenêtre d'affichage pour un rendu cohérent.
Pour un rendu parfait au pixel près, suivez le guide des bonnes pratiques de conversion HTML vers PDF .
Quelles sont les prochaines étapes après ce tutoriel ?
Le tutoriel ci-dessus explique comment créer un PDF à partir de HTML en utilisant la bibliothèque IronPDF.
Pour plus d'informations, visitez le Site officiel IronPDF. La bibliothèque fournit également d'autres fonctionnalités qui supportent des fichiers PDF entièrement personnalisables, fusionner et diviser des fichiers par programmation, ou simplement vérifier des exemples de codes démontrant diverses fonctionnalités.
Vous pouvez l'évaluer en utilisant la clé d'essai de 30 jours. Il y a actuellement une offre excellente où vous pouvez obtenir cinq produits Iron Software pour le prix de seulement deux. Visitez ce Informations sur la licence IronPDF pour plus d'informations sur les licences.
Quelles fonctionnalités avancées devrais-je apprendre ensuite ?
Après avoir maîtrisé la conversion HTML vers PDF de base, explorez ces fonctionnalités avancées :
-
Formulaires PDF : Créer des formulaires à remplir pour la collecte de données :
// Create interactive form fields pdf.Form.Fields.Add(new PdfTextField("name", "Enter your name", 100, 100));// Create interactive form fields pdf.Form.Fields.Add(new PdfTextField("name", "Enter your name", 100, 100));' Create interactive form fields pdf.Form.Fields.Add(New PdfTextField("name", "Enter your name", 100, 100))$vbLabelText $csharpLabel -
Signatures numériques : Elles renforcent la sécurité et l'authenticité des documents.
- Optimisation des performances :
- Rendu asynchrone pour les applications web
- Traitement par lots de plusieurs documents
- Streaming économe en mémoire
Commencez par les fonctionnalités les plus pertinentes pour les exigences de votre projet.
Comment passer de la phase de test à la production ?
Le passage de la phase d'essai à la production comprend plusieurs étapes importantes :
-
Choisissez la licence appropriée :
- Lite : Un seul développeur, un seul projet
- De Plus : Un seul développeur, plusieurs projets
- Professional : Petites équipes (jusqu'à 3 développeurs)
- Illimité : Équipes Enterprise
- Appliquez votre clé de licence :
// In application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";// In application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";$vbLabelText $csharpLabel
// Or via configuration // appsettings.json (for .NET Core) { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
3. **Suppression des filigranes d'essai** : Les versions sous licence suppriment automatiquement les filigranes d'essai de tous les PDF générés.
4. **Considérations relatives aux performances** :
- Tester avec des données à l'échelle de la production
- Mettre en œuvre [une gestion des erreurs appropriée](/troubleshooting/engineering-support-for-ironpdf/)
- Configurer [la journalisation pour la surveillance](/how-to/custom-logging/)
5. **Liste de contrôle du déploiement** :
- Vérifier [les exigences du serveur](/get-started/windows/)
- Tester sur [la plateforme de déploiement](/get-started/azure/) cible
- Configurer [IIS le cas échéant](/troubleshooting/ironpdf-and-iis/)
- Mettre en place [une intégration continue](/get-started/installation-overview/)
Pour obtenir des informations détaillées sur les licences, consultez la [FAQ relative aux licences](/licensing/) .
### Où puis-je trouver des exemples plus complexes ?
Approfondissez vos connaissances sur IronPDF grâce à ces ressources complètes :
1. **[Bibliothèque d'exemples de code](/examples/)** :
- [Génération de factures](/how-to/csharp-pdf-reports/)
- [Création de rapports](/how-to/csharp-pdf-reports/)
- [Traitement par lots](/examples/parallel/)
2. **[Série de tutoriels](/tutorials/)** :
- [Guide complet de conversion HTML vers PDF](/tutorials/html-to-pdf/)
- [Création de PDF à partir de zéro](/tutorials/csharp-create-pdf-complete-tutorial/)
- [Édition PDF avancée](/tutorials/csharp-edit-pdf-complete-tutorial/)
3. **[Guides d'intégration](/how-to/html-string-to-pdf/)** :
- [Intégration ASP.NET MVC](/how-to/cshtml-to-pdf-mvc-core/)
- [Applications Blazor](/how-to/blazor-tutorial/)
- [Déploiement Azure](/how-to/azure/)
4. **[Documentation de l'API](/object-reference/api/)** :
- Références de cours complètes
- Signatures et paramètres des méthodes
- Extraits de code pour chaque fonctionnalité
5. **Ressources communautaires** :
- Balise [Stack Overflow IronPDF](https://stackoverflow.com/questions/tagged/ironpdf)
- [Exemples GitHub](https://github.com/iron-software)
- Assistance technique via le [centre d'aide](/)
Commencez par les exemples les plus proches de votre cas d'utilisation et explorez progressivement des fonctionnalités plus avancées selon vos besoins.Questions Fréquemment Posées
Comment puis-je convertir HTML en PDF en C# ?
Vous pouvez utiliser la méthode RenderHtmlAsPdf d'IronPDF pour convertir des chaînes HTML en PDF. Créez simplement un objet HtmlToPdf et appelez la méthode pour rendre le HTML dans un document PDF.
Quelles étapes sont impliquées dans la configuration d'un projet Visual Studio pour la génération de PDF ?
Commencez par ouvrir Visual Studio 2019, sélectionnez 'Créer un nouveau projet', choisissez 'Windows Forms App', et définissez votre nom de projet. Ensuite, installez IronPDF via NuGet pour commencer à intégrer les capacités de génération de PDF.
Comment installer une bibliothèque de génération de PDF dans Visual Studio ?
Vous pouvez installer IronPDF en naviguant jusqu'à la Console du gestionnaire de packages dans Visual Studio et en exécutant la commande : Install-Package IronPDF.
Quels composants doivent être inclus dans le formulaire pour générer des PDF ?
Incluez une étiquette pour guider, une zone de texte enrichi pour l'entrée HTML, et un bouton étiqueté 'Convertir' que les utilisateurs cliqueront pour générer le PDF.
Comment implémenter le code backend pour la création de fichier PDF ?
Utilisez IronPDF pour déclarer un objet HtmlToPdf. Récupérez l'entrée HTML d'une zone de texte, invitez l'utilisateur à enregistrer le PDF, et convertissez le HTML avec la méthode RenderHtmlAsPdf.
Quelle est la fonction de l'objet HtmlToPdf dans la bibliothèque PDF ?
L'objet HtmlToPdf dans IronPDF est utilisé pour transformer le contenu HTML en documents PDF en utilisant les fonctionnalités complètes de conversion de la bibliothèque.
Comment puis-je vérifier que mon projet de génération de PDF fonctionne correctement ?
Exécutez le projet dans Visual Studio, entrez le HTML dans la RichTextBox, et cliquez sur 'Convertir'. Ensuite, utilisez le SaveFileDialog pour sélectionner un emplacement pour le fichier PDF, en vous assurant que la conversion est réussie.
Quelles fonctionnalités avancées offre la bibliothèque PDF ?
IronPDF permet de créer des PDF entièrement personnalisables, ainsi que de fusionner et de diviser des fichiers par programmation. La bibliothèque offre également des exemples de code pour diverses fonctionnalités.
Puis-je essayer la bibliothèque PDF avant de l'acheter ?
Oui, une clé d'essai de 30 jours pour IronPDF est disponible sur leur site officiel, vous permettant d'explorer ses fonctionnalités avant de vous engager à l'achat.
Où puis-je trouver les détails de licence pour la bibliothèque PDF ?
Les informations détaillées sur les licences pour IronPDF sont disponibles sur la page d'information sur les licences d'IronPDF sur leur site Web, y compris les options et les offres actuelles.
IronPDF est-il compatible avec .NET 10 ?
Oui, IronPDF prend déjà en charge toutes les versions modernes de .NET et est compatible avec la prochaine version .NET 10, prévue pour novembre 2025. Il fonctionne immédiatement avec les projets .NET 10, sans aucune manipulation supplémentaire. (ironpdf.com/blog/using-ironpdf/5-steps-to-generate-a-pdf-file-in-c-sharp/)



