Параметры рендеринга – Rendering Options – С#

Параметры рендеринга дают вам дополнительный контроль над устройством рендеринга. Каждое устройство рендеринга – PdfDevice, XpsDevice, DocDevice, и ImageDevice имеет собственный уникальный набор параметров, реализованных с помощью классов PdfRenderingOptions, XpsRenderingOptions, DocRenderingOptions, и ImageRenderingOptions соответственно. Вы можете изменить размер страницы, настроить поля и цвета, установить пароль безопасности в случае устройства PDF и т. д. Настройка параметров рендеринга необходима для получения желаемого выходного документа. Например, вы можете уменьшить размер файла, настроив качество и разрешение изображения, или улучшить читаемость, настроив поля страницы и форматирование текста.

В этой статье мы опишем на примерах C#, как использовать параметры рендеринга для настройки процесса рендеринга из HTML в PDF, XPS, DOCX и изображения. Устройство визуализации принимает объект опций в качестве параметра и представляет выходной документ. Чтобы узнать больше, обратитесь к статье Устройство рендеринга.

Ниже показано, как использовать PdfRenderingOptions для настройки размера страницы во время рендеринга HTML в PDF:

 1var code = @"<span>Hello, World!!</span>";
 2
 3// Initialize an HTML document from HTML code
 4using var document = new HTMLDocument(code, ".");
 5
 6// Create an instance of PdfRenderingOptions and set a custom page size
 7var options = new PdfRenderingOptions()
 8{
 9    PageSetup =
10        {
11            AnyPage = new Page(new Size(Length.FromInches(4),Length.FromInches(2)))
12        }
13};
14
15// Prepare a path to save the converted file 
16string savePath = Path.Combine(OutputDir, "file-with-custom-page-size.pdf");            
17
18// Create an instance of the PdfDevice and specify the options and output file to render
19using var device = new PdfDevice(options, savePath);
20
21// Render HTML to PDF
22document.RenderTo(device);

Общие Hастройки

Пространство имен Aspose.Html.Rendering состоит из многочисленных объектов рендеринга и соответствующих низкоуровневых классов опций, отвечающих за рендеринг документов в IDevice реализации. RenderingOptions и CssOptions представляют общие параметры рендеринга. Эти параметры действительны для всех устройств рендеринга и всех процессов рендеринга HTML в PDF, XPS, DOCX и изображения:

PropertyDescription
PageSetupThis property gets a page setup object and uses it for configuration output page-set.
CssGets a CssOptions object which is used for configuration of CSS properties processing.
BackgroundColorThis property sets the color that will fill the background of every page. By default, this property is Transparent.
HorizontalResolutionSets horizontal resolution for output images in pixels per inch. The default value is 300 dpi.
VerticalResolutionSets vertical resolution for output images in pixels per inch. The default value is 300 dpi.
MediaTypeSets MediaType which will be used for media queries resolution during rendering. Default value is Print.

Горизонтальное и Вертикальное Разрешение

В следующем примере мы покажем, как мы можем управлять разрешением результирующего файла изображения, в конечном итоге влияя на его размер и качество:

 1// Prepare a path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "spring.html");            
 3
 4// Create an instance of HTML document
 5using var document = new HTMLDocument(documentPath);
 6
 7// Prepare path to save output file 
 8string savePath1 = Path.Combine(OutputDir, "output_resolution_50.png");
 9string savePath2 = Path.Combine(OutputDir, "output_resolution_300.png");
10
11// Create options for low-resolution screens
12    var options1 = new ImageRenderingOptions()
13    {
14        HorizontalResolution = 50,
15        VerticalResolution = 50
16    };
17
18// Create an instance of Image device
19using var device1 = new ImageDevice(options1, savePath1);
20
21// Render HTML to PNG
22document.RenderTo(device1);
23
24
25// Create options for high-resolution screens
26var options2 = new ImageRenderingOptions()
27{
28    HorizontalResolution = 300,
29    VerticalResolution = 300
30};
31
32// Create an instance of Image device
33using var device2 = new ImageDevice(options2, savePath2);
34
35// Render HTML to PNG
36document.RenderTo(device2);

