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.

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=\"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   }

La figure illustre le résultat de l’application du User Agent Service (b) au fichier source user-agent.svg (a).

Texte “Rendu des fichiers “user-agent.svg” et “user-agent.pdf””

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=\"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    }

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 :

  1. 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.
  2. 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.
  3. 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=\"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    }

Après l’exécution de l’exemple:

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.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.