UTILISATION D'IRONPDF

Créer un PDF en C# à partir d'un fichier HTML

Jordi Bardia
Jordi Bardia
janvier 24, 2022
Mise à jour janvier 20, 2024
Partager:

IronPDF convertit par programme des documents HTML en documents PDF.

Comment créer un PDF en C# - Exemple de conversion HTML en PDF

Un simple exemple de cette technique peut être téléchargé et visualisé comme un exemple PDF.

Le code source de cet article entier est disponible pour C# comme un Téléchargement du code source du projet C# HTML vers PDF.

Le tutoriel suivant vous guidera à travers le processus d'utilisation de IronPDF comme générateur de PDF en C#. Il couvre les bases ainsi que de nombreux sujets avancés de C# PDF.

Présentation de HTML à PDF

Cette démo vous présente des exemples d'utilisation d'IronPDF. Demander des démonstrations d'autres cas d'utilisation de Iron Software.

La démonstration se compose des exemples Hello World, RenderHtmlAsPdf et RenderUrlAsPdf. Tous les exemples peuvent être trouvés dans les projets correspondants de la solution IronPDF Demo.

Étape 1 : Installation

Vous pouvez installer IronPDF soit via NuGet. Le nom du package est IronPDF NuGet Package.

Ou vous pouvez utiliser le Téléchargement Direct de la Bibliothèque.

Étape 2 : Hello World

Une fois IronPDF installé et référencé dans votre projet, vous pouvez commencer à l'utiliser immédiatement en tapant quelques chaînes de caractères :

var ChromePdfRenderer = new ChromePdfRenderer();  // new instance of ChromePdfRenderer
var ChromePdfRenderer = new ChromePdfRenderer();  // new instance of ChromePdfRenderer
Dim ChromePdfRenderer As New ChromePdfRenderer() ' new instance of ChromePdfRenderer
$vbLabelText   $csharpLabel

puis si vous devez transformer du HTML en PDF

// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
' html to turn into pdf
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"
' turn html to pdf
Dim pdf = ChromePdfRenderer.RenderHtmlAsPdf(html)
' save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))
$vbLabelText   $csharpLabel

ou si vous voulez transformer une page web en fichier PDF

// uri of the page to turn into pdf
var uri = new Uri("http://www.google.com/ncr");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
// uri of the page to turn into pdf
var uri = new Uri("http://www.google.com/ncr");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
' uri of the page to turn into pdf
Dim uri As New Uri("http://www.google.com/ncr")
' turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri)
' save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
$vbLabelText   $csharpLabel

Et c'est tout !

Les résultats correspondants sont les suivants :

Créer un PDF en C# à partir d'un fichier HTML, Figure 1 : Le résultat de la conversion de HTML en PDF

Le résultat de la conversion du HTML en PDF**

Créer un PDF en C# à partir d'un fichier HTML, Figure 2 : Le résultat de la conversion d'une page web en PDF

Le résultat de la conversion d'une page web en PDF

L'exemple de code se trouve dans le projet IronPDFDemo.HelloWorld.

Étape 3 : RenderHtmlAsPdf

Exemple 1

Pour évaluer un exemple plus concret, imaginons une facture HTML qui doit être transformée en PDF. Voici le code qui permet de le faire.

Remarque : Vous pouvez trouver le fichier HTML de la facture dans le projet IronPDFDemo.DemoWebSite (~/Static/TestInvoice1.html). Veuillez noter que la facture comporte une feuille de style CSS personnalisée pour le type de média "impression".

La facture source se présente comme suit dans le navigateur :

Créer un PDF en C# à partir d'un fichier HTML, Figure 4 :


Pour transformer ce fichier en fichier PDF, on utilise des codes similaires à ceux de l'exemple HelloWorld ci-dessus, la différence étant le fichier HTML source.

// read html from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var ChromePdfRenderer = new ChromePdfRenderer();
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
// read html from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var ChromePdfRenderer = new ChromePdfRenderer();
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
' read html from file
Dim html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"))
Dim ChromePdfRenderer As New ChromePdfRenderer()
Dim pdf = ChromePdfRenderer.RenderHtmlAsPdf(html)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"))
$vbLabelText   $csharpLabel

Le résultat est le suivant :

Créer un PDF en C# à partir d'un fichier HTML, Figure 5 : Générer un fichier PDF à partir de HTML

Générer un fichier PDF à partir de HTML

Ça a l'air super ! Vous trouverez l'exemple de code dans le projet IronPDFDemo.RenderHtmlAdPdfDemo.

Voir également cette question sur Comment utiliser des documents HTML ou des chaînes avec des tableaux d'octets dans IronPDF

Exemple 2

Cette section permettra de personnaliser le PDF résultant de l'exemple 1. Par exemple, elle ajoutera des marges personnalisées, un en-tête avec le titre du document, un pied de page avec la date de création et les numéros de page, ainsi que des feuilles de style CSS personnalisées pour le type de média "impression" d'une facture standard. Pour ce faire, une instance de ChromePdfRenderOptions est initialisée et passée dans le constructeur ChromePdfRenderer.

var pdfRenderingOptions= new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
var pdfRenderingOptions= new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
Dim pdfRenderingOptions= New ChromePdfRenderOptions() With {
	.MarginTop = 50,
	.MarginBottom = 50,
	.TextHeader = New TextHeaderFooter() With {
		.CenterText = "{pdf-title}",
		.DrawDividerLine = True,
		.FontSize = 16
	},
	.TextFooter = New TextHeaderFooter() With {
		.LeftText = "{date} {time}",
		.RightText = "Page {page} of {total-pages}",
		.DrawDividerLine = True,
		.FontSize = 14
	},
	.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
}
Dim chromePdfRenderer As New ChromePdfRenderer(pdfRenderingOptions)
$vbLabelText   $csharpLabel

