UTILISATION D'IRONPDF

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

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 de HTML en PDF

Un exemple simple de cette technique peut êtretéléchargé et visualisé en tant que PDF Exemple.

Le code source de l'ensemble de cet article est disponible pour C# sous la forme d'un fichierC# HTML to PDF Project Source Code Download.

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

Présentation de HTML à PDF

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

La démo se compose de Hello World,RenderHtmlAsPdf (RenduHtmlAsPdf) etRenderUrlAsPdf (RenderUrlAsPdf) exemples. 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 paquet est Paquet NuGet IronPDF.

Vous pouvez également 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
VB   C#

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"))
VB   C#

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"))
VB   C#

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 de 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.

Note: Vous pouvez trouver la facture html sous 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"))
VB   C#

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

Très bien! Vous trouverez l'exemple de code dans le projet IronPDFDemo.RenderHtmlAdPdfDemo.

Voir aussi cette question surComment utiliser des documents HTML ou des chaînes de caractères 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 de 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)
VB   C#

Astuce: Au lieu de passer les options en 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
VB   C#

Note: L'en-tête et le pied de page sont dotés d'une fonctionnalité de fusion, ce qui signifie que tous les champs de fusion({page}, {nombre total de pages}, {url}, {date}, {temps}, {titre html}, {titre du pdf}) peuvent être alimentées 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. D'autres paramètres peuvent être trouvés dans leRé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. Naviguez jusqu'à votre{baseurl}/Static/TestInvoice1.html pour vérifier qu'il fonctionne. Voici l'URL http://localhost:51169/Static/TestInvoice1.html (sera le même pour vous si vous ne modifiez pas les paramètres correspondants du projet).

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"))
VB   C#

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 de la facture est la suivante : http://localhost:51169/Facture.

Accéder à http://localhost:51169/Invoice aboutit au formulaire "Authentification requise" :

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

Formulaire d'authentification requis

Note: Les informations d'identification 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"))
VB   C#

Note: La même personnalisation est utilisée que pour ChromePdfRenderer Example2.

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 informations d'identification pour 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 informations d'identification

Générer un fichier PDF vide sans informations d'identification

Voir également le site de Jean.NET HTML to PDF Tutorial

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

< 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