Параметры рендеринга – Rendering Options – С#
Параметры рендеринга дают вам дополнительный контроль над устройством рендеринга. Каждое устройство рендеринга – PdfDevice, XpsDevice, DocDevice, и ImageDevice имеет собственный уникальный набор параметров, реализованных с помощью классов PdfRenderingOptions, XpsRenderingOptions, DocRenderingOptions, и ImageRenderingOptions соответственно. Вы можете изменить размер страницы, настроить поля и цвета, установить пароль безопасности в случае устройства PDF и т. д. Настройка параметров рендеринга необходима для получения желаемого выходного документа. Например, вы можете уменьшить размер файла, настроив качество и разрешение изображения, или улучшить читаемость, настроив поля страницы и форматирование текста.
В этой статье мы опишем на примерах C#, как использовать параметры рендеринга для настройки процесса рендеринга из HTML в PDF, XPS, DOCX и изображения. Устройство визуализации принимает объект опций в качестве параметра и представляет выходной документ. Чтобы узнать больше, обратитесь к статье Устройство рендеринга.
Ниже показано, как использовать PdfRenderingOptions для настройки размера страницы во время рендеринга HTML в PDF:
1using System.IO;
2using Aspose.Html;
3using Aspose.Html.Rendering.Pdf;
4using Aspose.Html.Drawing;
5...
6 var code = @"<span>Hello World!!</span>";
7
8 // Initialize an HTML document from the HTML code
9 using var document = new HTMLDocument(code, ".");
10
11 // Create the instance of PdfRenderingOptions and set a custom page size
12 var options = new PdfRenderingOptions()
13 {
14 PageSetup =
15 {
16 AnyPage = new Page(new Size(Length.FromInches(4),Length.FromInches(2)))
17 }
18 };
19
20 // Prepare path for converted file saving
21 string savePath = Path.Combine(OutputDir, "file-with-custom-page-size.pdf");
22
23 // Create an instance of the PdfDevice and specify the options and output file to render
24 using var device = new PdfDevice(options, savePath);
25
26 // Render HTML to PDF
27 document.RenderTo(device);
Общие Hастройки
Пространство имен Aspose.Html.Rendering состоит из многочисленных объектов рендеринга и соответствующих низкоуровневых классов опций, отвечающих за рендеринг документов в IDevice реализации. RenderingOptions и CssOptions представляют общие параметры рендеринга. Эти параметры действительны для всех устройств рендеринга и всех процессов рендеринга HTML в PDF, XPS, DOCX и изображения:
Property | Description |
---|---|
PageSetup | This property gets a page setup object and uses it for configuration output page-set. |
Css | Gets a CssOptions object which is used for configuration of CSS properties processing. |
BackgroundColor | This property sets the color that will fill the background of every page. By default, this property is Transparent. |
HorizontalResolution | Sets horizontal resolution for output images in pixels per inch. The default value is 300 dpi. |
VerticalResolution | Sets vertical resolution for output images in pixels per inch. The default value is 300 dpi. |
MediaType | Sets MediaType which will be used for media queries resolution during rendering. Default value is Print. |
Горизонтальное и Вертикальное Разрешение
В следующем примере мы покажем, как мы можем управлять разрешением результирующего файла изображения, в конечном итоге влияя на его размер и качество:
1using System.IO;
2using Aspose.Html;
3using Aspose.Html.Rendering.Image;
4...
5 // Prepare path to a source HTML file
6 string documentPath = Path.Combine(DataDir, "spring.html");
7
8 // Create an instance of HTML document
9 using var document = new HTMLDocument(documentPath);
10
11 // Prepare path to save output file
12 string savePath1 = Path.Combine(OutputDir, "output_resolution_50.png");
13 string savePath2 = Path.Combine(OutputDir, "output_resolution_300.png");
14
15 // Create options for low-resolution screens
16 var options1 = new ImageRenderingOptions()
17 {
18 HorizontalResolution = 50,
19 VerticalResolution = 50
20 };
21
22 // Create an instance of Image device
23 using var device1 = new ImageDevice(options1, savePath1);
24
25 // Render HTML to PNG
26 document.RenderTo(device1);
27
28
29 // Create options for high-resolution screens
30 var options2 = new ImageRenderingOptions()
31 {
32 HorizontalResolution = 300,
33 VerticalResolution = 300
34 };
35
36 // Create an instance of Image device
37 using var device2 = new ImageDevice(options2, savePath2);
38
39 // Render HTML to PNG
40 document.RenderTo(device2);
На следующем рисунке показан результат рендеринга файла spring.html с разрешением 50 dpi и 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.
1using System.IO;
2using Aspose.Html;
3using Aspose.Html.Rendering.Pdf;
4...
5 // Prepare path to a source HTML file
6 string documentPath = Path.Combine(DataDir, "spring.html");
7
8 // Prepare path for converted file saving
9 string savePath = Path.Combine(OutputDir, "spring.pdf");
10
11 // Create an instance of HTML document
12 using var document = new HTMLDocument(documentPath);
13
14 // Initialize options with 'cyan' as a background-color
15 var options = new PdfRenderingOptions()
16 {
17 BackgroundColor = System.Drawing.Color.Azure
18 };
19
20 // Create an instance of PDF device
21 using var device = new PdfDevice(options, savePath);
22
23 // Render HTML to PDF
24 document.RenderTo(device);
Параметры страницы – Page Setup
Параметры страницы – это набор параметров, определяющих макет печатной страницы. Эти параметры включают в себя все, от размера страницы, полей и автоматического изменения размера до правил приоритета @page. Используя этот набор параметров, вы можете легко настроить индивидуальный макет для каждой страницы.
В следующем примере показано, как создать PDF-документ с разными размерами страниц для левой и правой страниц (см. визуализацию результата на рисунке (a) ниже):
1using System.IO;
2using Aspose.Html;
3using Aspose.Html.Rendering.Pdf;
4using Aspose.Html.Drawing;
5...
6 // Prepare HTML code
7 var code = @"<style>div { page-break-after: always; }</style>
8 <div>First Page</div>
9 <div>Second Page</div>
10 <div>Third Page</div>
11 <div>Fourth Page</div>";
12
13 // Initialize an HTML document from the HTML code
14 using var document = new HTMLDocument(code, ".");
15
16 // Create the instance of Rendering Options and set a custom page-size
17 var options = new PdfRenderingOptions();
18 options.PageSetup.SetLeftRightPage(
19 new Page(new Size(400, 150)),
20 new Page(new Size(400, 100))
21 );
22
23 // Prepare path for converted file saving
24 string savePath = Path.Combine(OutputDir, "output-custom-page-size.pdf");
25
26 // Create the PDF Device and specify options and output file
27 using var device = new PdfDevice(options, savePath);
28
29 // Render HTML to PDF
30 document.RenderTo(device);
В некоторых случаях содержимое HTML-страницы может быть шире, чем размер страницы, определенный параметрами. Если вы не хотите обрезать содержимое страницы, вы можете попробовать свойство AdjustToWidestPage класса PageSetup. В следующем примере показано, как настроить размер страницы в соответствии с содержимым (см. визуализацию результата на рисунке (b) ниже):
1using System.IO;
2using Aspose.Html;
3using Aspose.Html.Rendering.Pdf;
4using Aspose.Html.Drawing;
5...
6 // Prepare HTML code
7 var code = @"<style>
8 div { page-break-after: always; }
9 </style>
10 <div style='border: 1px solid red; width: 300px'>First Page</div>
11 <div style='border: 1px solid red; width: 500px'>Second Page</div>
12 ";
13 // Initialize an HTML document from the HTML code
14 using var document = new HTMLDocument(code, ".");
15
16 // Create the instance of Rendering Options and set a custom page size
17 var options = new PdfRenderingOptions();
18 options.PageSetup.AnyPage = new Page(new Size(400, 200));
19
20 // Enable auto-adjusting for the page size
21 options.PageSetup.AdjustToWidestPage = true;
22
23 // Prepare path for converted file saving
24 string savePath = Path.Combine(OutputDir, "output-widest-page-size.pdf");
25
26 // Create the PDF Device and specify options and output file
27 using var device = new PdfDevice(options, savePath);
28
29 // Render HTML to PDF
30 document.RenderTo(device);
Чтобы узнать больше о процессе рендеринга, прочитайте статью Устройство рендеринга.
Если вас интересует, как использовать параметры рендеринга для изменения размера страниц документа в соответствии с размером содержимого и наоборот, посетите статью Как изменить размер документа во время преобразования из HTML?
PDF Options
Класс PdfRenderingOptions, наряду с общими параметрами, поддерживает некоторые специфические параметры, такие как JpegQuality, DocumentInfo, Encryption и FormFieldBehaviour.
Property | Description |
---|---|
JpegQuality | Specifies the quality of JPEG compression for images. The default value is 95. |
DocumentInfo | This property contains information about the output PDF document. |
Encryption | This property gets or sets encryption details. If it is not set, then no encryption will be performed. |
FormFieldBehaviour | This property specifies the behavior of form fields in the output PDF document. |
Свойство FormFieldBehaviour используется для указания поведения полей формы в документе PDF. Чтобы узнать, что означает сведение файла PDF и как это сделать с помощью библиотеки Aspose.HTML для .NET, обратитесь к статье Flatten PDF.
Следующий код C# демонстрирует, как добавить шифрование в выходной файл PDF с помощью класса PdfRenderingOptions
:
1using System.IO;
2using Aspose.Html;
3using Aspose.Html.Rendering.Pdf;
4using Aspose.Html.Rendering.Pdf.Encryption;
5...
6 // Prepare a path to a source HTML file
7 string documentPath = Path.Combine(DataDir, "document.html");
8
9 // Initialize the HTML document from the file
10 using var document = new HTMLDocument(documentPath);
11
12 // Create the instance of Rendering Options
13 var options = new PdfRenderingOptions();
14
15 // Set the permissions to the file
16 options.Encryption = new PdfEncryptionInfo(
17 "user_pwd",
18 "owner_pwd",
19 PdfPermissions.PrintDocument,
20 PdfEncryptionAlgorithm.RC4_128);
21
22 // Prepare path for converted file saving
23 string savePath = Path.Combine(OutputDir, "output-options.pdf");
24
25 // Create an instance of the PdfDevice and specify options and output file
26 using var device = new PdfDevice(options, savePath);
27
28 // Render HTML to PDF
29 document.RenderTo(device);
В приведенном выше примере показано, как создать новый экземпляр
PdfRenderingOptions и установить параметры шифрования для выходного файла PDF. Для этого вы должны использовать
PdfEncryptionInfo(userPassword
, ownerPassword
, permissions
, encryptionAlgorithm
) для создания объекта PdfEncryptionInfo
, который определяет параметры шифрования для файла PDF. Конструктор принимает четыре параметра:
userPassword
иownerPassword
, необходимые для открытия и работы с файлом PDF;permissions
– набор разрешенных разрешений для файла PDF. В этом случае указываетсяPdfPermissions.PrintDocument
, что позволяет пользователю распечатать документ;encryptionAlgorithm
– алгоритм шифрования, используемый для защиты файла PDF. В этом случае используетсяPdfEncryptionAlgorithm.RC4_128
, который представляет собой 128-битный алгоритм шифрования RC4.
Image Options
Класс ImageRenderingOptions поддерживает все общие параметры и позволяет настраивать определенные параметры, например сглаживание. (дизеринг), конфигурация рендеринга текста, форматы изображений и сжатие изображений.
Property | Description |
---|---|
Compression | Sets Tagged Image File Format (TIFF) Compression. By default, this property is LZW. |
Format | Sets the ImageFormat (JPG, PNG, BMP, TIFF, or GIF). By default, this property is PNG. |
SmoothingMode | This property sets the rendering quality for this image. Available values are Invalid, Default, HighSpeed, HighQuality, None, and AntiAlias. |
Text | Gets a TextOptions object which is used for configuration of text rendering. |
Рассмотрим, как использовать специализированный объект ImageRenderingOptions для настройки качества рендеринга изображения. В следующем примере показано, как изменить разрешение и сглаживание для результирующего изображения.
1using System.IO;
2using Aspose.Html;
3using Aspose.Html.Rendering.Image;
4using Aspose.Html.Drawing;
5using System.Drawing.Drawing2D;
6...
7 // Prepare a path to a source HTML file
8 string documentPath = Path.Combine(DataDir, "color.html");
9
10 // Initialize the HTML document from the file
11 using var document = new HTMLDocument(documentPath);
12
13 // Create an instance of Rendering Options
14 var options = new ImageRenderingOptions(ImageFormat.Jpeg)
15 {
16 // Disable smoothing mode
17 SmoothingMode = SmoothingMode.None,
18
19 // Set the image resolution as 75 dpi
20 VerticalResolution = Resolution.FromDotsPerInch(75),
21 HorizontalResolution = Resolution.FromDotsPerInch(75),
22 };
23
24 // Prepare path for converted file saving
25 string savePath = Path.Combine(OutputDir, "color-options.jpg");
26
27 // Create an instance of the ImageDevice and specify options and output file
28 using var device = new ImageDevice(options, savePath);
29
30 // Render HTML to JPG
31 document.RenderTo(device);
XPS Options
Файлы XPS, сгенерированные нашей библиотекой, не имеют каких-либо определенных параметров. Все параметры XpsRenderingOptions унаследованы от базового класса RenderingOptions и описаны здесь.
1using System.IO;
2using Aspose.Html;
3using Aspose.Html.Rendering.Xps;
4...
5 // Prepare a path to a source HTML file
6 string documentPath = Path.Combine(DataDir, "document.html");
7
8 // Initialize the HTML document from the file
9 using var document = new HTMLDocument(documentPath);
10
11 // Create an instance of Rendering Options
12 var options = new XpsRenderingOptions();
13 options.PageSetup.AnyPage = new Page(new Size(Length.FromInches(5), Length.FromInches(2)));
14
15 // Prepare path for converted file saving
16 string savePath = Path.Combine(OutputDir, "document-options.xps");
17
18 // Create an instance of the XpsDevice and specify options and output file
19 using var device = new XpsDevice(options, savePath);
20
21 // Render HTML to XPS
22 document.RenderTo(device);
DOCX Options
Класс DocRenderingOptions поддерживает все общие параметры и позволяет настраивать свойства FontEmbeddingRule и DocumentFormat для выходной файл.
Property | Description |
---|---|
FontEmbeddingRule | This property gets or sets the font embedding rule. Available values are Full and None. The default value is None. |
DocumentFormat | This property gets or sets the file format of the output document. The default value is DOCX. |
В следующем примере показано, как настроить параметры рендеринга для выходных документов, установив размер страницы и правило встраивания шрифта:
1using System.IO;
2using Aspose.Html;
3using Aspose.Html.Rendering.Doc;
4...
5 // Prepare a path to a source HTML file
6 string documentPath = Path.Combine(DataDir, "document.html");
7
8 // Initialize the HTML document from the file
9 using var document = new HTMLDocument(documentPath);
10
11 // Create an instance of Rendering Options and set a custom page size
12 var options = new DocRenderingOptions();
13 options.PageSetup.AnyPage = new Page(new Size(Length.FromInches(6), Length.FromInches(3)));
14 options.FontEmbeddingRule = (FontEmbeddingRule.Full);
15
16 // Prepare path for converted file saving
17 string savePath = Path.Combine(OutputDir, "document-options.docx");
18
19 // Create an instance of the DocDevice and specify options and output file
20 using var device = new DocDevice(options, savePath);
21
22 // Render HTML to DOCX
23 document.RenderTo(device);
Вы можете скачать полные примеры C# и файлы данных с GitHub.
Aspose.HTML предлагает бесплатные онлайн Конвертеры, которые могут преобразовывать файлы HTML, XHTML, MHTML, EPUB, XML и Markdown в ряд популярных форматов. Вы можете легко конвертировать HTML-документы в форматы PDF, XPS, DOCX, JPG, PNG, GIF, TIFF и другие форматы. Просто выберите файл, выберите формат для преобразования, и все готово. Лучше всего то, что это совершенно бесплатно!