Astuce : Au lieu de passer des options en tant que paramètre dans le constructeur, vous pouvez définir le champ correspondant pour une instance de ChromePdfRenderer :

var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
Dim chromePdfRenderer As New ChromePdfRenderer()
chromePdfRenderer.RenderingOptions = pdfRenderingOptions
$vbLabelText   $csharpLabel

Note : Les fonctionnalités d'en-tête et de pied de page prennent en charge la fusion, ce qui signifie que tous les champs de fusion ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}) peuvent être remplis avec les données correspondantes.

Le reste du code est identique à celui de l'exemple 1. Le résultat est le suivant :

Créer un PDF en C# à partir d'un Fichier HTML, Figure 6 : Générer une facture avec en-tête et pied de page

Générer une facture avec en-tête et pied de page

Les marges personnalisées, les en-têtes, les pieds de page et les feuilles de style CSS pour le type de média "impression" sont maintenant en place. Vous trouverez l'exemple de code dans le projet IronPDFDemo.RenderHtmlAdPdfDemo. Plus de paramètres peuvent être trouvés dans la référence de l'API IronPDF.

Étape 4 : RenderUrlAsPdf

Mise en place

Pour exécuter les échantillons de cette section, vous devez héberger localement le site IronPDFDemo.DemoWebSite. Pour ce faire, dans IIS Express :

  1. Naviguer vers DemoWebSite

  2. Clic droit > Définir comme projet de démarrage

  3. Démarrer sans débogage (Ctrl+F5)

  4. Accédez à votre {baseurl}/Static/TestInvoice1.html pour vous assurer qu'il fonctionne. Ceci est l'URL http://localhost:51169/Static/TestInvoice1.html (sera la même pour vous si vous ne modifiez pas les paramètres du projet correspondants).

Exemple 1

Dans cette section, la facture hébergée de DemoWebSite est convertie en PDF en utilisant le même code que celui de l'exemple HelloWorld. La différence réside dans l'URL hébergée :

var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
Dim uri As New Uri("http://localhost:51169/Static/TestInvoice1.html")
Dim urlToPdf = New ChromePdfRenderer()
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"))
$vbLabelText   $csharpLabel

Le résultat est le suivant :

Créer un PDF en C# à partir d'un fichier HTML, Figure 7 : Générer un site web hébergé en PDF

Générer un site web hébergé en PDF

C'est très bien et ça ressemble à ce que l'on attendait. Vous trouverez l'exemple de code dans le projet IronPDFDemo.RenderUrlAsPdfDemo.

Exemple 2

De nombreux sites web sont souvent protégés par une méthode d'authentification. Cette section utilise un nom d'utilisateur et un mot de passe fournis pendant le processus de rendu d'un fichier PDF avec quelques personnalisations : marges personnalisées, un en-tête avec le titre du document, un pied de page avec la date de création et les pages, et un CSS personnalisé pour le type de média "impression". L'URL pour la facture est http://localhost:51169/Invoice.

L'accès à http://localhost:51169/Invoice aboutit au formulaire « Authentification requise » :

Créer un PDF en C# à partir d'un fichier HTML, Figure 8 : Formulaire nécessitant une authentification

Formulaire d'authentification requis

Note : Les identifiants sont "testUser"/"testPassword".

Comment contourner l'authentification ? En définissant HttpLoginCredentials :

var uri = new Uri("http://localhost:51169/Invoice");
var urlToPdf = new ChromePdfRenderer
{
    PrintOptions = new ChromePdfRenderer()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },
    // setting login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
var uri = new Uri("http://localhost:51169/Invoice");
var urlToPdf = new ChromePdfRenderer
{
    PrintOptions = new ChromePdfRenderer()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },
    // setting login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
Dim uri As New Uri("http://localhost:51169/Invoice")
Dim urlToPdf = New ChromePdfRenderer With {
	.PrintOptions = New ChromePdfRenderer() With {
		.MarginTop = 50,
		.MarginBottom = 50,
		.TextHeader = New TextHeaderFooter() With {
			.CenterText = "{pdf-title}",
			.DrawDividerLine = True,
			.FontSize = 16
		},
		.TextFooter = New TextHeaderFooter() With {
			.LeftText = "{date} {time}",
			.RightText = "Page {page} of {total-pages}",
			.DrawDividerLine = True,
			.FontSize = 14
		},
		.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
	},
	.LoginCredentials = New HttpLoginCredentials() With {
		.NetworkUsername = "testUser",
		.NetworkPassword = "testPassword"
	}
}
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"))
$vbLabelText   $csharpLabel

Note : La même personnalisation est utilisée que pour l'Exemple2 de ChromePdfRenderer.

Le résultat est le suivant :

Créer un PDF en C# à partir d'un fichier HTML, Figure 9 : Générer un site HTML avec des identifiants vers un fichier PDF

Générer un site HTML avec des identifiants vers un fichier PDF

Tout est en place. Vous trouverez un exemple de code dans le projet IronPDFDemo.RenderUrlAsPdfDemo. Si vous vous demandez à quoi ressemblerait le résultat sans HttpLoginCredentials, le voici :

Créer un PDF en C# à partir d'un fichier HTML, Figure 10 : Générer un fichier PDF vide sans identifiants

Générer un fichier PDF vide sans identifiants

Voir aussi le Tutoriel .NET HTML vers PDF de Jean

En outre, IronPDF peut également interagir avec le format PDF de différentes manières :

Jordi Bardia
Ingénieur logiciel
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
< PRÉCÉDENT
Générer des fichiers PDF en C#
SUIVANT >
Comment afficher des fichiers PDF en ASP.NET à l'aide de C# ; et IronPDF