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.
Die Eigenschaft
UserStyleSheet
der IUserAgentService-Schnittstelle ermöglicht die Angabe von Stilinformationen für ein bestimmtes Dokument;Die Eigenschaft
CharSet
legt den primären Zeichensatz für ein Dokument fest.Um ein SVG-Dokument korrekt zu analysieren und anzuzeigen, muss die Anwendung wissen, welche Codierung verwendet wird. Wenn die Zeichenkodierung nicht direkt im Header des Dokuments angegeben ist, verwendet Aspose.SVG UTF-8, das als Standard definiert ist. Wenn Sie jedoch sicher sind, dass Ihr SVG-Dokument mit einer anderen Kodierung als der UTF-8-Kodierung geschrieben wurde, können Sie diese manuell angeben, wie im Beispiel oben gezeigt.
Die Eigenschaft
FontsSettings
wird für die Konfiguration der Schriftartenverarbeitung verwendet. Wenn Sie die benutzerdefinierten Schriftarten anstelle der auf dem Betriebssystem installierten Schriftarten verwenden müssen, können Sie den Pfad zu Ihrem benutzerdefinierten Ordner festlegen, wie im folgenden Codeausschnitt gezeigt.Die Eigenschaft
CSSEngineMode
ruft den Modus ab, in dem die CSS-Engine arbeitet, oder legt diesen fest.Die Eigenschaft
Language
gibt die primäre Sprache für den Inhalt des Elements und für alle Attribute des Elements an, die Text enthalten.
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=\"http://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).
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=\"http://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:
- 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.
- 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.
- Ü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=\"http://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:
- Die erstellte Datei network.svg wird in PNG konvertiert. In der Datei befindet sich nur ein Bild.
- Die Liste der
ErrorMessages
wird gedruckt:
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.