Конвертация HTML в PDF в .NET
Обзор
Эта статья объясняет, как конвертировать HTML в PDF с помощью C#. Она охватывает следующие темы.
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
Формат: HTML
Формат: MHTML
Формат: WebPage
Конвертация HTML в PDF на C#
Преобразование HTML в PDF на C#
Aspose.PDF для .NET - это API для работы с PDF, которое позволяет без проблем преобразовывать существующие HTML-документы в PDF. Процесс преобразования HTML в PDF может быть гибко настроен.
Конвертировать HTML в PDF
Следующий пример кода на C# показывает, как преобразовать HTML-документ в PDF.
Шаги: Преобразование HTML в PDF на C#
- Создайте экземпляр класса HtmlLoadOptions.
- Инициализируйте объект Document.
- Сохраните выходной документ PDF, вызвав метод Document.Save().
public static void ConvertHTMLtoPDF()
{
HtmlLoadOptions options= new HtmlLoadOptions();
Document pdfDocument= new Document(_dataDir + "test.html", options);
pdfDocument.Save(_dataDir + "html_test.PDF");
}
Попробуйте конвертировать HTML в PDF онлайн
Aspose представляет вам бесплатное онлайн-приложение “HTML в PDF”, где вы можете изучить функциональность и качество его работы.
Расширенное преобразование из HTML в PDF
Движок преобразования HTML имеет несколько опций, позволяющих нам контролировать процесс конвертации.
Поддержка медиа запросов
Медиа запросы - популярная техника для предоставления специализированного стилевого файла различным устройствам. Мы можем установить тип устройства, используя свойство HtmlMediaType
.
public static void ConvertHTMLtoPDFAdvanced_MediaType()
{
HtmlLoadOptions options = new HtmlLoadOptions
{
// установите режим Печать или Экран
HtmlMediaType = HtmlMediaType.Print
};
Document pdfDocument= new Document(_dataDir + "test.html", options);
pdfDocument.Save(_dataDir + "html_test.PDF");
}
Включение (отключение) встраивания шрифтов
HTML-страницы часто используют шрифты (например, шрифты из локальной папки, Google Fonts и т.д.). Мы также можем контролировать встраивание шрифтов в документ с помощью свойства IsEmbedFonts
.
public static void ConvertHTMLtoPDFAdvanced_EmbedFonts()
{
// Отключение встраивания шрифтов
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = false};
Document pdfDocument= new Document(_dataDir + "test_fonts.html", options);
pdfDocument.Save(_dataDir + "html_test.PDF");
}
Управление загрузкой внешних ресурсов
Механизм преобразования предоставляет механизм, который позволяет вам контролировать загрузку определенных ресурсов, связанных с HTML-документом.
Класс HtmlLoadOptions
имеет свойство CustomLoaderOfExternalResources
, с помощью которого мы можем определить поведение загрузчика ресурсов.
Класс HtmlLoadOptions
имеет свойство CustomLoaderOfExternalResources
, с помощью которого мы можем определить поведение загрузчика ресурсов.
Предположим, что нам нужно заменить все изображения PNG на одно изображение test.jpg
и заменить внешний URL на внутренний для других ресурсов.
Для этого мы можем определить пользовательский загрузчик SamePictureLoader
и указать CustomLoaderOfExternalResources
на это имя.
public static void ConvertHTMLtoPDFAdvanced_DummyImage()
{
HtmlLoadOptions options = new HtmlLoadOptions
{
CustomLoaderOfExternalResources = SamePictureLoader
};
Document pdfDocument = new Document(_dataDir + "test.html", options);
pdfDocument.Save(_dataDir + "html_test.PDF");
}
private static LoadOptions.ResourceLoadingResult SamePictureLoader(string resourceURI)
{
LoadOptions.ResourceLoadingResult result;
if (resourceURI.EndsWith(".png"))
{
byte[] resultBytes = File.ReadAllBytes(_dataDir + "test.jpg");
result = new LoadOptions.ResourceLoadingResult(resultBytes)
{
// Установить MIME тип
MIMETypeIfKnown = "image/jpeg"
};
}
else
{
result = new LoadOptions.ResourceLoadingResult(GetContentFromUrl(resourceURI));
}
return result;
}
private static byte[] GetContentFromUrl(string url)
{
var httpClient = new HttpClient();
return httpClient.GetByteArrayAsync(url).GetAwaiter().GetResult();
}
Конвертация веб-страницы в PDF
Конвертация веб-страницы немного отличается от конвертации локального HTML-документа. Для преобразования содержимого веб-страницы в формат PDF сначала можно получить содержимое HTML-страницы с использованием экземпляра HttpClient, создать объект Stream, передать содержимое в объект Document и отобразить результат в формате PDF.
При конвертации веб-страницы, размещенной на веб-сервере, в PDF:
Шаги: Конвертация веб-страницы в PDF на C#
- Прочитайте содержимое страницы с помощью объекта HttpClient.
- Создайте объект HtmlLoadOptions и установите базовый URL.
- Инициализируйте объект Document, передав объект Stream.
- При необходимости установите размер страницы и/или ориентацию.
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
const string url = "https://en.wikipedia.org/wiki/Aspose_API";
// Установите размер страницы A3 и ориентацию Landscape;
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};
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();
}
}
Предоставление учетных данных для конвертации веб-страницы в PDF
Иногда нам нужно выполнить конвертацию HTML-файлов, которые требуют аутентификации и привилегий доступа, чтобы только аутентифицированные пользователи могли получить содержимое страницы. Это также включает сценарий, когда некоторые ресурсы/данные, на которые ссылается HTML, загружаются с некоторого внешнего сервера, который требует аутентификации и для удовлетворения этой потребности, свойство ExternalResourcesCredentials
добавлено в класс HtmlLoadOptions
. Следующий пример кода показывает шаги по передаче учетных данных для запроса HTML и его соответствующих ресурсов при конвертации HTML-файла в PDF.
public static void ConvertHTMLtoPDFAdvanced_Authorized()
{
const string url = "http://httpbin.org/basic-auth/user1/password1";
var credentials = new NetworkCredential("user1", "password1");
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
ExternalResourcesCredentials = credentials
};
Document pdfDocument= new Document(GetContentFromUrlAsStream(url, credentials), 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-содержимого на одной странице
Aspose.PDF для .NET позволяет отрисовывать все содержимое на одной странице при конвертации HTML-файла в формат PDF. Например, если у вас есть HTML-содержимое, размер которого превышает одну страницу, вы можете использовать опцию для вывода данных в одну страницу PDF. Для использования этой опции класс HtmlLoadOptions был расширен флагом IsRenderToSinglePage. Приведенный ниже фрагмент кода показывает, как использовать эту функциональность.
// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
// Инициализация опций HTMLLoadSave
HtmlLoadOptions options = new HtmlLoadOptions();
// Установка свойства отрисовки на одну страницу
options.IsRenderToSinglePage = true;
// Загрузка документа
Document pdfDocument= new Document(dataDir + "HTMLToPDF.html", options);
// Сохранение
pdfDocument.Save(dataDir + "RenderContentToSamePage.pdf");
Отрисовка HTML с данными SVG
Отрисовка HTML с данными SVG
Aspose.PDF для .NET предоставляет возможность конвертировать HTML-страницу в документ PDF. Поскольку HTML позволяет добавлять графический элемент SVG в виде тега на странице, Aspose.PDF также поддерживает конвертацию таких данных в результирующий файл PDF. Следующий фрагмент кода показывает, как конвертировать HTML-файлы с графическими тегами SVG в тегированные PDF-документы.
// Для полных примеров и файлов данных, пожалуйста, перейдите по ссылке https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
// Установить путь к входному файлу
string inFile = dataDir + "HTMLSVG.html";
// Установить путь к выходному файлу
string outFile = dataDir + "RenderHTMLwithSVGData.pdf";
// Инициализировать HtmlLoadOptions
HtmlLoadOptions options = new HtmlLoadOptions(Path.GetDirectoryName(inFile));
// Инициализировать объект Document
Document pdfDocument = new Document(inFile, options);
// сохранить
pdfDocument.Save(outFile);
Конвертация MHTML в PDF
Попробуйте конвертировать MHTML в PDF онлайн Попробуйте конвертировать MHTML в PDF онлайн
Aspose.PDF для .NET представляет вам бесплатное онлайн приложение “MHTML в PDF”, где вы можете изучить функциональность и качество его работы.
MHTML, сокращенно от MIME HTML, это формат архива веб-страниц, используемый для объединения ресурсов, которые обычно представлены внешними ссылками (такими как изображения, анимации Flash, апплеты Java и аудиофайлы) с HTML-кодом в один файл. MHTML, сокращение от MIME HTML, это формат архивации веб-страниц, используемый для объединения ресурсов, которые обычно представлены внешними ссылками (такими как изображения, анимации Flash, Java апплеты и аудиофайлы) с HTML кодом в один файл.
Шаги: Конвертация MHTML в PDF на C#
- Создайте экземпляр класса MhtLoadOptions.
- Инициализируйте объект Document.
- Сохраните выходной PDF документ, вызвав метод Document.Save().
public static void ConvertMHTtoPDF()
{
MhtLoadOptions options = new MhtLoadOptions()
{
PageInfo = { Width = 842, Height = 1191, IsLandscape = true}
};
Document pdfDocument = new Document(_dataDir + "fileformatinfo.mht", options);
pdfDocument.Save(_dataDir + "mhtml_test.PDF");
}
См. также
Эта статья также охватывает эти темы. Эта статья также охватывает следующие темы.
Формат: HTML
- C# HTML в PDF код
- C# HTML в PDF API
- C# HTML в PDF программно
- C# библиотека HTML в PDF
- C# сохранить HTML как PDF
- C# генерация PDF из HTML
- C# создание PDF из HTML
- C# конвертер HTML в PDF
Формат: MHTML
- C# MHTML в PDF код
- C# MHTML в PDF API
- C# MHTML в PDF программно
- C# библиотека MHTML в PDF
- C# сохранить MHTML как PDF
- C# генерация PDF из MHTML
- C# создание PDF из MHTML
- C# конвертер MHTML в PDF
Формат: WebPage