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

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;
 1// Limit JavaScript execution time in SVG before conversion to PNG in C#
 2
 3// Prepare SVG code and save it to a file
 4string code = "<svg xmlns=\"http://www.w3.org/2000/svg\">\r\n" +
 5              "    <script> while(true) {} </script>\r\n" +
 6              "    <circle cx=\"40\" cy=\"80\" r=\"30\" />\r\n" +
 7              "</svg>\r\n";
 8
 9File.WriteAllText(Path.Combine(OutputDir, "runtime.svg"), code);
10
11// Create an instance of the Configuration class
12using (Configuration configuration = new Configuration())
13{
14    // Limit JS execution time to 5 seconds
15    IRuntimeService runtimeService = configuration.GetService<IRuntimeService>();
16    runtimeService.JavaScriptTimeout = TimeSpan.FromSeconds(5);
17                   
18    // Initialize an SVG document with specified configuration
19    using (SVGDocument document = new SVGDocument(Path.Combine(OutputDir, "runtime.svg"), configuration))
20    {
21        // Convert SVG to PNG
22        Converter.ConvertSVG(document, new ImageSaveOptions(), Path.Combine(OutputDir, "runtime.png"));
23    }
24}

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

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

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.