Convertir un document HTML en document PDF en C#

Catégorie du blog : ImageriePDF.NET

08.04.2026

Convertir une page HTML en document PDF en C# est une tâche courante, souvent utilisée pour créer des factures, des rapports, des contrats et d'autres documents commerciaux à partir de modèles HTML. Cette conversion est également essentielle pour créer des documents statiques, portables et prêts à imprimer à partir de contenu web dynamique.

Le processus de conversion d'une page HTML en document PDF comprend les étapes suivantes:

La spécification de la norme HTML5 (https://html.spec.whatwg.org/print.pdf) contient 1553 pages.

Spécification de la norme CSS2 (https://www.w3.org/TR/CSS22/css2.pdf) contient 426 pages.

La spécification de la norme JavaScript (https://ecma-international.org/wp-content/uploads/ECMA-262_16th_edition_june_2025.pdf) contient 835 pages.

Les étapes de conversion HTML vers PDF et les informations relatives aux spécifications HTML5, CSS2 et JavaScript sont fournies ci-dessus afin de bien montrer que, de manière générale, la conversion HTML vers PDF est une tâche très complexe si elle est réalisée manuellement.

Parallèlement, cette tâche complexe est déjà implémentée dans les navigateurs web modernes, qui affichent parfaitement les pages HTML et peuvent les enregistrer dans un fichier PDF. Dès lors, une question légitime se pose: est-il possible d’utiliser un navigateur web dans une application C# pour convertir une page HTML en document PDF?

Dans cet article, nous verrons comment convertir gratuitement et avec une qualité optimale une page HTML, quelle que soit sa complexité, dans une application C# grâce à Chromium.

Chromium est un projet de navigateur web open source qui sert principalement de base à la plupart des navigateurs web modernes, notamment Google Chrome, Microsoft Edge, Opera, etc. Il est conçu pour offrir rapidité, sécurité et stabilité, et bénéficie des contributions importantes de développeurs de Google, Microsoft et d'autres entreprises.


Conversion d'une page HTML en document PDF en C# à l'aide de la ligne de commande Chrome

La méthode la plus simple pour convertir une page HTML en document PDF consiste à exécuter la commande Chrome suivante depuis la ligne de commande:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --headless --disable-gpu —run-all-compositor-stages-before-draw --no-margins --printBackground=true --no-pdf-header-footer --print-to-pdf="D:\result.pdf" "https://www.vintasoft.com/index.html"

Voici une brève description des paramètres utilisés dans la ligne de commande Chrome:

La commande ci-dessus peut être exécutée depuis l'invite de commandes Windows/Linux/macOS ou depuis du code C#.

Voici un exemple de code C# montrant comment convertir une page HTML en document PDF dans une application console .NET utilisant Chrome:
using System.Diagnostics;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string chromePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe";
            string sourceUrl = "https://www.vintasoft.com/index.html";
            string resultPdfFilePath = @"D:\result.pdf";
            string chromeArgsTemplate =
                "--headless --no-pdf-header-footer --no-margins --disable-gpu --run-all-compositor-stages-before-draw --printBackground=true --print-to-pdf=\"{0}\" {1}";
            
            ProcessStartInfo startInfo = new ProcessStartInfo
            {
                FileName = chromePath,
                Arguments = string.Format(chromeArgsTemplate, resultPdfFilePath, sourceUrl),
                UseShellExecute = false,
                CreateNoWindow = false
            };
            using (Process process = Process.Start(startInfo))
            {
                process.WaitForExit();
            }
            
            Console.WriteLine("HTML page is converted to the PDF document.");
        }
    }
}


Cette méthode de conversion peut être utilisée si le navigateur web Chrome est installé sur votre ordinateur et que vous connaissez le chemin d'accès au fichier "chrome.exe".

L'application .NET résultante est de petite taille car elle ne contient aucune bibliothèque supplémentaire et repose entièrement sur le navigateur web Chrome.


Conversion d'une page HTML en document PDF en C# à l'aide du package NuGet CefSharp.OffScreen

Le package NuGet CefSharp.OffScreen contient une version compilée de la bibliothèque CefSharp et permet aux développeurs d'exécuter une instance complète du navigateur web Chromium en arrière-plan, sans interface utilisateur visible.

Pour utiliser la bibliothèque CefSharp.OffScreen dans une application .NET Framework, ajoutez simplement une référence au package NuGet CefSharp.OffScreen à l'application .NET Framework.

Pour utiliser la bibliothèque CefSharp.OffScreen dans une application .NET Core, ajoutez simplement une référence au package NuGet CefSharp.OffScreen.NETCore à l'application .NET Core.

