Umgebungskonfiguration – Aspose.SVG für .NET

Die Einstellung der Umgebungskonfiguration wird für verschiedene Zwecke verwendet. Wenn Sie beispielsweise eine Anwendung entwickeln, benötigen Sie auf jeden Fall eine Konfiguration, die vom Laufzeitdienst über die Verarbeitung von Webanforderungen der Anwendung bis hin zum Einfügen benutzerdefinierter Designs reichen kann.

In diesem Leitfaden erfahren Sie, wie Sie verschiedene Konfigurationen erstellen und diese an die verschiedenen Umgebungen anpassen, in denen die Anwendung ausgeführt wird. Dies kann ein benutzerdefiniertes Design, ein Laufzeitdienst oder ein Netzwerkdienst für Webanfragen sein.

Der Namespace Aspose.Svg.Services enthält eine Reihe von Schnittstellen für die Implementierung getrennter Dienste. In diesem Artikel werden verschiedene Arten von Umgebungskonfigurationsdiensten wie Benutzeragentendienst, Laufzeitdienst und Netzwerkdienst betrachtet. Aspose.SVG für .NET stellt die Klasse Configuration bereit, mit der die Umgebung festgelegt werden kann, in der die Anwendung ausgeführt wird.

Sie können die vollständigen Beispiele und Datendateien von GitHub herunterladen. Informationen zum Herunterladen von GitHub und zum Ausführen von Beispielen finden Sie im Abschnitt So führen Sie die Beispiele aus.

Benutzeragentendienst – User Agent Service

Mit dem User Agent Service können Sie ein benutzerdefiniertes Benutzer-Stylesheet, einen primären Zeichensatz für das Dokument, Sprach- und Schriftarteneinstellungen angeben. Sie können Ihre benutzerdefinierten Stilinformationen für ein bestimmtes Dokument auswählen und so wenig oder so viele Änderungen an der Umgebungskonfiguration wie nötig vornehmen.

Die Schnittstelle IUserAgentService beschreibt eine Benutzeragentenumgebung.

Betrachten Sie ein Beispiel, das die Anwendung der Eigenschaften UserStyleSheet, CharSet und FontsSettings veranschaulicht:

 1using System.IO;
 2using Aspose.Svg;
 3using Aspose.Svg.Services;
 4using Aspose.Svg.Converters;
 5using Aspose.Svg.Saving;
 6...
 7
 8   // Prepare SVG code and save it to a file
 9   var code = "<svg xmlns=\"https://www.w3.org/2000/svg\">\r\n" +
10              "    <circle cx=\"40\" cy=\"80\" r=\"30\" />\r\n" +
11              "    <text x=\"80\" y=\"100\">Aspose.SVG</text>\r\n" +
12              "</svg>\r\n";
13
14   File.WriteAllText(Path.Combine(OutputDir, "user-agent.svg"), code);
15
16   // Create an instance of Configuration
17   using (var configuration = new Configuration())
18   {
19       // Get the IUserAgentService
20       var userAgentService = configuration.GetService<IUserAgentService>();
21
22       // Set a custom style parameters for the "circle" and "text" elements
23       userAgentService.UserStyleSheet = "circle { fill:silver; }\r\n" +
24                                         "text { fill:DarkCyan; font-size:3em; }\r\n";
25
26       // Set ISO-8859-1 encoding to parse a document
27       userAgentService.CharSet = "ISO-8859-1";
28
29       // Set a custom font folder path
30       userAgentService.FontsSettings.SetFontsLookupFolder(Path.Combine(DataDir + "fonts"));
31
32       // Initialize an SVG document with specified configuration
33       using (var document = new SVGDocument(Path.Combine(OutputDir, "user-agent.svg"), configuration))
34       {
35           // Convert SVG to PDF
36           Converter.ConvertSVG(document, new PdfSaveOptions(), Path.Combine(OutputDir, "user-agent.pdf"));
37       }
38   }

Die Abbildung zeigt das Ergebnis der Anwendung des User Agent Service (b) auf die Quelldatei user-agent.svg (a).

Text „Rendering der Dateien „user-agent.svg“ und „user-agent.pdf““

Laufzeitdienst – Runtime Service

Wenn Sie die Ausführung Ihrer Anwendung planen, benötigen Sie möglicherweise eine Laufzeitdienstkonfiguration. Mit diesem Service haben Sie die Kontrolle über die Lebensdauer der internen Prozesse. Mit IRuntimeService können Sie beispielsweise Zeitüberschreitungen für JavaScripts festlegen. Ein solches Timeout ist wichtig für den Fall, dass ein Skript eine Endlosschleife enthält. Der nächste Codeausschnitt zeigt, wie Timeouts verwendet werden.

 1using System.IO;
 2using Aspose.Svg;
 3using Aspose.Svg.Services;
 4using Aspose.Svg.Converters;
 5using Aspose.Svg.Saving;
 6...
 7
 8    // Prepare SVG code and save it to a file
 9    var code = "<svg xmlns=\"https://www.w3.org/2000/svg\">\r\n" +
