Configuración del entorno – C#

A menudo resulta útil tener diferentes configuraciones según el entorno donde se ejecuta la aplicación. Por ejemplo, es posible que desee configurar la política de secuencias de comandos, anular el estilo del documento aplicando una hoja de estilo de usuario personalizada o manejar cualquier solicitud web desde la aplicación. Aspose.HTML for .NET proporciona la clase Configuration que se puede usar exactamente para estos propósitos.

Zona de arena – Sandbox

Un conjunto de banderas de espacio aislado es un conjunto de cero o más banderas, que se utilizan para restringir las capacidades de recursos potencialmente no confiables. El atributo Sandbox le permite establecer una serie de restricciones sobre el contenido cargado en el marco, por ejemplo, bloquear formularios y scripts. Esto mejora la seguridad del documento actual, especialmente cuando un documento se carga en el marco desde una fuente no verificada.

El siguiente ejemplo demuestra cómo marcar Scripts como un recurso que no es de confianza. Como resultado, los Scripts se desactivarán durante la ejecución de la aplicación.

 1// Prepare HTML code and save it to a file
 2var code = "<span>Hello, World!!</span> " +
 3           "<script>document.write('Have a nice day!');</script>";
 4
 5File.WriteAllText(Path.Combine(OutputDir, "sandboxing.html"), code);
 6
 7// Create an instance of Configuration
 8using (var configuration = new Configuration())
 9{
10    // Mark 'scripts' as an untrusted resource
11    configuration.Security |= Sandbox.Scripts;
12
13    // Initialize an HTML document with specified configuration
14    using (var document = new HTMLDocument(Path.Combine(OutputDir, "sandboxing.html"), configuration))
15    {
16        // Convert HTML to PDF
17        Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "sandboxing_out.pdf"));
18    }
19}

Servicios – Services

Todas las funciones importantes se agrupan en servicios separados por motivos de usabilidad y se ubican en el espacio de nombres Aspose.Html.Services.

Servicio de agente de usuario – User Agent Service

El User Agent Service le permite especificar una hoja de estilo de usuario personalizada, un conjunto de caracteres principal para el documento, el idioma y la configuración de fuentes. Puede especificar su información de estilo personalizada para un documento en particular y proporcionar tantos o tan pequeños cambios de configuración del entorno como sea necesario. La interfaz IUserAgentService describe un entorno de agente de usuario.

Hoja de estilo de usuario – User Style Sheet

El usuario puede especificar información de estilo personalizada para un documento en particular. Esta información se aplica al documento de acuerdo con las cascading rules y puede afectar la presentación del documento. El siguiente fragmento de código muestra cómo utilizar la propiedad UserStyleSheet:

 1// Prepare HTML code and save it to a file
 2var code = "<h1>User Agent Service </h1>\r\n" +
 3           "<p>The User Agent Service allows you to specify a custom user stylesheet, a primary character set for the document, language and fonts settings.</p>\r\n";
 4           
 5File.WriteAllText(Path.Combine(OutputDir, "user-agent-stylesheet.html"), code);
 6
 7// Create an instance of Configuration
 8using (var configuration = new Configuration())
 9{
10    // Get the IUserAgentService
11    var userAgentService = configuration.GetService<IUserAgentService>();
12
13    // Set the custom style parameters for the <h1> and <p> elements
14    userAgentService.UserStyleSheet = "h1 { color:#a52a2a;; font-size:2em;}\r\n" +
15                                      "p { background-color:GhostWhite; color:SlateGrey; font-size:1.2em; }\r\n";
16                    
17    // Initialize the HTML document with specified configuration
18    using (var document = new HTMLDocument(Path.Combine(OutputDir, "user-agent-stylesheet.html"), configuration))
19    {                   
20        // Convert HTML to PDF
21        Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "user-agent-stylesheet_out.pdf"));
22    }
23}

Conjunto de caracteres – Character Set