На следующем рисунке показан результат рендеринга файла spring.html с разрешением 50 dpi и 300 dpi:

Два изображения файла spring.html, преобразованные в формат PNG с разрешением 50 и 300 dpi

CSS Media Type

CSS media-type – важная функция, которая определяет, как документ будет представлен на разных носителях: на экране, на бумаге, с помощью устройства Брайля и т. д. Существует несколько способов указать madia-type для таблицы стилей, через связанные таблицы стилей или через встраивание:

Linked Style Sheet

1 <link rel="stylesheet" type="text/css" media="print" href="style.css">

Inline Style Sheet

1<style type="text/css">
2@media print {
3  body{ color: #000000; }
4}
5</style>

Aspose.HTML API поддерживает эту функцию, поэтому вы можете преобразовывать HTML-документы так, как они выглядят на экране или при печати, применяя соответствующие типы носителей и таблицы стилей. В следующем примере показано, как настроить тип носителя:

1// Create an option class
2var options = new PdfRenderingOptions();
3
4// Set the 'screen' media-type
5options.Css.MediaType = MediaType.Screen;

Обратите внимание, что значением по умолчанию для CssOptions.MediaType является Print. Это означает, что документ будет преобразован с применением таблиц стилей, относящихся к печатающему устройству, и выглядит как на бумаге (вы можете использовать предварительный просмотр печати в браузере, чтобы увидеть разницу). Поэтому, если вы хотите, чтобы документ выглядел так, как он отображается на экране, вы должны использовать MediaType.Screen.

Цвет фона – Background Color

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

 1// Prepare path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "spring.html");
 3
 4// Prepare a path to save the converted file 
 5string savePath = Path.Combine(OutputDir, "spring.pdf");
 6
 7// Create an instance of HTML document
 8using var document = new HTMLDocument(documentPath);
 9
10// Initialize options with 'Azure' as a background-color
11var options = new PdfRenderingOptions()
12{
13    BackgroundColor = System.Drawing.Color.Azure
14};
15
16// Create an instance of PDF device
17using var device = new PdfDevice(options, savePath);
18
19// Render HTML to PDF
20document.RenderTo(device);

Параметры страницы – Page Setup

Параметры страницы – это набор параметров, определяющих макет печатной страницы. Эти параметры включают в себя все, от размера страницы, полей и автоматического изменения размера до правил приоритета @page. Используя этот набор параметров, вы можете легко настроить индивидуальный макет для каждой страницы.

В следующем примере показано, как создать PDF-документ с разными размерами страниц для левой и правой страниц (см. визуализацию результата на рисунке (a) ниже):

 1// Prepare HTML code
 2var code = @"<style>div { page-break-after: always; }</style>
 3<div>First Page</div>
 4<div>Second Page</div>
 5<div>Third Page</div>
 6<div>Fourth Page</div>";
 7
 8// Initialize an HTML document from the HTML code
 9using var document = new HTMLDocument(code, ".");
10
11// Create the instance of Rendering Options and set a custom page size
12var options = new PdfRenderingOptions();
13options.PageSetup.SetLeftRightPage(
14    new Page(new Size(400, 150)),
15    new Page(new Size(400, 50))
16);
17
18// Prepare a path to save the converted file 
19string savePath = Path.Combine(OutputDir, "output-custom-page-size.pdf");
20
21// Create the PDF Device and specify options and output file
22using var device = new PdfDevice(options, savePath);
23
24// Render HTML to PDF
25document.RenderTo(device);

В некоторых случаях содержимое HTML-страницы может быть шире, чем размер страницы, определенный параметрами. Если вы не хотите обрезать содержимое страницы, вы можете попробовать свойство AdjustToWidestPage класса PageSetup. В следующем примере показано, как настроить размер страницы в соответствии с содержимым (см. визуализацию результата на рисунке (b) ниже):

 1// Prepare HTML code
 2var code = @"<style>
 3    div { page-break-after: always; }
 4</style>
 5<div style='border: 1px solid red; width: 300px'>First Page</div>
 6<div style='border: 1px solid red; width: 500px'>Second Page</div>";
 7
 8// Initialize an HTML document from the HTML code
 9using var document = new HTMLDocument(code, ".");
10
11// Create the instance of Rendering Options and set a custom page-size
12var options = new PdfRenderingOptions();
13options.PageSetup.AnyPage = new Page(new Size(400, 200));
14
15// Enable auto-adjusting for the page size
16options.PageSetup.AdjustToWidestPage = true;
17
18// Prepare a path to save the converted file 
19string savePath = Path.Combine(OutputDir, "output-widest-page-size.pdf");
20
21// Create the PdfDevice and specify options and output file
22using var device = new PdfDevice(options, savePath);
23
24// Render HTML to PDF
25document.RenderTo(device);

Text “Два изображения – результат настройки макета для каждой страницы и результат настройки размера страницы в соответствии с содержимым.”

Чтобы узнать больше о процессе рендеринга, прочитайте статью Устройство рендеринга.

Если вас интересует, как использовать параметры рендеринга для изменения размера страниц документа в соответствии с размером содержимого и наоборот, посетите статью Как изменить размер документа во время преобразования из HTML?

PDF Options

Класс PdfRenderingOptions, наряду с общими параметрами, поддерживает некоторые специфические параметры, такие как JpegQuality, DocumentInfo, Encryption и FormFieldBehaviour.

PropertyDescription
JpegQualitySpecifies the quality of JPEG compression for images. The default value is 95.
DocumentInfoThis property contains information about the output PDF document.
EncryptionThis property gets or sets encryption details. If it is not set, then no encryption will be performed.
FormFieldBehaviourThis property specifies the behavior of form fields in the output PDF document.

Свойство FormFieldBehaviour используется для указания поведения полей формы в документе PDF. Чтобы узнать, что означает сведение файла PDF и как это сделать с помощью библиотеки Aspose.HTML for .NET, обратитесь к статье Flatten PDF.

Следующий код C# демонстрирует, как добавить шифрование в выходной файл PDF с помощью класса PdfRenderingOptions:

 1// Prepare a path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "document.html");
 3
 4// Initialize the HTML document from the file
 5using var document = new HTMLDocument(documentPath);
 6
 7// Create the instance of Rendering Options
 8var options = new PdfRenderingOptions();
 9
10// Set the permissions to the file
11options.Encryption = new PdfEncryptionInfo(
12        "user_pwd",
13        "owner_pwd",
14        PdfPermissions.PrintDocument,
15        PdfEncryptionAlgorithm.RC4_128);
16
17// Prepare a path to save the converted file 
18string savePath = Path.Combine(OutputDir, "output-options.pdf");
19
20// Create an instance of the PdfDevice and specify options and output file
21using var device = new PdfDevice(options, savePath);
22
23// Render HTML to PDF
24document.RenderTo(device);

В приведенном выше примере показано, как создать новый экземпляр PdfRenderingOptions и установить параметры шифрования для выходного файла PDF. Для этого вы должны использовать PdfEncryptionInfo(userPassword, ownerPassword, permissions, encryptionAlgorithm) для создания объекта PdfEncryptionInfo, который определяет параметры шифрования для файла PDF. Конструктор принимает четыре параметра:

Image Options

Класс ImageRenderingOptions поддерживает все общие параметры и позволяет настраивать определенные параметры, например сглаживание. (дизеринг), конфигурация рендеринга текста, форматы изображений и сжатие изображений.

PropertyDescription
CompressionSets Tagged Image File Format (TIFF) Compression. By default, this property is LZW.
FormatSets the ImageFormat (JPG, PNG, BMP, TIFF, or GIF). By default, this property is PNG.
UseAntialiasingThis property sets the rendering quality for this image.
TextGets a TextOptions object which is used for configuration of text rendering.

Рассмотрим, как использовать специализированный объект ImageRenderingOptions для настройки качества рендеринга изображения. В следующем примере показано, как изменить разрешение и сглаживание для результирующего изображения.

 1// Prepare a path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "color.html");
 3
 4// Initialize the HTML document from the file
 5using var document = new HTMLDocument(documentPath);
 6
 7// Create an instance of Rendering Options
 8var options = new ImageRenderingOptions(ImageFormat.Jpeg)
 9{
10    // Disable smoothing mode
11    UseAntialiasing = false,
12
13    // Set the image resolution as 75 dpi
14    VerticalResolution = Resolution.FromDotsPerInch(75),
15    HorizontalResolution = Resolution.FromDotsPerInch(75),
16};
17
18// Prepare a path to save the converted file 
19string savePath = Path.Combine(OutputDir, "color-options.jpg");
20
21// Create an instance of the ImageDevice and specify options and output file
22using var device = new ImageDevice(options, savePath);
23
24// Render HTML to JPG
25document.RenderTo(device);

XPS Options

Файлы XPS, сгенерированные нашей библиотекой, не имеют каких-либо определенных параметров. Все параметры XpsRenderingOptions унаследованы от базового класса RenderingOptions и описаны здесь.

 1// Prepare a path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "document.html");
 3
 4// Initialize the HTML document from the file
 5using var document = new HTMLDocument(documentPath);
 6
 7// Create an instance of Rendering Options
 8var options = new XpsRenderingOptions();
 9options.PageSetup.AnyPage = new Page(new Size(Length.FromInches(5), Length.FromInches(2)));
10
11// Prepare a path to save the converted file 
12string savePath = Path.Combine(OutputDir, "document-options.xps");
13
14// Create an instance of the XpsDevice and specify options and output file
15using var device = new XpsDevice(options, savePath);
16
17// Render HTML to XPS
18document.RenderTo(device);

DOCX Options

Класс DocRenderingOptions поддерживает все общие параметры и позволяет настраивать свойства FontEmbeddingRule и DocumentFormat для выходной файл.

PropertyDescription
FontEmbeddingRuleThis property gets or sets the font embedding rule. Available values are Full and None. The default value is None.
DocumentFormatThis property gets or sets the file format of the output document. The default value is DOCX.

В следующем примере показано, как настроить параметры рендеринга для выходных документов, установив размер страницы и правило встраивания шрифта:

 1// Prepare a path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "nature.html");
 3
 4// Initialize the HTML document from the file
 5using var document = new HTMLDocument(documentPath);
 6
 7// Create an instance of Rendering Options and set a custom page size
 8var options = new DocRenderingOptions();
 9options.PageSetup.AnyPage = new Page(new Size(Length.FromInches(8), Length.FromInches(10)));
10options.FontEmbeddingRule = (FontEmbeddingRule.Full);
11
12// Prepare a path to save the converted file 
13string savePath = Path.Combine(OutputDir, "nature-options.docx");
14
15// Create an instance of the DocDevice and specify options and output file
16using var device = new DocDevice(options, savePath);
17
18// Render HTML to DOCX
19document.RenderTo(device);

Вы можете скачать полные примеры C# и файлы данных с GitHub.

Aspose.HTML предлагает бесплатные онлайн Конвертеры, которые могут преобразовывать файлы HTML, XHTML, MHTML, EPUB, XML и Markdown в ряд популярных форматов. Вы можете легко конвертировать HTML-документы в форматы PDF, XPS, DOCX, JPG, PNG, GIF, TIFF и другие форматы. Просто выберите файл, выберите формат для преобразования, и все готово. Лучше всего то, что это совершенно бесплатно!

Text “Баннер веб-приложений HTML”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.