Конвертация HTML документа в PDF документ в C#

Категория: ImagingPDF.NET

08 апреля 2026

Конвертация HTML страницы в PDF документ на C# - это распространённая задача, которая часто используется для создания счетов-фактур, отчётов, договоров и других деловых документов из HTML-шаблонов. Также конвертация HTML страницы в PDF документ на C# имеет важное значение для создания статических, портативных и готовых к печати документов из динамического веб-контента.

В процессе конвертации HTML страницы в PDF документ нужно выполнить следующие шаги:

Спецификация стандарта HTML5 (https://html.spec.whatwg.org/print.pdf) содержит 1553 страницы.

Спецификация стандарта CSS2 (https://www.w3.org/TR/CSS22/css2.pdf) содержит 426 страниц.

Спецификация стандарта JavaScript (https://ecma-international.org/wp-content/uploads/ECMA-262_16th_edition_june_2025.pdf) содержит 835 страниц.

Шаги процесса конвертации HTML в PDF и информация о спецификациях HTML5, CSS2, JavaScript приведены выше, чтобы стало понятно, что в общем случае конвертация HTML в PDF является очень сложной задачей, если реализовывать данную задачу с нуля.

В тоже время эта сложная задача уже реализована в современных веб браузерах, которые отлично рендерят HTML страницы и могут сохранить загруженную HTML страницу в PDF файл. Поэтому напрашивается вполне резонный вопрос - а можно ли в C# приложении использовать веб браузер для конвертации HTML страницы в PDF документ?

В данной статье мы рассмотрим как в C# приложении абсолютно бесплатно и с максимальным качеством сконвертировать HTML страницу любой сложности в PDF документ с помощью Chromium.

Chromium - это проект веб-браузера с открытым исходным кодом, который в основном используется в качестве основы для большинства современных веб-браузеров, включая Google Chrome, Microsoft Edge, Opera и другие. Он разработан с учетом скорости, безопасности и стабильности, и в его создание внесли значительный вклад разработчики из Google, Microsoft и других компаний.


Конвертация HTML страницы в PDF документ в C# с помощью командной строки Chrome

Самый простой способ для конвертации HTML страницы в PDF документ — это запустить следующую команду Chrome в командной строке:
"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"

Вот краткое описание параметров, которые используются в командной строке Chrome:

Указанная выше команда может быть запущена в командной строке Windows/Linux/macOS или запущена из C# кода.

Вот C# код, который демонстрирует как в консольном .NET приложении сконвертировать HTML страницу в PDF документ с помощью 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.");
        }
    }
}


Данный метод конвертации можно использовать, если на компьютере установлен веб браузер Chrome и вы знаете путь к файлу "chrome.exe".

Созданное .NET приложение имеет маленький размер, потому что не содержит каких-либо дополнительных библиотек и полностью полагается на работу веб браузера Chrome.


Конвертация HTML страницы в PDF документ в C# с помощью nuget-пакета CefSharp.OffScreen

Nuget-пакет CefSharp.OffScreen содержит в себе скомпилированную версию проекта CefSharp и позволяет разработчикам запускать полноценный экземпляр веб браузера Chromium в фоновом режиме без видимого пользовательского интерфейса.

Для использования библиотеки CefSharp.OffScreen в .NET Framework приложении достаточно добавить ссылку на nuget-пакет CefSharp.OffScreen к .NET Framework приложению.

Для использования библиотеки CefSharp.OffScreen в .NET Core приложении достаточно добавить ссылку на nuget-пакет CefSharp.OffScreen.NETCore к .NET Core приложению.

Вот C# код консольного .NET приложения, которое позволяет конвертировать HTML страницу в PDF документ с помощью библиотеки 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);
            }
        }
    }
}


Данный метод конвертации не зависит от веб браузера Chrome и в данном случае не нужно самостоятельно компилировать CefSharp, потому что это уже сделали создатели nuget-пакета CefSharp.OffScreen.

Созданное .NET приложение является абсолютно автономным и имеет большой размер (чуть больше 300Мб), потому что содержит файлы библиотеки CefSharp.


Конвертация HTML страницы в PDF документ в C# с помощью библиотеки CefSharp

CefSharp это проект с открытым исходным кодом, который предоставляет .NET-обертку для Chromium Embedded Framework (CEF). CefSharp позволяет разработчикам встраивать полнофункциональный веб-браузер на основе Chromium непосредственно в настольные приложения на C# или VB.NET.

Репозиторий с файлами CefSharp находится на GitHub: https://github.com/cefsharp/cefsharp

Репозиторий содержит 15 проектов в числе которых есть пример консольного приложения, пример WinForms приложения, пример WPF приложения.

Попробуйте запустить пример WPF приложения (проект "CefSharp.Wpf.Example.netcore") и вы увидите WPF приложение с возможностью навигации по страницам как в Chrome. В WPF приложении работает навигация по ссылкам, CSS-стили, JavaScript-код - в общем ощущение как будто находишься в Chrome. В главном меню приложения можно выбрать меню "Tests => Print Current tab to PDF" и сохранить загруженную страницу в PDF файл.


Данный метод конвертации не зависит от веб браузера Chrome, но нужно будет самостоятельно скомпилировать CefSharp из исходных кодов, что делается автоматически при компиляции проекта CefSharp в Visual Studio.

Созданное .NET приложение (проект "CefSharp.Wpf.Example.netcore") является абсолютно автономным и имеет большой размер (чуть больше 400Мб), потому что содержит файлы библиотеки CefSharp.


Обработка PDF документа с помощью VintaSoft Imaging .NET SDK

Компания ВинтаСофт не стала внедрять функционал для конвертации HTML страницы в PDF документ в свои SDK, потому что задача является очень сложной и она уже реализована в современных веб браузерах.

В тоже время VintaSoft Imaging .NET SDK + VintaSoft PDF .NET Plug-in позволяет создавать, просматривать, верифицировать, печатать, аннотировать, редактировать, защищать, подписывать, оптимизировать, сжимать, конвертировать, сохранять PDF и PDF/A документы в Windows, Linux, macOS.

Соответственно SDK компании ВинтаСофт можно использовать для обработки созданного PDF документа, а именно:

Подробную информацию о возможностях обработки PDF документа с помощью VintaSoft Imaging .NET SDK + VintaSoft PDF .NET Plug-in можно получить здесь: https://www.vintasoft.ru/vspdf-dotnet-index.html