La propiedad CharSet establece el juego de caracteres principal de un documento. Para analizar y mostrar un documento HTML correctamente, la aplicación debe saber qué conjunto de caracteres (codificación) se utiliza para el documento. Si la codificación de caracteres no se especifica directamente en el encabezado del documento, Aspose.HTML for .NET usa UTF-8, que se define como el valor predeterminado para la especificación HTML5. Sin embargo, si está seguro de que su documento HTML está escrito con una codificación diferente a la UTF-8, puede especificarla manualmente, como se indica a continuación.

 1// Prepare HTML code and save it to a file
 2var code = "<h1>Character Set</h1>\r\n" +
 3           "<p>The <b>CharSet</b> property sets the primary character-set for a document.</p>\r\n";
 4
 5File.WriteAllText(Path.Combine(OutputDir, "user-agent-charset.html"), code);
 6
 7// Create an instance of Configuration
 8using (var configuration = new Configuration())
 9{
10    // Get the IUserAgentService
11    var userAgentService = configuration.GetService<IUserAgentService>();
12
13    // Set the custom style parameters for the <h1> and <p> elements
14    userAgentService.UserStyleSheet = "h1 { color:salmon; }\r\n" +
15                                      "p { background-color:#f0f0f0; color:DarkCyan; font-size:1.2em; }\r\n";
16
17    // Set ISO-8859-1 encoding to parse the document
18    userAgentService.CharSet = "ISO-8859-1";
19                    
20    // Initialize the HTML document with specified configuration
21    using (var document = new HTMLDocument(Path.Combine(OutputDir, "user-agent-charset.html"), configuration))
22    {
23        // Convert HTML to PDF
24        Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "user-agent-charset_out.pdf"));
25    }
26}

En el ejemplo anterior, hemos utilizado las propiedades CharSet y UserStyleSheet para configurar la codificación ISO-8859-1 y un estilo de usuario.

Instalar carpeta de fuentes

Aspose.HTML for .NET es una potente biblioteca para trabajar con documentos HTML en aplicaciones .NET. Proporciona una amplia gama de funciones que permiten a los desarrolladores representar documentos HTML en varios formatos de salida, como PDF, XPS, DOCX e imágenes. Una de las características clave de Aspose.HTML es su capacidad para trabajar con fuentes personalizadas, lo que permite a los desarrolladores agregar sus propias fuentes al proceso de renderizado.

La propiedad FontsSettings se utiliza para la configuración del manejo de fuentes. Para una situación en la que necesite utilizar fuentes personalizadas en lugar de las fuentes instaladas en el sistema operativo, puede establecer la ruta a su carpeta personalizada, como se muestra en el siguiente fragmento de código:

 1// Prepare HTML code and save it to a file
 2var code = "<h1>FontsSettings property</h1>\r\n" +
 3           "<p>The FontsSettings property is used for configuration of fonts handling.</p>\r\n";
 4
 5File.WriteAllText(Path.Combine(OutputDir, "user-agent-fontsetting.html"), code);
 6
 7// Create an instance of Configuration
 8using (var configuration = new Configuration())
 9{
10    // Get the IUserAgentService
11    var userAgentService = configuration.GetService<IUserAgentService>();
12
13    // Set the custom style parameters for the <h1> and <p> elements
14    userAgentService.UserStyleSheet = "h1 { color:#a52a2a; }\r\n" +
15                                      "p { color:grey; }\r\n";
16              
17    // Set a custom font folder path
18    userAgentService.FontsSettings.SetFontsLookupFolder(Path.Combine(DataDir + "fonts"));
19
20    // Initialize the HTML document with specified configuration
21    using (var document = new HTMLDocument(Path.Combine(OutputDir, "user-agent-fontsetting.html"), configuration))
22    {
23        // Convert HTML to PDF
24        Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "user-agent-fontsetting_out.pdf"));
25    }
26}

Para configurar la carpeta de fuentes usando la biblioteca Aspose.HTML for .NET, usamos el método SetFontsLookupFolder() de la clase FontsSettings. Este método le permite especificar la carpeta donde se encuentran las fuentes personalizadas. Al configurar la carpeta de fuentes, Aspose.HTML buscará fuentes en la carpeta especificada al representar el documento HTML.

La figura ilustra el resultado de las propiedades FontsSettings y UserStyleSheet aplicando (b) al archivo fuente “user-agent-fontsetting.html” (a).

Texto “propiedad FontsSettings”

Servicio de tiempo de ejecución – Runtime Service