Voici le code C# d'une application console .NET qui convertit une page HTML en document PDF à l'aide de la bibliothèque CefSharp.OffScreen:
using CefSharp;
using CefSharp.OffScreen;
using System;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string sourceUrl = "https://www.vintasoft.com/index.html";
            string resultPdfFilePath = @"D:\result.pdf";
            Task task = ConvertHtmlToPdfUsingCefSharpOffScreen(sourceUrl, resultPdfFilePath);
            task.Wait();
            Console.WriteLine("HTML page is converted to the PDF document.");
            Console.ReadKey();
        }

        static async Task ConvertHtmlToPdfUsingCefSharpOffScreen(string url, string pdfPath)
        {
            // if CEF is not initialized
            if (Cef.IsInitialized == null || Cef.IsInitialized == false)
            {
                // create CEF settings
                CefSettings settings = new CefSettings();
                // initialize CEF
                Cef.Initialize(settings);
            }

            // create Chromium web browser
            using (ChromiumWebBrowser browser = new ChromiumWebBrowser(url))
            {
                // wait while page will be loaded
                await browser.WaitForInitialLoadAsync();

                // create PDF print settings
                PdfPrintSettings printSettings = new PdfPrintSettings
                {
                    MarginType = CefPdfPrintMarginType.None,
                    PrintBackground = true,
                    Landscape = false,
                    Scale = 1.0,
                    PreferCssPageSize = true,
                    DisplayHeaderFooter = false
                };

                // print web page to a PDF file
                await browser.PrintToPdfAsync(pdfPath, printSettings);
            }
        }
    }
}


Cette méthode de conversion est indépendante du navigateur web Chrome et, dans ce cas, il n'est pas nécessaire de compiler CefSharp vous-même, car les créateurs du package NuGet CefSharp.OffScreen l'ont déjà fait.

L'application .NET résultante est entièrement autonome et volumineuse (un peu plus de 300 Mo) car elle contient des fichiers de bibliothèque CefSharp.


Conversion d'une page HTML en document PDF en C# à l'aide de la bibliothèque CefSharp.

CefSharp est un projet open source qui fournit un wrapper .NET pour le framework Chromium Embedded (CEF). CefSharp permet aux développeurs d'intégrer un navigateur web Chromium entièrement fonctionnel directement dans des applications de bureau C# ou VB.NET.

Le dépôt CefSharp est situé sur GitHub: https://github.com/cefsharp/cefsharp

Le dépôt contient 15 projets, dont un exemple d'application console, un exemple d'application WinForms et un exemple d'application WPF.

Essayez d'exécuter l'exemple d'application WPF (projet "CefSharp.Wpf.Example").En exécutant `netcore`, vous verrez une application WPF avec une navigation similaire à celle de Chrome. Cette application WPF inclut une navigation par liens, des styles CSS et du code JavaScript; son utilisation est identique à celle de Chrome. Dans le menu principal de l'application, vous pouvez sélectionner "Tests => Imprimer l'onglet actuel au format PDF" et enregistrer la page HTML rendue au format PDF.


Cette méthode de conversion est indépendante du navigateur web Chrome, mais vous devrez compiler manuellement CefSharp à partir du code source, ce qui est fait automatiquement lors de la compilation du projet CefSharp dans Visual Studio.

L'application .NET résultante (le projet "CefSharp.Wpf.Example.netcore") est totalement autonome et volumineuse (un peu plus de 400 Mo) car elle contient les fichiers de la bibliothèque CefSharp.


Traitement des documents PDF avec le VintaSoft Imaging .NET SDK

VintaSoft a choisi de ne pas inclure cette fonctionnalité pour la conversion de pages HTML en documents PDF dans ses SDK, car cette tâche est très complexe et déjà implémentée dans les navigateurs web modernes.

Parallèlement, les VintaSoft Imaging .NET SDK et VintaSoft PDF .NET Plug-in vous permettent de créer, visualiser, vérifier, imprimer, annoter, modifier, protéger, signer, optimiser, compresser, convertir et enregistrer des documents PDF et PDF/A sous Windows, Linux et macOS.

Ainsi, le SDK VintaSoft peut être utilisé pour traiter le document PDF créé, à savoir:

Des informations détaillées sur les capacités de traitement des documents PDF à l'aide de VintaSoft Imaging .NET SDK + VintaSoft PDF .NET Plug-in sont disponibles ici : https://www.vintasoft.com/fr/vspdf-dotnet-index.html