Renderizadores – renderice HTML, MHTML, EPUB y SVG en C#

Renderizadores

El espacio de nombres Aspose.Html.Rendering consta de numerosos objetos de representación y clases de opciones de bajo nivel apropiadas, que son responsables de representar documentos en la implementación de IDevice. Aspose.HTML for .NET API proporciona la siguiente realización de renderizadores: HtmlRenderer, SvgRenderer, MhtmlRenderer, y EpubRenderer, que se utilizan para representar HTML, Documentos SVG, MHTML y EPUB, respectivamente.

Si bien el método RenderTo() de la clase Documento le brinda la posibilidad de enviar un solo documento al dispositivo de procesamiento de salida, utilizando las instancias Renderer directamente, puede enviar varios archivos a la vez. Por lo tanto, puede combinar documentos HTML, MHTML, EPUB y SVG y aplicar opciones de renderizado para convertir el archivo de salida.

El artículo actual describe escenarios admitidos de conversión y fusión de archivos basados ​​en HTML a otros formatos populares utilizando los métodos Render() de la clase Renderer.

HtmlRenderer

El uso de la clase HtmlRenderer para renderizar archivos HTML a otros formatos populares es una forma más de convertir HTML personalizando las opciones de renderizado y controlando la salida del proceso de renderizado. Veamos el uso de la clase HtmlRenderer para representar HTML a PDF con opciones de representación personalizadas:

  1. Inicialice un documento HTML. Utilice uno de los constructores HTMLDocument() para crear una instancia de HTMLDocument.
  2. Cree un nuevo objeto HtmlRenderer.
  3. Cree la instancia de PdfRenderingOptions y establezca opciones personalizadas para el documento PDF de salida. En el ejemplo, especificamos la propiedad AnyPage de la clase PageSetup que establece un nuevo objeto Página con un tamaño de página de 600 x 200 píxeles y la propiedad Encryption que identifica las contraseñas de usuario y propietario. , permisos permitidos y algoritmo de cifrado para el archivo PDF de salida.
  4. Utilice el constructor PdfDevice(options, savePath) para crear un objeto de la clase PdfDevice.
  5. Y finalmente, llame al método Render(device, document) para renderizar el documento HTML en el archivo PDF de salida con las opciones de renderizado especificadas.
 1// Prepare a path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "file.html");
 3
 4// Initialize an HTML document from the file
 5using var document = new HTMLDocument(documentPath);
 6
 7// Create an instance of HTML Renderer
 8using var renderer = new HtmlRenderer();
 9
10// Prepare a path to save the converted file 
11string savePath = Path.Combine(OutputDir, "convert-html-options.pdf");
12
13// Create the instance of Rendering Options and set a custom page-size
14var options = new PdfRenderingOptions();
15options.PageSetup.AnyPage = new Page(new Size(600, 200));
16options.Encryption = new PdfEncryptionInfo(
17       "user_pwd",
18       "owner_pwd",
19       PdfPermissions.PrintDocument,
20       PdfEncryptionAlgorithm.RC4_128);
21
22// Create an instance of PDF device
23using var device = new PdfDevice(options, savePath);
24
25// Render HTML to PDF
26renderer.Render(device, document);

Las opciones de renderizado le brindan control adicional sobre el proceso de renderizado. Para obtener más información sobre ellos, lea el artículo Opciones de renderizado.

Para obtener más información sobre el proceso de renderizado, lea el artículo Dispositivo de renderizado.

Si está interesado en cómo utilizar las opciones de representación para cambiar el tamaño de las páginas del documento al tamaño del contenido y viceversa, visite el artículo ¿Cómo cambiar el tamaño del documento durante la conversión desde HTML?

SVGRenderer

