Configuration de l'environnement

Il peut être très utile de disposer de différentes configurations en fonction de l’environnement de l’application. Par exemple, la configuration de l’environnement vous permet de personnaliser les stratégies de script, de remplacer les styles de document par une feuille de style définie par l’utilisateur ou de gérer les requêtes web. Pour faciliter cette tâche, Aspose.HTML for Java propose la classe Configuration spécialement conçue pour répondre à ces exigences. En utilisant l’objet Configuration, vous pouvez sans effort adapter le comportement de votre application Java à vos besoins spécifiques.

Sandboxing

Un ensemble de drapeaux de sandboxing est un ensemble de zéro ou plusieurs drapeaux qui limitent les capacités des ressources potentiellement non fiables. Un bac à sable fournit un environnement d’exécution sûr et contrôlé en isolant le code potentiellement malveillant ou non fiable du système sous-jacent et des données sensibles.

L’exemple Java suivant montre comment convertir un document HTML au format PDF et appliquer des restrictions de sandboxing – comment marquer Scripts comme une ressource non fiable. En conséquence, Scripts sera désactivé pendant l’exécution de l’application.

 1// How to disable scripts for HTML to PDF conversion using Java
 2
 3// Prepare HTML code and save it to a file
 4String code = "<span>Hello, World!!</span>\n" +
 5        "<script>document.write('Have a nice day!');</script>\n";
 6
 7try (java.io.FileWriter fileWriter = new java.io.FileWriter("sandboxing.html")) {
 8    fileWriter.write(code);
 9}
10
11// Create an instance of the Configuration class
12Configuration configuration = new Configuration();
13
14// Mark 'scripts' as an untrusted resource
15configuration.setSecurity(com.aspose.html.Sandbox.Scripts);
16
17// Initialize an HTML document with specified configuration
18HTMLDocument document = new HTMLDocument("sandboxing.html", configuration);
19
20// Convert HTML to PDF
21Converter.convertHTML(document, new PdfSaveOptions(), "sandboxing_out.pdf");

Dans l’exemple, une nouvelle instance de la classe Configuration est créée pour configurer le bac à sable. La méthode setSecurity() est appelée sur l’objet configuration, en passant com.aspose.html.Sandbox.Scripts comme argument. Ce drapeau active le sandboxing et restreint l’exécution des scripts dans le document HTML.

Service d’agent utilisateur – User Agent Service

Toutes les fonctions importantes sont regroupées dans des services distincts à des fins de convivialité et se trouvent dans le paquet com.aspose.html.services. Dans le contexte de la configuration de l’environnement, le Service de l’agent utilisateur vous permet de spécifier une feuille de style utilisateur personnalisée, un jeu de caractères principal pour le document, ainsi que des paramètres de langue et de polices.

Feuille de style de l’utilisateur – User Style Sheet

L’utilisateur peut spécifier des informations de style personnalisées pour un document particulier. Ces informations s’appliquent au document conformément aux règles de cascade et peuvent affecter la présentation du document. L’extrait de code Java suivant illustre l’utilisation du service d’agent utilisateur ( IUserAgentService) pour appliquer une feuille de style personnalisée à un document HTML qui est ensuite converti en PDF.

Examinons simplement les étapes nécessaires pour spécifier une feuille de style personnalisée dans un document HTML :

  1. Dans l’exemple, nous utilisons le constructeur Configuration() pour créer une instance de la classe Configuration.
  2. Ensuite, nous appelons la méthode getService() de la classe Configuration et lui passons la classe IUserAgentService.class comme paramètre. Nous obtenons ainsi une instance du User Agent Service.
  3. Pour définir une feuille de style utilisateur personnalisée à appliquer au document HTML, nous utilisons la méthode setUserStyleSheet() du User Agent Service, en fournissant un code CSS comme argument. Dans ce cas, la règle CSS span { color : green ; } est utilisée pour que tous les éléments <span> affichent le texte en vert.
 1// Apply a custom user stylesheet to HTML content and convert it to PDF using Java
 2
 3// Prepare HTML code and save it to a file
 4String code = "<span>Hello, World!!!</span>";
 5
 6try (java.io.FileWriter fileWriter = new java.io.FileWriter("user-agent-stylesheet.html")) {
 7    fileWriter.write(code);
 8}
 9
10// Create an instance of the Configuration class
11Configuration configuration = new Configuration();
12
13// Get the IUserAgentService
14IUserAgentService userAgent = configuration.getService(IUserAgentService.class);
15
16// Set a custom color to the <span> element
17userAgent.setUserStyleSheet("span { color: green; }");
18
19// Initialize an HTML document with specified configuration
20HTMLDocument document = new HTMLDocument("user-agent-stylesheet.html", configuration);
21
22// Convert HTML to PDF
23Converter.convertHTML(document, new PdfSaveOptions(), "user-agent-stylesheet_out.pdf");