10               "    <script> while(true) {} </script>\r\n" +
11               "    <circle cx=\"40\" cy=\"80\" r=\"30\" />\r\n" +
12               "</svg>\r\n";
13
14    File.WriteAllText(Path.Combine(OutputDir, "runtime.svg"), code);
15
16    // Create an instance of Configuration
17    using (var configuration = new Configuration())
18    {
19        // Limit JS execution time to 5 seconds
20        var runtimeService = configuration.GetService<IRuntimeService>();
21        runtimeService.JavaScriptTimeout = TimeSpan.FromSeconds(5);
22
23        // Initialize an SVG document with specified configuration
24        using (var document = new SVGDocument(Path.Combine(OutputDir, "runtime.svg"), configuration))
25        {
26            // Convert SVG to PNG
27            Converter.ConvertSVG(document, new ImageSaveOptions(), Path.Combine(OutputDir, "runtime.png"));
28        }
29    }

Die Eigenschaft JavaScriptTimeout legt TimeSpan fest, was die Ausführungszeit von JavaScript begrenzt. Wenn das Skript länger als die angegebene Zeitspanne ausgeführt wird, wird es abgebrochen. Der Standardwert ist 1 Minute.

Netzwerkdienst – Network Service

Moderne Netzwerkumgebungen generieren über Netzwerkrouter und -switches, Server, Anti-Malware-Systeme usw. eine erhebliche Menge an Sicherheitsereignissen und Protokolldaten.

Aspose.SVG für .Net bietet den INetworkService, der als Lösung zur Verwaltung und Analyse all dieser Informationen gedacht ist. Mit dem Dienst können Sie den gesamten ein- und ausgehenden Datenverkehr kontrollieren und Ihre benutzerdefinierten Nachrichtenhandler implementieren. Es kann für verschiedene Zwecke verwendet werden, z. B. zum Erstellen eines benutzerdefinierten Caching-Mechanismus, zum Verfolgen/Protokollieren von Anforderungsnachrichten usw.

Erstellen Sie einen benutzerdefinierten Nachrichtenhandler

Aspose.SVG für .NET bietet Funktionen zum Erstellen benutzerdefinierter Nachrichtenhandler. Lassen Sie uns einen einfachen benutzerdefinierten Handler entwickeln, der Informationen über nicht erreichbare Ressourcen protokolliert. Führen Sie die folgenden Schritte aus:

  1. Verwenden Sie den erforderlichen Namespace, nämlich Aspose.Svg.Net. Dieser Namespace wird durch Klassen und Schnittstellen dargestellt, die für die einfache Netzwerkverarbeitung verantwortlich sind.
  2. Um einen benutzerdefinierten Nachrichtenhandler zu erstellen, müssen Sie Ihre eigene Klasse definieren, die von der Klasse MessageHandler abgeleitet wird. Wir erstellen eine LogMessageHandler-Klasse.
  3. Überschreiben Sie die Methode Invoke() der MessageHandler-Klasse, um das benutzerdefinierte Verhalten des Nachrichtenhandlers zu implementieren.

Das folgende Beispiel zeigt, wie man LogMessageHandler erstellt, um Informationen über nicht erreichbare Ressourcen zu protokollieren.

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

Weitere Informationen zur Erstellung benutzerdefinierter Nachrichtenhandler finden Sie im Kapitel Nachrichtenhandler.

Verwenden Sie LogMessageHandler zum Protokollieren von Informationen über nicht erreichbare Ressourcen

Das folgende Beispiel zeigt, wie die Klasse LogMessageHandler zum Protokollieren von Informationen über nicht erreichbare Ressourcen verwendet wird.

 1using System.IO;
 2using Aspose.Svg;
 3using Aspose.Svg.Services;
 4using Aspose.Svg.Converters;
 5using Aspose.Svg.Saving;
 6using Aspose.Svg.Net;
 7...
 8
 9    // Prepare SVG code and save it to a file
10    var code = "<svg xmlns=\"https://www.w3.org/2000/svg\">\r\n" +
11               "    <image href=\"https://docs.aspose.com/svg/images/drawing/park.jpg\" width=\"640px\" height=\"480px\" />\r\n" +
12               "    <image href=\"https://docs.aspose.com/svg/net/missing1.svg\" width=\"400px\" height=\"300px\" />\r\n" +
13               "    <image href=\"https://docs.aspose.com/svg/net/missing2.svg\" width=\"400px\" height=\"300px\" />\r\n" +
14               "</svg>\r\n";
15
16    File.WriteAllText(Path.Combine(OutputDir, "network.svg"), code);
17
18    // Create an instance of the Configuration class
19    using (var configuration = new Configuration())
20    {
21        // Add LogMessageHandler to the chain of existing message handlers for logging errors
22        var networkService = configuration.GetService<INetworkService>();
23        
24        var logHandler = new LogMessageHandler();
25        networkService.MessageHandlers.Add(logHandler);
26
27        // Initialize an SVG document with specified configuration
28        using (var document = new SVGDocument(Path.Combine(OutputDir, "network.svg"),  configuration))
29        {
30            // Convert SVG to PNG
31            Converter.ConvertSVG(document, new ImageSaveOptions(), Path.Combine(OutputDir, "network.png"));
32
33            // Print the List of ErrorMessages
34            foreach (string errorMessage in logHandler.ErrorMessages)
35            {
36                Console.WriteLine(errorMessage);
37            }
38        }
39    }

Nach dem Beispiellauf:

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

Sie können die vollständigen Beispiele und Datendateien von GitHub herunterladen. Informationen zum Herunterladen von GitHub und zum Ausführen von Beispielen finden Sie im Abschnitt So führen Sie die Beispiele aus.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.