El SvgRenderer le permite renderizar archivos SVG en otros formatos de archivo, como PDF, XPS, DOCX y formatos de imagen. Con esto, puede personalizar el archivo de salida utilizando varias opciones de renderizado. El siguiente ejemplo demuestra cómo utilizar la clase SvgRenderer para representar SVG a PDF con un tamaño de página personalizado que especifica:

  1. Inicialice un documento SVG. Utilice uno de los constructores SVGDocument() para crear una instancia de SVGDocument.
  2. Cree un nuevo objeto SvgRenderer.
  3. Cree una instancia de PdfRenderingOptions y configure opciones personalizadas para el documento PDF de salida. En el ejemplo, especificamos la propiedad PageSetup.AnyPage que establece un nuevo objeto Página con un tamaño de página de 600x500 píxeles.
  4. Utilice el constructor PdfDevice(options, savePath) para crear un objeto de la clase PdfDevice.
  5. Y finalmente, llame al método Render(device, document) para renderizar el documento SVG en el archivo PDF de salida con las opciones de renderizado especificadas.
 1// Initialize an SVG document from the file
 2using var document = new SVGDocument(Path.Combine(DataDir, "shapes.svg"));           
 3
 4// Create an instance of SVG Renderer
 5using var renderer = new SvgRenderer();
 6
 7// Prepare a path to save the converted file 
 8string savePath = Path.Combine(OutputDir, "rendering-svg.pdf");
 9
10// Create the instance of Rendering Options and set a custom page-size
11var options = new PdfRenderingOptions();
12options.PageSetup.AnyPage = new Page(new Size(600, 500));
13
14// Create an instance of the Pdfdevice class
15using var device = new PdfDevice(options, savePath);
16
17// Merge all SVG documents into PDF
18renderer.Render(device, document);

MhtmlRenderer

El siguiente ejemplo demuestra cómo convertir MHTML a PDF con las opciones de representación especificadas mediante la clase MhtmlRenderer:

  1. Abra un documento MHTML existente.
  2. Cree una instancia de MhtmlRenderer usando el constructor MhtmlRenderer().
  3. Inicialice la clase PdfRenderingOptions y establezca las opciones de representación.
  4. Cree una instancia de la clase PdfDevice.
  5. Llame al método Render(device, stream) para renderizar MHTML a PDF.
 1// Open an existing MHTML file for reading
 2using var stream = File.OpenRead(DataDir + "sample.mht");
 3
 4// Create an instance of MHTML Renderer
 5using var renderer = new MhtmlRenderer();
 6
 7// Prepare a path to save the converted file 
 8string savePath = Path.Combine(OutputDir, "convert-mhtml-options.pdf");
 9
10// Create the instance of Rendering Options and set a custom page-size and background color
11var options = new PdfRenderingOptions();
12options.PageSetup.AnyPage = new Page(new Size(600, 200));
13options.BackgroundColor = System.Drawing.Color.Azure;
14
15// Create an instance of PDF device
16using var device = new PdfDevice(options, savePath);
17
18// Convert MHTML to PDF
19renderer.Render(device, stream);

EpubRenderer

La clase EpubRenderer le permite convertir archivos EPUB a otros formatos como PDF, XPS, DOCX e imágenes. Los siguientes ejemplos de C# muestran cómo convertir EPUB a DOCX con una configuración de tamaño de página personalizada:

  1. Abra un archivo EPUB existente.
  2. Cree una instancia de la clase EpubRenderer.
  3. Inicialice la clase DocRenderingOptions y configure las opciones de representación.
  4. Cree una instancia de la clase DocDevice.
  5. Llame al método Render(device, stream) para renderizar EPUB a DOCX.
 1// Open an existing EPUB file for reading
 2using var stream = File.OpenRead(DataDir + "input.epub");
 3
 4// Create an instance of EPUB Renderer
 5using var renderer = new EpubRenderer();
 6
 7// Prepare a path to save the converted file 
 8string savePath = Path.Combine(OutputDir, "convert-epub-options.docx");
 9
10// Create the instance of Rendering Options and set a custom page-size
11var options = new DocRenderingOptions();
12options.PageSetup.AnyPage = new Page(new Size(800, 400));            
13
14// Create an instance of the DocDevice class
15using var device = new DocDevice(options, savePath);
16
17// Render EPUB to DOCX
18renderer.Render(device, stream);

Fusionar HTML

