Преобразование PDF в HTML

PDF (Portable Document Format) — один из широко используемых форматов документов для межплатформенного обмена данными и информацией. Одна из его уникальных возможностей заключается в том, что точность документа остается неизменной при просмотре на любой платформе с использованием приложения в соответствии со спецификациями Adobe. Кроме того, HTML (язык гипертекстовой разметки) также является ведущим форматом файлов для разработки веб-страниц, и большинство веб-браузеров поддерживают этот формат. Однако формат PDF получил широкое распространение, поскольку его можно легко просматривать на любом устройстве без потери форматирования документа. Поэтому в этой статье мы обсудим, как преобразовать файл HTML в формат PDF с помощью .NET API.

C# API для преобразования HTML в PDF

Чтобы выполнить операцию конвертации, сначала нам нужно установить Aspose.PDF for .NET в системе. API доступен в библиотеке NuGet. Чтобы установить его, выполните следующую команду в консоли диспетчера пакетов:

Install-Package Aspose.Pdf

После завершения установки файл Aspose.PDF для .NET появится в папке Packages в обозревателе решений.

Преобразование HTML в PDF на С#

Ниже приведены шаги о том, как вы можете конвертировать HTML в PDF с помощью С#.

  1. Создайте экземпляр класса License, чтобы снять любые ограничения в процессе создания файла PDF.
  2. Создайте объект класса HtmlLoadOptions, передав входной базовый URL-адрес HTML в качестве аргумента в [HtmlLoadOptions(…)](https:/ /apireference.aspose.com/pdf/net/aspose.pdf/htmlloadoptions).
  3. Инициализируйте объект класса Document и передайте [HtmlLoadOptions](https://apireference.aspose.com/pdf/net/aspose. pdf/htmlloadoptions) в качестве аргумента его конструктора.
  4. Вызовите метод Save(…) объекта Document и отобразите вывод в формате PDF.
// создать объект для инициации лицензии
Aspose.Pdf.License license = new Aspose.Pdf.License();

// указать путь к файлу лицензии
license.SetLicense("/Downloads/Conholdate.Total.NET.lic");

// создать экземпляр класса HtmlLoadOptions
Aspose.Pdf.HtmlLoadOptions htmlLoadOptions = new Aspose.Pdf.HtmlLoadOptions("User/Documents/");

// создать объект Document и указать путь к входному файлу HTML
Aspose.Pdf.Document document = new Aspose.Pdf.Document("/Documents/input.html", htmlLoadOptions);

// сохранить полученный HTML в формате PDF
document.Save("/Documents/Converted.pdf");

Встраивание шрифтов во время конвертации

Большинство HTML-страниц часто используют шрифты (например, шрифты из локальных папок, Google Fonts и т. д.), и для сохранения макета страниц в процессе рендеринга должны быть встроены одни и те же шрифты. Итак, чтобы контролировать встраивание шрифтов в результирующий документ, нам нужно использовать свойство IsEmbedFonts.

// Встраивание шрифтов во время конвертации
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = true};

Единицей измерения в Aspose.PDF являются баллы. И мы знаем, что размер A3 составляет 297 × 420 миллиметров или 11,69 × 16,54 дюйма. Итак, размеры округлены до 842×1190 точек. В следующем фрагменте кода мы настраиваем размер страницы результирующего документа на A3 и ориентацию страницы на альбомную.

// Установите размер страницы как A3 и ориентацию страницы как альбомную.
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
  PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};

Преобразование веб-страницы в PDF

Помимо преобразования файлов HTML, у нас также может возникнуть потребность в прямом преобразовании веб-страницы в формат PDF. Итак, чтобы выполнить это требование, сначала мы получим содержимое удаленной веб-страницы с помощью экземпляра HttpClient, создадим объект Stream, а затем передаем экземпляр Stream объекту Document. Причина, по которой нам нужен контент в Stream, заключается в том, что экземпляр Document принимает только файлы или объекты Steam.

В следующем разделе объясняются шаги по преобразованию веб-страницы в PDF с помощью C#.

  1. Прочитайте содержимое страницы с помощью объекта HttpClient.
  2. Создайте экземпляр объекта HtmlLoadOptions и задайте базовый URL-адрес.
  3. Инициализируйте объект Document и передайте объект потока и экземпляр HtmlLoadOptions в качестве аргументов.
  4. Вызовите метод Save(String) из класса Document для создания выходных данных.
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
    const string url = "https://en.wikipedia.org/wiki/Aspose_API";
    
    // Установите размер страницы A3 и альбомную ориентацию; 
    HtmlLoadOptions options = new HtmlLoadOptions(url)
    {
        // Установите размеры страницы
        PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
    };
    
    // Создайте экземпляр объекта Document
    Document pdfDocument= new Document(GetContentFromUrlAsStream(url), options);
    
    // Сохраните полученный
    pdfDocument.Save(_dataDir + "html_test.PDF");
}

private static Stream GetContentFromUrlAsStream(string url, ICredentials credentials = null)
{
    
    using (var handler = new HttpClientHandler { Credentials = credentials })
    using (var httpClient = new HttpClient(handler))
    {
        // извлекать и возвращать результаты в экземпляре потока
        return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
    }
}

Рендеринг всего HTML на одной странице

Во время преобразования HTML в PDF длина результирующего файла соответствует длине содержимого входного HTML-документа. Следовательно, если входной HTML-код состоит из нескольких страниц, результирующий файл также будет занимать несколько страниц. Однако мы можем ограничить вывод одной страницей PDF. Для выполнения этого требования можно использовать свойство IsRenderToSinglePage класса HtmlLoadOptions.

Ниже приведен фрагмент кода для рендеринга всего содержимого HTML на одной странице PDF с использованием C#.

// Полные примеры и файлы данных см. на странице https://github.com/aspose-pdf/Aspose.PDF-for-.NET.
// Инициализировать объект HtmlLoadOptions.
HtmlLoadOptions options = new HtmlLoadOptions();

// Установить рендеринг на свойство одной страницы
options.IsRenderToSinglePage = true;

// Загрузить исходный HTML-контент документа
Document pdfDocument= new Document("/Documents/HTMLToPDF.html", options);

// Сохраните полученный PDF-файл
pdfDocument.Save("/Documents/MyRenderContentToSamePage.pdf");

Получить бесплатную лицензию

Вы можете запросить бесплатную временную лицензию, чтобы попробовать API без каких-либо ограничений на оценку.

Вывод

В этой статье мы узнали о подходе к преобразованию файлов HTML в формат PDF с использованием .NET API. Если вам также интересно узнать о других интересных функциях, предлагаемых Aspose.PDF для .NET, посетите страницу Ключевые функции. Полный набор примеров можно найти в репозитории GitHub.

Быстрая подсказка

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