Converter documento HTML em documento PDF em C#

Categoria do blog: ImagensPDF.NET

08.04.2026

Converter uma página HTML em um documento PDF em C# é uma tarefa comum, frequentemente usada para criar faturas, relatórios, contratos e outros documentos comerciais a partir de modelos HTML. Essa conversão também é essencial para criar documentos estáticos, portáteis e prontos para impressão a partir de conteúdo web dinâmico.

O processo de conversão de uma página HTML em um documento PDF envolve as seguintes etapas:

A especificação do padrão HTML5 (https://html.spec.whatwg.org/print.pdf) contém 1553 páginas.

A especificação do padrão CSS2 (https://www.w3.org/TR/CSS22/css2.pdf) contém 426 páginas.

A especificação do padrão JavaScript (https://ecma-international.org/wp-content/uploads/ECMA-262_16th_edition_june_2025.pdf) contém 835 páginas.

As etapas para converter HTML em PDF e informações sobre as especificações de HTML5, CSS2 e JavaScript são fornecidas acima para deixar claro que, em geral, converter HTML em PDF é uma tarefa muito complexa se implementada do zero.

Ao mesmo tempo, essa tarefa complexa já está implementada em navegadores modernos, que renderizam páginas HTML perfeitamente e podem salvar a página HTML renderizada em um arquivo PDF. Portanto, surge uma pergunta razoável: é possível usar um navegador em um aplicativo C# para converter uma página HTML em um documento PDF?

Neste artigo, veremos como converter uma página HTML de qualquer complexidade em um documento PDF em um aplicativo C# de forma totalmente gratuita e com a máxima qualidade usando o Chromium.

O Chromium é um projeto de navegador de código aberto que é usado principalmente como base para a maioria dos navegadores modernos, incluindo Google Chrome, Microsoft Edge, Opera e outros. Ele foi projetado com foco em velocidade, segurança e estabilidade, e conta com contribuições significativas de desenvolvedores do Google, Microsoft e outras empresas.


Convertendo uma página HTML em um documento PDF em C# usando a linha de comando do Chrome

A maneira mais fácil de converter uma página HTML em um documento PDF é executar o seguinte comando do Chrome na linha de 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"

Aqui está uma breve descrição dos parâmetros usados na linha de comando do Chrome:

O comando acima pode ser executado a partir da linha de comando do Windows/Linux/macOS ou a partir de código C#.

Aqui está um código C# que demonstra como converter uma página HTML em um documento PDF em um aplicativo de console .NET usando o 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.");
        }
    }
}


Este método de conversão pode ser usado se o navegador Chrome estiver instalado no computador e você souber o caminho para o arquivo "chrome.exe".

O aplicativo .NET resultante tem um tamanho pequeno porque não contém nenhuma biblioteca adicional e depende inteiramente do navegador Chrome.


Convertendo uma página HTML em um documento PDF em C# usando o pacote NuGet CefSharp.OffScreen

O pacote NuGet CefSharp.OffScreen contém uma versão compilada da biblioteca CefSharp e permite que os desenvolvedores executem uma instância completa do navegador Chromium em segundo plano, sem uma interface de usuário visível.

Se você quiser usar a biblioteca CefSharp.OffScreen em um aplicativo .NET Framework, basta adicionar uma referência ao pacote NuGet CefSharp.OffScreen ao aplicativo .NET Framework.

Se você quiser usar a biblioteca CefSharp.OffScreen em um aplicativo .NET Core, basta adicionar uma referência ao pacote NuGet CefSharp.OffScreen.NETCore ao aplicativo .NET Core.

Aqui está o código C# para um aplicativo de console .NET que converte uma página HTML em um documento PDF usando a biblioteca 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);
            }
        }
    }
}


Este método de conversão é independente do navegador Chrome e, neste caso, não é necessário compilar o CefSharp, pois os criadores do pacote NuGet CefSharp.OffScreen já fizeram isso.

O aplicativo .NET resultante é completamente independente e de tamanho grande (pouco mais de 300 MB) porque contém arquivos da biblioteca CefSharp.


Convertendo uma página HTML em um documento PDF em C# usando a biblioteca CefSharp

CefSharp é um projeto de código aberto que fornece um wrapper .NET para o Chromium Embedded Framework (CEF). O CefSharp permite que os desenvolvedores incorporem um navegador da web baseado no Chromium totalmente funcional diretamente em aplicativos de desktop C# ou VB.NET.

O repositório CefSharp está localizado no GitHub: https://github.com/cefsharp/cefsharp

O repositório contém 15 projetos, incluindo um aplicativo de console de exemplo, um aplicativo WinForms de exemplo e um aplicativo WPF de exemplo.

Experimente executar o aplicativo WPF de exemplo (projeto "CefSharp.Wpf.Example.netcore") e você verá um aplicativo WPF com navegação de página semelhante ao Chrome. O aplicativo WPF inclui navegação por links, estilos CSS e código JavaScript - a experiência é exatamente como a do Chrome. No menu principal do aplicativo, você pode selecionar "Testes => Imprimir guia atual para PDF" e salvar a página HTML renderizada como um arquivo PDF.


Este método de conversão é independente do navegador Chrome, mas você precisará compilar o CefSharp manualmente a partir do código-fonte, o que é feito automaticamente ao compilar o projeto CefSharp no Visual Studio.

O aplicativo .NET resultante (o projeto "CefSharp.Wpf.Example.netcore") é completamente independente e tem um tamanho grande (pouco mais de 400 MB) porque contém arquivos de biblioteca do CefSharp.


Processando documentos PDF com o VintaSoft Imaging .NET SDK

A VintaSoft optou por não incluir a funcionalidade de conversão de páginas HTML em documentos PDF em seus SDKs porque a tarefa é muito complexa e já está implementada em navegadores web modernos.

Ao mesmo tempo, o VintaSoft Imaging .NET SDK e o VintaSoft PDF .NET Plug-in permitem criar, visualizar, verificar, imprimir, anotar, editar, proteger, assinar, otimizar, comprimir, converter e salvar documentos PDF e PDF/A no Windows, Linux e macOS.

Assim, o SDK da VintaSoft pode ser usado para processar o documento PDF criado, a saber:

Informações detalhadas sobre os recursos de processamento de documentos PDF usando VintaSoft Imaging .NET SDK + VintaSoft PDF .NET Plug-in podem ser encontradas aqui: https://www.vintasoft.com/pt/vspdf-dotnet-index.html