Aspose.HTML for .NET API proporciona la clase Renderer para renderizar y fusionar documentos HTML, MHTML, EPUB y SVG en formatos populares. Si bien el método RenderTo() le brinda la posibilidad de enviar un solo documento al dispositivo de procesamiento de salida, utilizando las instancias Renderer directamente, puede enviar varios archivos a la vez. Utilizando la implementación de renderizadores: HtmlRenderer, SvgRenderer, MhtmlRenderer y EpubRenderer, puede fusionar documentos HTML, SVG, MHTML y EPUB, respectivamente. El siguiente ejemplo demuestra cómo utilizar HtmlRenderer para representar varios documentos HTML:

 1// Prepare HTML code
 2var code1 = @"<br><span style='color: green'>Hello, World!!</span>";
 3var code2 = @"<br><span style='color: blue'>Hello, World!!</span>";
 4var code3 = @"<br><span style='color: red'>Hello, World!!</span>";
 5
 6// Create three HTML documents to merge later
 7using var document1 = new HTMLDocument(code1, ".");
 8using var document2 = new HTMLDocument(code2, ".");
 9using var document3 = new HTMLDocument(code3, ".");
10
11// Create an instance of HTML Renderer
12using var renderer = new HtmlRenderer();
13
14// Prepare a path to save the converted file 
15string savePath = Path.Combine(OutputDir, "merge-html.pdf");
16
17// Create an instance of PDF device
18using var device = new PdfDevice(savePath);
19        
20// Merge all HTML documents into PDF
21renderer.Render(device, document1, document2, document3);

Establecer tiempo de espera

Una característica más importante que está disponible para los renderizadores es el tiempo de espera. Puede usarlo para especificar cuánto tiempo está listo para esperar a que se completen todos los procesos internos relacionados con el ciclo de vida de un documento, como la carga de recursos, temporizadores activos, etc. Claro, puede especificar un período de espera infinito. Sin embargo, si el documento contiene un script con un bucle sin fin, esperará indefinidamente. El siguiente ejemplo demuestra cómo utilizar el parámetro de tiempo de espera:

 1// Prepare HTML code
 2var code = @"
 3<script>
 4    var count = 0;
 5    setInterval(function()
 6        {
 7            var element = document.createElement('div');
 8            var message = (++count) + '. ' + 'Hello, World!! I know how to use Renderers!';
 9            var text = document.createTextNode(message);
10            element.appendChild(text);
11            document.body.appendChild(element);
12        }, 1000);
13</script>";
14
15// Initialize an HTML document based on prepared HTML code
16using var document = new HTMLDocument(code, ".");
17
18// Create an instance of HTML Renderer
19using HtmlRenderer renderer = new HtmlRenderer();
20
21// Prepare a path to save the converted file 
22string savePath = Path.Combine(OutputDir, "output-timeout.pdf");
23
24// Create an instance of the PdfDevice class
25using var device = new PdfDevice(savePath);
26        
27// Render HTML to PDF
28renderer.Render(device, TimeSpan.FromSeconds(5), document);

En este ejemplo, creamos un documento HTML que agrega un nuevo elemento <div> cada segundo con un número secuencial y el mensaje “Hello, World!!” Usamos el parámetro TimeSpan en el método Render(device, timeout, document) para establecer el tiempo de espera. Esta configuración especifica el tiempo máximo que el renderizador dedicará a renderizar el documento. En este caso, el tiempo total se establece en 5 segundos. Si el renderizador no ha generado un documento dentro del tiempo especificado, se detendrá y renderizará un documento parcialmente renderizado. Al ejecutar este ejemplo, obtendrá un documento con cinco líneas que dicen “Hello, World!! I know how to use Renderers!” mensaje, de la siguiente manera:

Cinco líneas de “Hello, World!! I know how to use Renderers!”

Puede descargar los ejemplos completos de C# y los archivos de datos desde GitHub.

Aspose.HTML ofrece Convertidores gratuitos en línea que pueden convertir archivos HTML, XHTML, MHTML, EPUB, XML y Markdown a una variedad de formatos populares. Puede convertir fácilmente sus documentos basados ​​en HTML a PDF, XPS, DOCX, JPG, PNG, GIF, TIFF y otros. Simplemente seleccione un archivo, elija el formato a convertir y listo. ¡Lo mejor de todo es que es completamente gratis!

Texto “Convertidores en línea gratuitos”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.