Jeu de caractères – Character Set

Afin d’analyser et d’afficher correctement un document HTML, l’application doit connaître le jeu de caractères (encodage) utilisé pour le document. Si l’encodage des caractères n’est pas directement spécifié dans l’en-tête du document, Aspose.HTML utilise UTF-8, qui est défini comme l’encodage par défaut pour la spécification HTML5. Cependant, si vous êtes sûr que votre document HTML est écrit différemment de l’encodage UTF-8, vous pouvez le spécifier manuellement. Examinons les étapes nécessaires pour spécifier un jeu de caractères (encodage) dans le document HTML :

  1. Créer une instance de la classe Configuration.
  2. Utilisez la méthode getService() pour obtenir une instance du User Agent Service. La méthode prend en paramètre la classe IUserAgentService.class.
  3. Appelez la méthode setCharSet() du User Agent Service et indiquez le jeu de caractères (encodage) souhaité. Dans cet exemple, ISO-8859-1 est défini comme jeu de caractères.
 1// Set User Agent charset to ISO-8859-1 and convert HTML to PDF using Java
 2
 3// Prepare HTML code and save it to a file
 4String code = "<h1>Character Set</h1>\r\n" +
 5        "<p>The <b>CharSet</b> property sets the primary character-set for a document.</p>\r\n";
 6
 7try (java.io.FileWriter fileWriter = new java.io.FileWriter("user-agent-charset.html")) {
 8    fileWriter.write(code);
 9}
10
11// Create an instance of the Configuration class
12Configuration configuration = new Configuration();
13
14// Get the IUserAgentService
15IUserAgentService userAgent = configuration.getService(IUserAgentService.class);
16
17// Set ISO-8859-1 encoding to parse the document
18userAgent.setCharSet("ISO-8859-1");
19
20// Initialize an HTML document with specified configuration
21HTMLDocument document = new HTMLDocument("user-agent-charset.html", configuration);
22
23// Convert HTML to PDF
24Converter.convertHTML(document, new PdfSaveOptions(), "user-agent-charset_out.pdf");

En définissant le jeu de caractères à l’aide de la méthode setCharSet(), l’application informe le moteur d’analyse et de rendu Aspose.HTML for Java de l’encodage spécifique utilisé dans le document HTML. C’est très important car des jeux de caractères différents peuvent représenter les caractères différemment, et sans les informations d’encodage correctes, le document peut ne pas être analysé ou affiché correctement.

Définir le chemin d’accès au dossier des polices

L’une des principales caractéristiques d’Aspose.HTML est sa capacité à travailler avec des polices personnalisées, ce qui permet aux développeurs d’ajouter leurs propres polices au processus de rendu. Si vous avez besoin d’utiliser des 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 suit :

 1// Set font folder for HTML to PDF conversion using Java
 2
 3// Prepare HTML code and save it to a file
 4String code = "<h1>FontsSettings property</h1>\r\n" +
 5        "<p>The FontsSettings property is used for configuration of fonts handling.</p>\r\n";
 6
 7try (java.io.FileWriter fileWriter = new java.io.FileWriter("user-agent-fontsetting.html")) {
 8    fileWriter.write(code);
 9}
10
11// Initialize an instance of the Configuration class
12Configuration configuration = new Configuration();
13
14// Get the IUserAgentService
15IUserAgentService userAgent = configuration.getService(IUserAgentService.class);
16
17// Set a custom font folder path
18userAgent.getFontsSettings().setFontsLookupFolder("fonts");
19
20// Initialize an HTML document with specified configuration
21HTMLDocument document = new HTMLDocument("user-agent-fontsetting.html", configuration);
22
23// Convert HTML to PDF
24Converter.convertHTML(document, new PdfSaveOptions(), "user-agent-fontsetting_out.pdf");

Pour définir le dossier des polices avec Aspose.HTML for Java, nous utilisons la méthode setFontsLookupFolder() de la classe FontsSettings. Cette méthode vous permet de spécifier le dossier dans lequel se trouvent les polices personnalisées. En définissant le dossier des polices, Aspose.HTML recherchera les polices dans le dossier spécifié lors du rendu du document HTML.

La figure illustre le résultat de l’application des fichiers FontsSettings et UserStyleSheet (b) au fichier source “user-agent-fontsetting.html” (a).

Texte “Propriété FontsSettings”

Service d’exécution – Runtime Service

