Umgebungskonfiguration – C#

Oft ist es hilfreich, je nach Umgebung, in der die Anwendung ausgeführt wird, unterschiedliche Konfigurationen zu haben. So kann es z.B. sinnvoll sein, die Skript-Policy zu konfigurieren, den Dokumentenstil mit einem benutzerdefinierten Stylesheet zu überschreiben oder Web-Anfragen aus der Anwendung heraus zu bearbeiten. Aspose.HTML for .NET bietet die Klasse Configuration, die genau für diese Zwecke verwendet werden kann.

Sandboxing

Ein Sandboxing-Flag ist ein Satz von null oder mehr Flags, die verwendet werden, um die Fähigkeiten von potenziell nicht vertrauenswürdigen Ressourcen zu beschränken. Mit dem Sandbox-Attribut können Sie eine Reihe von Einschränkungen für den in den Frame geladenen Inhalt festlegen, z. B. Formulare und Skripte blockieren. Dadurch wird die Sicherheit des aktuellen Dokuments verbessert, insbesondere wenn ein Dokument aus einer nicht verifizierten Quelle in den Frame geladen wird.

Das folgende Beispiel zeigt, wie man Scripts als nicht vertrauenswürdige Ressource kennzeichnet. Infolgedessen wird “Scripts” während der Ausführung der Anwendung deaktiviert.

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

Dienste

Alle wichtigen Funktionen sind aus Gründen der Benutzerfreundlichkeit in separaten Services gruppiert und befinden sich im Aspose.Html.Services Namespace.

User Agent Dienst

Der User Agent Service ermöglicht es Ihnen, ein benutzerdefiniertes Stylesheet, einen primären Zeichensatz für das Dokument sowie Sprach- und Schrifteinstellungen anzugeben. Sie können Ihre benutzerdefinierten Stilinformationen für ein bestimmtes Dokument angeben und die Umgebungskonfiguration so wenig oder so viel wie nötig ändern. Die Schnittstelle IUserAgentService beschreibt eine User-Agent-Umgebung.

Benutzer-Stilvorlage

Der Benutzer kann benutzerdefinierte Stilinformationen für ein bestimmtes Dokument angeben. Diese Informationen gelten für das Dokument gemäß den Kaskadierungsregeln und können die Darstellung des Dokuments beeinflussen. Das folgende Codeschnipsel zeigt, wie die Eigenschaft “UserStyleSheet” verwendet werden kann:

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

Zeichensatz

Die Eigenschaft CharSet legt den primären Zeichensatz für ein Dokument fest. Um ein HTML-Dokument korrekt zu parsen und anzuzeigen, muss die Anwendung wissen, welcher Zeichensatz (Kodierung) für das Dokument verwendet wird. Wenn die Zeichenkodierung nicht direkt in der Kopfzeile des Dokuments angegeben ist, verwendet Aspose.HTML for .NET UTF-8, das als Standard für die HTML5-Spezifikation definiert ist. Wenn Sie sich jedoch sicher sind, dass Ihr HTML-Dokument mit einer anderen als der UTF-8-Kodierung geschrieben wurde, können Sie diese manuell angeben, wie im Folgenden beschrieben.

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

Im obigen Beispiel haben wir die Eigenschaften CharSet und UserStyleSheet für eine Einstellung der ISO-8859-1-Kodierung und einen Benutzerstil verwendet.

Font-Ordner installieren

Aspose.HTML for .NET ist eine leistungsstarke Bibliothek für die Arbeit mit HTML-Dokumenten in .NET-Anwendungen. Sie bietet eine breite Palette von Funktionen, die es Entwicklern ermöglichen, HTML-Dokumente in verschiedene Ausgabeformate wie PDF, XPS, DOCX und Bilder zu rendern. Eines der Hauptmerkmale von Aspose.HTML ist die Fähigkeit, mit benutzerdefinierten Schriftarten zu arbeiten, so dass Entwickler ihre eigenen Schriftarten zum Rendering-Prozess hinzufügen können.

Die Eigenschaft FontsSettings wird für die Konfiguration der Handhabung von Schriftarten verwendet. Wenn Sie die benutzerdefinierten Schriftarten anstelle der im Betriebssystem installierten Schriftarten verwenden möchten, können Sie den Pfad zu Ihrem benutzerdefinierten Ordner festlegen, wie im folgenden Codeschnipsel gezeigt:

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

Um den Schriftordner mit der Aspose.HTML for .NET-Bibliothek festzulegen, verwenden wir die Methode “SetFontsLookupFolder()” der Klasse FontsSettings. Mit dieser Methode können Sie den Ordner angeben, in dem sich die benutzerdefinierten Schriftarten befinden. Durch das Festlegen des Schriftordners sucht Aspose.HTML beim Rendern des HTML-Dokuments nach Schriftarten im angegebenen Ordner.

Die Abbildung zeigt das Ergebnis der Anwendung der Eigenschaften FontsSettings und UserStyleSheet (b) auf die Quelldatei “user-agent-fontsetting.html” (a).

Text “FontsSettings-Eigenschaft”

Laufzeitdienst

Dieser Dienst gibt Ihnen die Kontrolle über die Lebensdauer der internen Prozesse. Mit IRuntimeService können Sie zum Beispiel Timeouts für JavaScripts festlegen. Eine solche Zeitüberschreitung ist wichtig für den Fall, dass ein Skript eine Endlosschleife enthält. Der nächste Codeschnipsel zeigt, wie man Timeouts verwendet.

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

Netzwerkdienst

Aspose.HTML for .NET bietet den INetworkService, der es Ihnen ermöglicht, den gesamten eingehenden/ausgehenden Datenverkehr zu kontrollieren und Ihre eigenen Nachrichten-Handler zu implementieren. Er kann für verschiedene Zwecke verwendet werden, wie z.B.: Erstellen eines benutzerdefinierten Caching-Mechanismus, Verfolgen/Protokollieren von Anforderungsnachrichten, etc.

Nachrichten-Handler

Das folgende Beispiel zeigt, wie ein benutzerdefinierter Nachrichten-Handler – LogMessageHandler – erstellt wird, um Informationen über nicht erreichbare Ressourcen zu protokollieren:

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

Der nächste Codeausschnitt demonstriert, wie die im vorherigen Beispiel erstellte Klasse LogMessageHandler verwendet wird, um Informationen über nicht erreichbare Ressourcen zu protokollieren.

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

Nach der Ausführung des Beispiels:

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

Sie können die vollständigen Beispiele und Datendateien von GitHub herunterladen.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.