Convertire un documento HTML in un documento PDF in C#

Categoria del blog: ImagingPDF.NET

08.04.2026

La conversione di una pagina HTML in un documento PDF in C# è un'operazione comune, spesso utilizzata per creare fatture, report, contratti e altri documenti aziendali da modelli HTML. La conversione di una pagina HTML in un documento PDF in C# è inoltre essenziale per creare documenti statici, portatili e pronti per la stampa da contenuti web dinamici.

Il processo di conversione di una pagina HTML in un documento PDF prevede i seguenti passaggi:

La specifica dello standard HTML5 (https://html.spec.whatwg.org/print.pdf) contiene 1553 pagine.

La specifica dello standard CSS2 (https://www.w3.org/TR/CSS22/css2.pdf) contiene 426 pagine.

La specifica dello standard JavaScript (https://ecma-international.org/wp-content/uploads/ECMA-262_16th_edition_june_2025.pdf) contiene 835 pagine.

I passaggi per convertire HTML in PDF e le informazioni sulle specifiche HTML5, CSS2 e JavaScript sono forniti sopra per chiarire che, in generale, la conversione da HTML a PDF è un'operazione molto complessa se implementata da zero.

Allo stesso tempo, questa operazione complessa è già implementata nei moderni browser web, che visualizzano le pagine HTML perfettamente e possono salvare la pagina HTML renderizzata in un file PDF. Pertanto, sorge spontanea una domanda: è possibile utilizzare un browser web in un'applicazione C# per convertire una pagina HTML in un documento PDF?

In questo articolo, vedremo come convertire una pagina HTML di qualsiasi complessità in un documento PDF in un'applicazione C# in modo completamente gratuito e con la massima qualità utilizzando Chromium.

Chromium è un progetto di browser web open source che viene utilizzato principalmente come base per la maggior parte dei browser web moderni, tra cui Google Chrome, Microsoft Edge, Opera e altri. È progettato pensando a velocità, sicurezza e stabilità e presenta contributi significativi da parte di sviluppatori di Google, Microsoft e altre aziende.


Conversione di una pagina HTML in un documento PDF in C# utilizzando la riga di comando di Chrome

Il modo più semplice per convertire una pagina HTML in un documento PDF è eseguire il seguente comando di Chrome dalla riga di comando:
"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"

Ecco una breve descrizione dei parametri utilizzati nella riga di comando di Chrome:

Il comando precedente può essere eseguito dalla riga di comando di Windows/Linux/maOS o dal codice C#.

Ecco il codice C# che dimostra come convertire una pagina HTML in un documento PDF in un'applicazione console .NET utilizzando 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.");
        }
    }
}


Questo metodo di conversione può essere utilizzato se il browser web Chrome è installato sul computer e si conosce il percorso del file "chrome.exe".

L'applicazione .NET risultante è di piccole dimensioni perché non contiene librerie aggiuntive e si basa interamente sul browser web Chrome.


Conversione di una pagina HTML in un documento PDF in C# utilizzando il pacchetto NuGet CefSharp.OffScreen

Il pacchetto NuGet CefSharp.OffScreen contiene una versione compilata della libreria CefSharp e consente agli sviluppatori di eseguire un'istanza completa del browser web Chromium in background senza un'interfaccia utente visibile.

Se si desidera utilizzare la libreria CefSharp.OffScreen in un'applicazione .NET Framework, è sufficiente aggiungere un riferimento al pacchetto NuGet CefSharp.OffScreen all'applicazione .NET Framework.

Se si desidera utilizzare la libreria CefSharp.OffScreen in un'applicazione .NET Core, è sufficiente aggiungere un riferimento al pacchetto NuGet CefSharp.OffScreen.NETCore all'applicazione .NET Core.

Ecco il codice C# per un'applicazione console .NET che converte una pagina HTML in un documento PDF utilizzando la libreria 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);
            }
        }
    }
}


Questo metodo di conversione è indipendente dal browser web Chrome e, in questo caso, non è necessario compilare CefSharp autonomamente, poiché i creatori del pacchetto NuGet CefSharp.OffScreen lo hanno già fatto.

L'applicazione .NET risultante è completamente autonoma e di grandi dimensioni (poco più di 300 MB) perché contiene i file della libreria CefSharp.


Conversione di una pagina HTML in un documento PDF in C# utilizzando la libreria CefSharp

CefSharp è un progetto open source che fornisce un wrapper .NET per il Chromium Embedded Framework (CEF). CefSharp consente agli sviluppatori di incorporare un browser web basato su Chromium completamente funzionale direttamente in applicazioni desktop C# o VB.NET.

Il repository CefSharp si trova su GitHub: https://github.com/cefsharp/cefsharp

Il repository contiene 15 progetti, tra cui un'applicazione console di esempio, un'applicazione WinForms di esempio e un'applicazione WPF di esempio.

Prova a eseguire l'applicazione WPF di esempio (progetto "CefSharp.Wpf.Example.netcore") e vedrai un'applicazione WPF con navigazione tra le pagine simile a Chrome. L'applicazione WPF include la navigazione tramite link, stili CSS e codice JavaScript: l'esperienza è identica a quella di Chrome. Nel menu principale dell'applicazione, puoi selezionare il menu "Test => Stampa scheda corrente in PDF" e salvare la pagina HTML renderizzata come file PDF.


Questo metodo di conversione è indipendente dal browser web Chrome, ma dovrai compilare manualmente CefSharp dal codice sorgente, operazione che viene eseguita automaticamente durante la compilazione del progetto CefSharp in Visual Studio.

L'applicazione .NET risultante (il progetto "CefSharp.Wpf.Example.netcore") è completamente autonoma e ha dimensioni considerevoli (poco più di 400 MB) perché contiene i file della libreria CefSharp.


Elaborazione di documenti PDF con VintaSoft Imaging .NET SDK

VintaSoft ha scelto di non includere la funzionalità per la conversione di pagine HTML in PDF documenti nei suoi SDK perché il compito è molto complesso ed è già implementato nei moderni browser web.

Allo stesso tempo, VintaSoft Imaging .NET SDK e VintaSoft PDF .NET Plug-in consentono di creare, visualizzare, verificare, stampare, annotare, modificare, proteggere, firmare, ottimizzare, comprimere, convertire e salvare documenti PDF e PDF/A in Windows, Linux e macOS.

Di conseguenza, l'SDK VintaSoft può essere utilizzato per elaborare il documento PDF creato, ovvero:

Informazioni dettagliate sulle funzionalità di elaborazione dei documenti PDF tramite VintaSoft Imaging .NET SDK + VintaSoft PDF .NET Plug-in è disponibile qui: https://www.vintasoft.com/it/vspdf-dotnet-index.html