Este servicio le brinda control sobre la vida útil de los procesos internos. Por ejemplo, utilizando IRuntimeService puede especificar tiempos de espera para JavaScripts. Es importante tener dicho tiempo de espera en caso de que un script contenga un bucle sin fin. El siguiente fragmento de código demuestra cómo utilizar los tiempos de espera.

 1// Prepare an HTML code and save it to a file
 2var code = "<h1>Runtime Service</h1>\r\n" +
 3           "<script> while(true) {} </script>\r\n" +
 4           "<p>The Runtime Service optimizes your system by helping it start apps and programs faster.</p>\r\n";
 5
 6File.WriteAllText(Path.Combine(OutputDir, "runtime-service.html"), code);
 7
 8// Create an instance of Configuration
 9using (var configuration = new Configuration())
10{
11    // Limit JS execution time to 5 seconds
12    var runtimeService = configuration.GetService<IRuntimeService>();
13    runtimeService.JavaScriptTimeout = TimeSpan.FromSeconds(5);
14
15    // Initialize an HTML document with specified configuration
16    using (var document = new HTMLDocument(Path.Combine(OutputDir, "runtime-service.html"), configuration))
17    {
18        // Convert HTML to PNG
19        Converter.ConvertHTML(document, new ImageSaveOptions(), Path.Combine(OutputDir, "runtime-service_out.png"));
20    }
21}

Servicio de red – Network Service

Aspose.HTML for .NET ofrece INetworkService que le permite controlar todo el tráfico entrante/saliente e implementar sus controladores de mensajes personalizados. Se puede utilizar para diferentes propósitos, tales como: crear un mecanismo de almacenamiento en caché personalizado, mensajes de solicitud de seguimiento/registro, etc.

Controladores de mensajes – Message Handlers

El siguiente ejemplo demuestra cómo crear un controlador de mensajes personalizado (LogMessageHandler) para registrar información sobre recursos inaccesibles:

 1private class LogMessageHandler : MessageHandler
 2{
 3    private List<string> errors = new List<string>();
 4
 5    public List<string> ErrorMessages
 6    {
 7        get { return errors; }
 8    }
 9
10    public override void Invoke(INetworkOperationContext context)
11    {
12        // Check whether response is OK
13        if (context.Response.StatusCode != HttpStatusCode.OK)
14        {
15            // Set error information
16            errors.Add(string.Format("File '{0}' Not Found", context.Request.RequestUri));
17        }
18
19        // Invoke the next message handler in the chain
20        Next(context);
21    }
22}

El siguiente fragmento de código demuestra cómo utilizar la clase LogMessageHandler creada en el ejemplo anterior para registrar información sobre recursos no disponibles.

 1// Prepare HTML code and save it to a file
 2var code = "<img src=\"https://docs.aspose.com/svg/net/drawing-basics/filters-and-gradients/park.jpg\" >\r\n" +
 3           "<img src=\"https://docs.aspose.com/html/net/missing1.jpg\" >\r\n" +
 4           "<img src=\"https://docs.aspose.com/html/net/missing2.jpg\" >\r\n";
 5
 6File.WriteAllText(Path.Combine(OutputDir, "network-service.html"), code);
 7
 8// Create an instance of Configuration
 9using (var configuration = new Configuration())
10{
11    // Add the LogMessageHandler to the chain of existing message handlers
12    var networkService = configuration.GetService<INetworkService>();
13
14    var logHandler = new LogMessageHandler();
15    networkService.MessageHandlers.Add(logHandler);
16
17    // Initialize an HTML document with specified configuration
18    using (var document = new HTMLDocument(Path.Combine(OutputDir, "network-service.html"), configuration))
19    {
20        //Convert HTML to PNG
21        Converter.ConvertHTML(document, new ImageSaveOptions(), Path.Combine(OutputDir, "network-service_out.png"));
22
23        // Print the List of ErrorMessages
24        foreach (string errorMessage in logHandler.ErrorMessages)
25        {
26            Console.WriteLine(errorMessage);
27        }
28    }               
29}

Después de ejecutar el ejemplo:

File 'https://docs.aspose.com/html/net/missing1.jpg' Not Found
File 'https://docs.aspose.com/html/net/missing2.jpg' Not Found

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

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.