✖

Просмотр и конвертация HTML-файла в .NET приложении

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

1 октября 2026

HTML файл - это файл, который содержит разметку документа на языке разметки гипертекста (HTML) предназначенную для отображения документа в веб-браузере. Язык разметки гипертекста (HTML) обычно используется совместно с каскадной таблицей стилей (CSS) и языком сценариев, таким как JavaScript.

Веб браузеры Google Chrome, Microsoft Edge, Яндекс Браузер, Opera, UC Browser, Baidu Browser и другие используют движок Chromium для рендеринга HTML страницы.

Веб браузер Mozilla Firefox использует собственный движок Gecko для рендеринга HTML страницы.

Когда в компании ВинтаСофт возникла необходимость рендеринга HTML страницы мы рассмотрели все возможные варианты и поняли, что нам стоит создать собственный движок для рендеринга HTML страницы. Мы понимаем, что наш собственный движок рендеринга HTML страницы не скоро достигнет уровня сколь-нибудь близкого к уровню движков Chromium или Gecko по качеству и скорости, но нам это и не нужно. Мы не говорим, что сейчас наш собственный движок рендеринга HTML страницы может идеально рендерить любую HTML страницу. Наша задача — это обеспечить правильный и быстрый рендеринг простых и средней сложности HTML страниц для наших клиентов. Движок рендеринга HTML страницы от компании ВинтаСофт полностью написан на C#, что обеспечивает максимальную скорость в среде .NET и кросс-платформенную поддержку.


VintaSoft Imaging .NET SDK 15.2 и более поздние версии позволяет работать с HTML файлами, то есть можно:
Для работы с HTML-файлом нужны следующие nuget-пакеты: Vintasoft.Shared, Vintasoft.Imaging.

В VintaSoft Imaging .NET SDK 15.2:


Вот C# код, который демонстрирует как извлечь текст из HTML-файла:
/// <summary>
/// Extracts the text from HTML.
/// </summary>
/// <param name="htmlFileName">Name of the HTML file.</param>
public static void ExtractTextFromHtml(string htmlFileName)
{
    using (Vintasoft.Imaging.ImageCollection images = new Vintasoft.Imaging.ImageCollection())
    {
        // open HTML document
        images.Add(htmlFileName);

        try
        {
            // page number
            int pageNumber = 1;
            
            // for each page of HTML dcoument
            foreach (Vintasoft.Imaging.VintasoftImage image in images)
            {
                // write page number
                System.Console.WriteLine("\tPage Number: {0}", pageNumber++);
                System.Console.WriteLine();
                System.Console.WriteLine();

                // find text region metadata
                Vintasoft.Imaging.Metadata.TextRegionMetadata textRegionMetadata =
                    image.Metadata.MetadataTree.FindChildNode<Vintasoft.Imaging.Metadata.TextRegionMetadata>();

                // if current page has text content
                if (textRegionMetadata != null)
                {
                    // get text region
                    Vintasoft.Imaging.Text.TextRegion textRegion = textRegionMetadata.GetTextRegion();
                    // write page text content
                    System.Console.Write(textRegion.TextContent);
                }

                // if page separator must be added between pages
                if (pageNumber < images.Count)
                {
                    System.Console.WriteLine();
                    System.Console.WriteLine();
                    System.Console.WriteLine();
                }
            }
        }
        finally
        {
            // clear and dispose images
            images.ClearAndDisposeItems();
        }
    }
}


Вот C# код, который демонстрирует как преобразовать HTML-файл в TIFF-файл:
/// <summary>
/// Converts HTML document to TIFF file using ImageCollection and TiffEncoder classes.
/// </summary>
public static void ConvertHtmlToTiff_ImageCollection(string htmlFileName, string tiffFileName)
{
    // create image collection
    using (Vintasoft.Imaging.ImageCollection images = 
        new Vintasoft.Imaging.ImageCollection())
    {
        // layout HTML document on page area: width - 210mm,  height - infinite
        Vintasoft.Imaging.Codecs.Decoders.HtmlLayoutSettings layoutSettings =
            new Vintasoft.Imaging.Codecs.Decoders.HtmlLayoutSettings();
        layoutSettings.PageLayoutSettings.PageSize = 
            Vintasoft.Imaging.ImageSize.FromMillimeters(210, 0, new Vintasoft.Imaging.Resolution(96));
        images.LayoutSettings.SetSettings(layoutSettings);

        // add HTML document to collection
        images.Add(htmlFileName);

        // render HTML pages in 144 DPI
        Vintasoft.Imaging.Codecs.Decoders.RenderingSettings renderingSettings = 
            new Vintasoft.Imaging.Codecs.Decoders.RenderingSettings();
        renderingSettings.Resolution = new Vintasoft.Imaging.Resolution(144);
        images.SetRenderingSettings(renderingSettings);

        // create TiffEncoder
        using (Vintasoft.Imaging.Codecs.Encoders.TiffEncoder encoder = 
            new Vintasoft.Imaging.Codecs.Encoders.TiffEncoder(true))
        {
            // set TIFF compression to Jpeg
            encoder.Settings.Compression = 
                Vintasoft.Imaging.Codecs.ImageFiles.Tiff.TiffCompression.Jpeg;

            // save images of image collection to TIFF file using TiffEncoder
            images.SaveSync(tiffFileName, encoder);
        }

        // dispose images
        images.ClearAndDisposeItems();
    }
}


Вот C# код, который демонстрирует как преобразовать HTML-файл почты в PDF-файл:
/// <summary>
/// Converts HTML document to PDF document using ImageCollection and PdfEncoder classes.
/// </summary>
public static void ConvertHtmlToPdf_ImageCollection(string htmlFileName, string pdfFileName)
{
    // create image collection
    using (Vintasoft.Imaging.ImageCollection images = 
        new Vintasoft.Imaging.ImageCollection())
    {
        // layout HTML document on page area: width - 210mm,  height - infinite
        Vintasoft.Imaging.Codecs.Decoders.HtmlLayoutSettings layoutSettings =
            new Vintasoft.Imaging.Codecs.Decoders.HtmlLayoutSettings();
        layoutSettings.PageLayoutSettings.PageSize = 
            Vintasoft.Imaging.ImageSize.FromMillimeters(210, 0, new Vintasoft.Imaging.Resolution(96));
        images.LayoutSettings.SetSettings(layoutSettings);

        // add HTML document to collection
        images.Add(htmlFileName);
        
        // create PdfEncoder
        using (Vintasoft.Imaging.Codecs.Encoders.PdfEncoder encoder = 
            new Vintasoft.Imaging.Codecs.Encoders.PdfEncoder(true))
        {
            // set PDF resources compression to Jpeg
            encoder.Settings.Compression = Vintasoft.Imaging.Codecs.Encoders.PdfImageCompression.Jpeg;

            // save images of image collection to PDF document using PdfEncoder
            images.SaveSync(pdfFileName, encoder);
        }

        // dispose images
        images.ClearAndDisposeItems();
    }
}


Вот C# код, который демонстрирует как преобразовать HTML-файл в DOCX-файл:
/// <summary>
/// Converts HTML document to a DOCX document.
/// </summary>
/// <param name="htmlFilePath">Path to a source HTML file.</param>
/// <param name="docxFilePath">Path to a result DOCX file.</param>
public static void ConvertHtmlToDocx(string htmlFilePath, string docxFilePath)
{
    Vintasoft.Imaging.Office.OpenXml.OpenXmlDocumentConverter.ConvertHtmlToDocx(htmlFilePath, docxFilePath);
}