Le service d’exécution 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 JavaScripts. Il est important de disposer d’un tel délai au cas où un script contiendrait une boucle sans fin. L’extrait de code suivant montre comment utiliser le Runtime Service pour limiter le temps d’exécution de JavaScript et convertir un document HTML au format image :

  1. Dans l’exemple, nous créons un document HTML à partir de zéro. Le code HTML préparé comprend une boucle infinie dans un élément <script>. Nous utilisons la fonction FileWriter() pour écrire le code HTML dans un fichier.
  2. Créer une instance de la classe Configuration.
  3. Appelez la méthode getService() pour obtenir une instance du Runtime Service.
  4. Utilisez la méthode setJavaScriptTimeout() du Runtime Service pour spécifier le temps d’exécution maximum autorisé du code JavaScript. L’exemple est fixé à 5 secondes.
  5. Créez un objet HTMLDocument à l’aide du constructeur HTMLDocument(address, configuration). Il prend le chemin vers le fichier HTML précédemment créé et l’objet de configuration.
  6. Convertir HTML en PNG en utilisant la méthode convertHTML(document, options, outputPath).

Dans l’exemple, si le délai de 5 secondes est dépassé pendant l’exécution de JavaScript, Aspose.HTML for Java interrompt l’exécution du code JavaScript et poursuit le reste du processus de conversion de HTML en PNG.

 1// Limit JavaScript execution time when converting HTML to image using Java
 2
 3// Prepare HTML code and save it to a file
 4String code = "<h1>Runtime Service</h1>\r\n" +
 5        "<script> while(true) {} </script>\r\n" +
 6        "<p>The Runtime Service optimizes your system by helping it start apps and programs faster.</p>\r\n";
 7
 8try (java.io.FileWriter fileWriter = new java.io.FileWriter("runtime-service.html")) {
 9    fileWriter.write(code);
10}
11
12// Create an instance of the Configuration class
13Configuration configuration = new Configuration();
14
15// Limit JS execution time to 5 seconds
16IRuntimeService runtimeService = configuration.getService(IRuntimeService.class);
17runtimeService.setJavaScriptTimeout(TimeSpan.fromSeconds(5));
18
19// Initialize an HTML document with specified configuration
20HTMLDocument document = new HTMLDocument("runtime-service.html", configuration);
21
22// Convert HTML to PNG
23Converter.convertHTML(document, new ImageSaveOptions(), "runtime-service_out.png");

Service de réseau – Network Service

INetworkService vous permet de contrôler tout le trafic entrant/sortant et de mettre en œuvre vos propres gestionnaires de messages. Il peut être utilisé à différentes fins : création d’un mécanisme de mise en cache personnalisé, suivi/enregistrement des messages de demande, etc.

Gestionnaires de messages

En utilisant la classe MessageHandler et en surchargeant la méthode invoke(), vous pouvez définir une logique personnalisée qui sera exécutée pendant les opérations réseau. L’exemple suivant montre comment utiliser les gestionnaires de messages pour enregistrer des informations sur les ressources inaccessibles. Dans cet exemple, la logique vérifie le code d’état de la réponse et gère le cas où le fichier n’est pas trouvé :

 1// Log failed HTTP requests with a custom MessageHandler
 2
 3// Message handler logs all failed requests to the console
 4MessageHandler handler = new MessageHandler() {
 5    @Override
 6    public void invoke(INetworkOperationContext context) {
 7        if (context.getResponse().getStatusCode() != HttpURLConnection.HTTP_OK) {
 8            System.out.println(String.format("File '%s' Not Found", context.getRequest().getRequestUri().toString()));
 9        }
10
11        // Invoke the next message handler in the chain
12        next(context);
13    }
14};

Tout d’abord, vous devez créer un gestionnaire de messages personnalisé et l’utiliser comme suit :

 1// Handle missing image requests with a custom MessageHandler in Aspose.HTML for Java
 2
 3// Prepare HTML code with missing image file
 4String code = "<img src='missing.jpg'>";
 5
 6try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
 7    fileWriter.write(code);
 8}
 9
10// Create an instance of the Configuration class
11Configuration configuration = new Configuration();
12
13// Add ErrorMessageHandler to the chain of existing message handlers
14INetworkService network = configuration.getService(INetworkService.class);
15LogMessageHandler logHandler = new LogMessageHandler();
16network.getMessageHandlers().addItem(logHandler);
17
18// Initialize an HTML document with specified configuration
19// During the document loading, the application will try to load the image and we will see the result of this operation in the console
20HTMLDocument document = new HTMLDocument("document.html", configuration);
21
22// Convert HTML to PNG
23Converter.convertHTML(document, new ImageSaveOptions(), "output.png");

Conclusion

La fonction Configuration de l’environnement d’Aspose.HTML for Java permet aux développeurs d’affiner le comportement de leurs applications pour répondre à des exigences spécifiques. En utilisant la classe Configuration et ses services associés, vous pouvez gérer efficacement des aspects critiques tels que la sécurité, la personnalisation, l’encodage des caractères, les paramètres de police, la durée d’exécution et les opérations réseau.

Vous pouvez télécharger les exemples complets et les fichiers de données à partir de GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.