Рендереры – Renderers – С#
Renderers
Пространство имен Aspose.Html.Rendering состоит из множества объектов рендеринга и соответствующих низкоуровневых классов опций, которые отвечают за рендеринг документов. в реализацию IDevice. Aspose.HTML for .NET API предоставляет следующую реализацию рендереров: HtmlRenderer, SvgRenderer, MhtmlRenderer, и EpubRenderer,, которые используются для рендеринга документов HTML, SVG, MHTML и EPUB соответственно.
В то время как метод RenderTo() класса Document дает вам возможность отправить один документ на выход устройство рендеринга, используя экземпляры Renderer напрямую, вы можете отправлять несколько файлов одновременно. Таким образом, вы можете объединять HTML, документы MHTML, EPUB и SVG и применять параметры рендеринга для преобразования выходного файла.
В данной статье описываются поддерживаемые сценарии преобразования и слияния HTML-файлов в другие популярные форматы с использованием методов Render() Renderer класса.
HtmlRenderer
Использование класса
HtmlRenderer для рендеринга файлов HTML в другие популярные форматы – это еще один способ конвертировать HTML путем настройки параметры рендеринга и управление выводом процесса рендеринга.
Давайте рассмотрим использование класса HtmlRenderer для рендеринга HTML в PDF с пользовательскими параметрами рендеринга:
- Инициализируйте документ HTML. Используйте один из конструкторов HTMLDocument() для создания экземпляра HTMLDocument.
- Создайте новый объект HtmlRenderer.
- Создайте экземпляр PdfRenderingOptions и установите пользовательские параметры для выходного PDF-документа. В примере мы указываем свойство AnyPage класса PageSetup, которое устанавливает новый объект Page со страницей размер 600 пикселей на 200 пикселей и свойство Encryption, которое идентифицирует пароли пользователя и владельца, разрешено разрешения и алгоритм шифрования выходного PDF-файла.
- Используйте конструктор
PdfDevice(
options
,savePath
) для создания объекта класса PdfDevice. - И, наконец, вызовите метод
Render(
device
,document
) для рендеринга HTML-документа в выходной PDF-файл с указанными параметрами рендеринга.
1// Render HTML to PDF with custom page settings using C#
2
3// Prepare a path to a source HTML file
4string documentPath = Path.Combine(DataDir, "file.html");
5
6// Initialize an HTML document from the file
7using HTMLDocument document = new HTMLDocument(documentPath);
8
9// Create an instance of HTML Renderer
10using HtmlRenderer renderer = new HtmlRenderer();
11
12// Prepare a path to save the converted file
13string savePath = Path.Combine(OutputDir, "convert-html-options.pdf");
14
15// Create the instance of Rendering Options and set a custom page-size
16PdfRenderingOptions options = new PdfRenderingOptions();
17options.PageSetup.AnyPage = new Page(new Size(600, 200));
18options.Encryption = new PdfEncryptionInfo(
19 "user_pwd",
20 "owner_pwd",
21 PdfPermissions.PrintDocument,
22 PdfEncryptionAlgorithm.RC4_128);
23
24// Create an instance of PDF device
25using PdfDevice device = new PdfDevice(options, savePath);
26
27// Render HTML to PDF
28renderer.Render(device, document);
Параметры рендеринга дают вам дополнительный контроль над процессом рендеринга. Чтобы узнать о них больше, обратитесь к статье
Параметры рендеринга.
Устройство визуализации device
принимает объект опций в качестве параметра и представляет выходной документ. Чтобы узнать больше, обратитесь к статье
Устройство рендеринга.
Если вас интересует, как использовать параметры рендеринга для изменения размера страниц документа в соответствии с размером содержимого и наоборот, посетите статью Как изменить размер документа во время преобразования из HTML?
SvgRenderer
SvgRenderer позволяет преобразовывать файлы SVG в другие форматы файлов, такие как PDF, XPS, DOCX и форматы изображений. При этом вы можете настроить выходной файл, используя различные параметры рендеринга. В следующем примере показано, как использовать класс SvgRenderer для преобразования SVG в PDF с указанием пользовательского размера страницы:
- Инициализируйте документ SVG. Используйте один из конструкторов SVGDocument() для создания экземпляра SVGDocument.
- Создайте новый объект SvgRenderer.
- Создайте экземпляр PdfRenderingOptions и установите пользовательские параметры для выходного PDF-документа. В примере мы указываем свойство PageSetup.AnyPage, которое устанавливает новый объект Page с размером страницы 600x500 пикселей.
- Используйте конструктор
PdfDevice(
options
,savePath
) для создания объект класса PdfDevice. - И, наконец, вызовите метод
Render(
device
,document
) для рендеринга документа SVG в выходной PDF-файл с указанными параметрами рендеринга.
1// Render SVG to PDF using C#
2
3// Initialize an SVG document from the file
4using SVGDocument document = new SVGDocument(Path.Combine(DataDir, "shapes.svg"));
5
6// Create an instance of SVG Renderer
7using SvgRenderer renderer = new SvgRenderer();
8
9// Prepare a path to save the converted file
10string savePath = Path.Combine(OutputDir, "rendering-svg.pdf");
11
12// Create the instance of Rendering Options and set a custom page-size
13PdfRenderingOptions options = new PdfRenderingOptions();
14options.PageSetup.AnyPage = new Page(new Size(600, 500));
15
16// Create an instance of the Pdfdevice class
17using PdfDevice device = new PdfDevice(options, savePath);
18
19// Render SVG to PDF
20renderer.Render(device, document);
MhtmlRenderer
В следующем примере показано, как преобразовать MHTML в PDF с указанием параметров рендеринга с использованием класса MhtmlRenderer:
- Откройте существующий документ MHTML.
- Создайте экземпляр MhtmlRenderer с помощью конструктора MhtmlRenderer().
- Инициализируйте класс PdfRenderingOptions и задайте параметры рендеринга.
- Создайте экземпляр класса PdfDevice.
- Вызовите метод
Render(
device
,stream
) для рендеринга MHTML в PDF.
1// Convert MHTML to PDF with custom page settings using C#
2
3// Open an existing MHTML file for reading
4using FileStream stream = File.OpenRead(DataDir + "sample.mht");
5
6// Create an instance of MHTML Renderer
7using MhtmlRenderer renderer = new MhtmlRenderer();
8
9// Prepare a path to save the converted file
10string savePath = Path.Combine(OutputDir, "convert-mhtml-options.pdf");
11
12// Create the instance of Rendering Options and set a custom page-size and background color
13PdfRenderingOptions options = new PdfRenderingOptions();
14options.PageSetup.AnyPage = new Page(new Size(600, 200));
15options.BackgroundColor = System.Drawing.Color.Azure;
16
17// Create an instance of PDF device
18using PdfDevice device = new PdfDevice(options, savePath);
19
20// Convert MHTML to PDF
21renderer.Render(device, stream);
EpubRenderer
Класс EpubRenderer позволяет преобразовывать файлы EPUB в другие форматы, такие как PDF, XPS, DOCX и изображения. В следующих примерах C# показано, как преобразовать EPUB в DOCX с настраиваемой настройкой размера страницы:
- Откройте существующий файл EPUB.
- Создайте экземпляр класса EpubRenderer.
- Инициализируйте класс DocRenderingOptions и задайте параметры рендеринга.
- Создайте экземпляр класса DocDevice.
- Вызовите метод
Render(
device
,stream
) для рендеринга EPUB в DOCX.
1// Convert EPUB to DOCX with custom page size using C#
2
3// Open an existing EPUB file for reading
4using FileStream stream = File.OpenRead(DataDir + "input.epub");
5
6// Create an instance of EPUB Renderer
7using EpubRenderer renderer = new EpubRenderer();
8
9// Prepare a path to save the converted file
10string savePath = Path.Combine(OutputDir, "convert-epub-options.docx");
11
12// Create the instance of Rendering Options and set a custom page-size
13DocRenderingOptions options = new DocRenderingOptions();
14options.PageSetup.AnyPage = new Page(new Size(800, 400));
15
16// Create an instance of the DocDevice class
17using DocDevice device = new DocDevice(options, savePath);
18
19// Render EPUB to DOCX
20renderer.Render(device, stream);
Объединение HTML
Aspose.HTML for .NET API предоставляет
Renderer для рендеринга и объединения документов HTML, MHTML, EPUB и SVG в популярные форматы. В то время как метод
RenderTo() дает вам возможность отправить один документ на выходное устройство рендеринга, используя экземпляры Renderer
напрямую, вы можете отправлять несколько файлов одновременно.
Используя реализацию средств визуализации: HtmlRenderer, SvgRenderer, MhtmlRenderer и EpubRenderer, вы можете объединять документы HTML, SVG, MHTML и EPUB соответственно. В следующем примере показано, как использовать
HtmlRenderer для рендеринга нескольких HTML-документов:
1// Merge HTML to PDF using C#
2
3// Prepare HTML code
4string code1 = @"<br><span style='color: green'>Hello, World!!</span>";
5string code2 = @"<br><span style='color: blue'>Hello, World!!</span>";
6string code3 = @"<br><span style='color: red'>Hello, World!!</span>";
7
8// Create three HTML documents to merge later
9using HTMLDocument document1 = new HTMLDocument(code1, ".");
10using HTMLDocument document2 = new HTMLDocument(code2, ".");
11using HTMLDocument document3 = new HTMLDocument(code3, ".");
12
13// Create an instance of HTML Renderer
14using HtmlRenderer renderer = new HtmlRenderer();
15
16// Prepare a path to save the converted file
17string savePath = Path.Combine(OutputDir, "merge-html.pdf");
18
19// Create an instance of PDF device
20using PdfDevice device = new PdfDevice(savePath);
21
22// Merge all HTML documents into PDF
23renderer.Render(device, document1, document2, document3);
Установить время ожидания
Еще одна важная функция, доступная для рендереров, – тайм-аут. Вы можете использовать его, чтобы указать, как долго вы готовы ждать завершения всех внутренних процессов, связанных с жизненным циклом документа, таких как загрузка ресурсов, активные таймеры и т. д. Конечно, вы можете указать бесконечный период ожидания. Однако, если документ содержит скрипт с бесконечным циклом, вы будете ждать бесконечно долго. В приведенном ниже примере показано, как использовать параметр тайм-аута:
1// Render HTML to PDF with timeout settings using C#
2
3// Prepare HTML code
4string code = @"
5<script>
6 var count = 0;
7 setInterval(function()
8 {
9 var element = document.createElement('div');
10 var message = (++count) + '. ' + 'Hello, World!! I know how to use Renderers!';
11 var text = document.createTextNode(message);
12 element.appendChild(text);
13 document.body.appendChild(element);
14 }, 1000);
15</script>";
16
17// Initialize an HTML document based on prepared HTML code
18using HTMLDocument document = new HTMLDocument(code, ".");
19
20// Create an instance of HTML Renderer
21using HtmlRenderer renderer = new HtmlRenderer();
22
23// Prepare a path to save the converted file
24string savePath = Path.Combine(OutputDir, "output-timeout.pdf");
25
26// Create an instance of the PdfDevice class
27using PdfDevice device = new PdfDevice(savePath);
28
29// Render HTML to PDF
30renderer.Render(device, TimeSpan.FromSeconds(5), document);
В этом примере мы создаем документ HTML, который каждую секунду добавляет новый элемент <div>
с порядковым номером и сообщением «Hello, World!!» Мы используем параметр TimeSpan
в
Render(device
, timeout
, document
) для установки времени ожидания. Этот параметр указывает максимальное время, которое средство визуализации потратит на визуализацию документа. В этом случае общее время устанавливается равным 5 секундам. Если модуль визуализации не сгенерировал документ в течение указанного времени, он остановится и визуализирует частично визуализированный документ. Запустив этот пример, вы получите документ с пятью строками “Hello, World!! I know how to use Renderers!” сообщение следующим образом:
Вы можете скачать полные примеры C# и файлы данных с GitHub.
Aspose.HTML предлагает бесплатные онлайн Конвертеры, которые могут преобразовывать файлы HTML, XHTML, MHTML, EPUB, XML и Markdown в ряд популярных форматов. Вы можете легко конвертировать HTML-документы в форматы PDF, XPS, DOCX, JPG, PNG, GIF, TIFF и другие форматы. Просто выберите файл, выберите формат для преобразования, и все готово. Лучше всего то, что это совершенно бесплатно!