Configuration de l'environnement – Aspose.SVG pour .NET
Le paramètre de configuration de l’environnement est utilisé à diverses fins. Par exemple, lorsque vous développez une application, vous exigerez certainement une configuration pouvant aller du service d’exécution ou gérer toutes les requêtes Web de l’application à l’injection de thèmes personnalisés.
Dans ce guide, vous apprendrez à créer diverses configurations et à les adapter aux différents environnements dans lesquels l’application s’exécute. Il peut s’agir d’un thème personnalisé, d’un service d’exécution ou d’un service réseau de requête Web.
L’espace de noms Aspose.Svg.Services contient un ensemble d’interfaces pour les implémentations de services séparés. Cet article considère différents types de services de configuration d’environnement, tels que le Service d’agent utilisateur, le Service d’exécution et le Service réseau. Aspose.SVG pour .NET fournit la classe Configuration qui peut être utilisée pour définir l’environnement dans lequel l’application est exécutée.
Vous pouvez télécharger les exemples complets et les fichiers de données depuis GitHub. Vous découvrirez le téléchargement depuis GitHub et l’exécution d’exemples dans la section Comment exécuter les exemples.
Service d’agent utilisateur – User Agent Service
Le User Agent Service vous permet de spécifier une feuille de style utilisateur personnalisée, un jeu de caractères principal pour les paramètres du document, de la langue et des polices. Vous pouvez sélectionner vos informations de style personnalisé pour un document particulier et fournir autant de modifications de configuration d’environnement que nécessaire.
L’interface IUserAgentService décrit un environnement d’agent utilisateur.
La propriété
UserStyleSheet
de l’interface IUserAgentService permet de spécifier des informations de style pour un document particulier ;La propriété
CharSet
définit le jeu de caractères principal d’un document.Pour analyser et afficher correctement un document SVG, l’application doit savoir quel encodage est utilisé. Si le codage des caractères n’est pas directement spécifié dans l’en-tête du document, Aspose.SVG utilise UTF-8, qui est défini par défaut. Cependant, si vous êtes sûr que votre document SVG est écrit avec un encodage différent de celui UTF-8, vous pouvez le spécifier manuellement, comme indiqué dans l’exemple ci-dessus.
La propriété
FontsSettings
est utilisée pour la configuration de la gestion des polices. Lorsque vous devez utiliser les polices personnalisées au lieu des polices installées sur le système d’exploitation, vous pouvez définir le chemin d’accès à votre dossier personnalisé, comme indiqué dans l’extrait de code suivant.La propriété
CSSEngineMode
obtient ou définit le mode dans lequel fonctionne le moteur CSS.La propriété
Language
spécifie la langue principale du contenu de l’élément et de tout attribut de l’élément contenant du texte.
Prenons un exemple qui illustre l’application des propriétés UserStyleSheet
, CharSet
et FontsSettings
:
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 }
La figure illustre le résultat de l’application du User Agent Service (b) au fichier source user-agent.svg (a).
Service d’exécution – Runtime Service
Lorsque vous prévoyez d’exécuter votre application, vous aurez peut-être besoin d’une configuration de service d’exécution. Ce service vous permet de contrôler la durée de vie des processus internes. Par exemple, en utilisant IRuntimeService, vous pouvez spécifier des délais d’attente pour les JavaScript. Il est important d’avoir un tel délai d’attente au cas où un script contiendrait une boucle sans fin. L’extrait de code suivant montre comment utiliser les délais d’attente.
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 }
La propriété JavaScriptTimeout
définit TimeSpan
, qui limite le temps d’exécution de JavaScript. Si le script est exécuté plus longtemps que le TimeSpan
fourni, il sera annulé. La valeur par défaut est 1 minute.
Service réseau – Network Service
Les environnements réseau modernes génèrent une quantité importante d’événements de sécurité et enregistrent des données via des routeurs et commutateurs réseau, des serveurs, des systèmes anti-malware, etc.
Aspose.SVG pour .Net propose le INetworkService qui est envisagé comme une solution pour aider à gérer et analyser toutes ces informations. Le service vous permet de contrôler tout le trafic entrant/sortant et de mettre en œuvre vos gestionnaires de messages personnalisés. Il peut être utilisé à différentes fins, telles que la création d’un mécanisme de mise en cache personnalisé, le traçage/journalisation des messages de demande, etc.
Créer un gestionnaire de messages personnalisé
Aspose.SVG pour .NET offre des fonctionnalités pour la création de gestionnaires de messages personnalisés. Développons un gestionnaire personnalisé simple qui enregistre les informations sur les ressources inaccessibles. Suivez les étapes suivantes :
- Utilisez l’espace de noms nécessaire, qui est Aspose.Svg.Net. Cet espace de noms est présenté par des classes et des interfaces, qui sont chargées de faciliter le traitement du réseau.
- Pour créer un gestionnaire de messages personnalisé, vous devez définir votre propre classe qui sera dérivée de la classe MessageHandler. Nous construisons une classe LogMessageHandler.
- Remplacez la méthode Invoke() de la classe MessageHandler pour implémenter le comportement du gestionnaire de messages personnalisé.
L’exemple suivant montre comment créer LogMessageHandler pour enregistrer des informations sur les ressources inaccessibles.
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 }
Pour plus d’informations sur la création de gestionnaires de messages personnalisés, veuillez consulter le chapitre Message Handlers.
Utilisez LogMessageHandler pour enregistrer des informations sur les ressources inaccessibles
L’exemple suivant montre comment utiliser la classe LogMessageHandler pour consigner des informations sur les ressources inaccessibles.
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 }
Après l’exécution de l’exemple:
- le fichier créé “network.svg” sera converti en PNG. Une seule image se trouve dans le fichier;
- la Liste des
ErrorMessages
sera imprimée :
File 'https://docs.aspose.com/svg/net/missing1.svg' Not Found
File 'https://docs.aspose.com/svg/net/missing2.svg' Not Found
Vous pouvez télécharger les exemples complets et les fichiers de données depuis GitHub. À propos du téléchargement depuis GitHub et de l’exécution d’exemples, vous le découvrirez dans la section Comment exécuter les exemples.