LaTeX vers l'image | Java
Aspose.TeX for Java provides features for converting LaTeX files to a number of raster image formats.
Comment convertir LaTeX en PNG
Examinons de plus près le code Java fournissant le moyen le plus simple de convertir LaTeX au format PNG.
Définissez inputFile sur le chemin complet de votre fichier LaTeX, par exemple hello-world.ltx, et outputDirectory sur un dossier de sortie existant. Importez les classes de com.aspose.tex et com.aspose.tex.rendering utilisées dans l’extrait. La méthode appelante doit gérer ou déclarer les exceptions. Appliquez une licence comme décrit dans le
guide des licences pour éviter les restrictions d’évaluation. L’exemple utilise un traitement non interactif et ferme ses ressources de sortie. L’exemple PNG utilise une résolution de 300 DPI. Pour l’entrée d’une page hello-world.ltx, les fichiers de sortie automatiques sont hello-world.png, hello-world.jpg, hello-world.tif, hello-world.bmp ou hello-world.svg, selon le format sélectionné.
1// Convert LaTeX to PNG.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6PngSaveOptions saveOptions = new PngSaveOptions();
7saveOptions.setResolution(300);
8options.setSaveOptions(saveOptions);
9options.setInteraction(Interaction.NonstopMode);
10
11ImageDevice device = new ImageDevice();
12TeXJobResult result;
13try {
14 result = new TeXJob(inputFile, device, options).run();
15} finally {
16 device.dispose();
17 output.close();
18}Ainsi, la première chose que nous devons faire (parfois pas la toute première, comme nous le découvrirons plus tard) est de créer une instance de la classe TeXOptions. La seule méthode statique qui fait cela est consoleAppOptions(), alors ne nous soucions pas de la signification de son nom. La méthode prend l’ instance objectLaTeX() de la classe TeXConfig, qui convient parfaitement à la conversion d’un fichier LaTeX. Cette configuration demande au moteur Object TeX de charger le format Object LaTeX et d’être prêt à accepter le fichier LaTeX. Le format Object LaTeX n’est en fait que le format LaTeX, sauf qu’il utilise des primitives spécifiques à Object TeX pour configurer les métriques de la page.
La première des options requises est OutputWorkingDirectory qui définit l’espace, ou la zone, où la sortie TeX sera écrite. Ici sont les détails sur le concept de répertoire de sortie dans Aspose.TeX pour Java. Dans cet exemple, nous utilisons la classe OutputFileSystemDirectory, qui nous permet d’écrire la sortie dans le répertoire ou dossier spécifié.
La deuxième option est une instance de classe SaveOptions qui contrôlera la transformation du modèle objet au format cible. Puisque nous convertissons LaTeX en PNG, c’est l’instance de classe PngSaveOptions, qui nous permet de spécifier la résolution des images de sortie.
Ensuite, nous devons créer une instance de la classe TeXJob. Voulant convertir un fichier LaTeX stocké dans le système de fichiers, nous utilisons cette version du constructeur. Nous devons spécifier le chemin complet du fichier. Sinon, le moteur le cherchera dans le répertoire courant (qui est défini ici) et ne le trouvera probablement pas. Néanmoins, nous pouvons omettre l’extension si notre fichier possède celle .tex. Le moteur l’ajoutera automatiquement. Le deuxième argument du constructeur est une instance de classe Device. Puisque nous convertissons LaTeX en PNG, il s’agit d’une instance de classe ImageDevice (commune à tous les formats d’image pris en charge). Comme dernier argument, nous passons les options de conversion récemment préparées.
Il ne nous reste plus qu’à exécuter le travail.
Que l’exécution ait réussi ou non, le premier résultat que nous verrons sera la sortie du terminal. En cas de succès, cela ressemble à ceci :
1This is ObjectTeX, Version 3.1415926-1.0 (Aspose.TeX 21.8)
2entering extended mode
3
4(<input_directory>\hello-world.ltx
5LaTeX2e <2011/06/27>
6(article.cls
7Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
8(size10.clo))
9No file hello-world.aux.
10[1]
11(<output_directory>\hello-world.aux) )
12Output written on hello-world.png (1 page).
13Transcript written on hello-world.log.Nous trouverons d’autres produits du moteur dans le dossier que nous avons spécifié comme répertoire de sortie. Il s’agira du fichier de transcription (.log) et, Voila !, du ou des fichiers image PNG de sortie principaux.
Une autre façon d’écrire le(s) fichier(s) PNG de sortie principal
Il existe une autre façon d’obtenir des données d’image sous forme de tableau de tableaux d’octets, chaque tableau de la deuxième dimension représente les données d’image d’une page distincte.
1// Convert LaTeX to PNG and save each page from the returned byte arrays.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6PngSaveOptions saveOptions = new PngSaveOptions();
7saveOptions.deviceWritesImages(false);
8options.setSaveOptions(saveOptions);
9options.setInteraction(Interaction.NonstopMode);
10
11ImageDevice device = new ImageDevice();
12TeXJobResult result;
13try {
14 result = new TeXJob(inputFile, device, options).run();
15 byte[][] pages = device.getResult();
16 for (int i = 0; i < pages.length; i++) {
17 Files.write(Paths.get(outputDirectory, "page-" + (i + 1) + ".png"), pages[i]);
18 }
19} finally {
20 device.dispose();
21 output.close();
22}L’exemple manuel nécessite aussi java.nio.file.Files et java.nio.file.Paths. Il enregistre les données des pages de ImageDevice.getResult() sous les noms page-1.png, page-2.png, etc. Comme il définit deviceWritesImages(false), la sortie PNG automatique est désactivée et les pages enregistrées manuellement ne sont pas dupliquées dans le répertoire de sortie. Cela diffère de la
sortie PDF via un flux, où le flux définit la destination d’un seul document PDF.
À propos des options de saisie
Dans le cas où notre fichier d’entrée principal nécessite des dépendances, par exemple des packages, qui ne sont pas inclus dans le système LaTeX de base et les packages pris en charge, nous DEVONS définir l’option
RequiredInputDirectory de la même manière que nous définissons
OutputWorkingDirectory. option et placez les dépendances dans ce répertoire. Les dépendances peuvent être arbitrairement organisées en sous-répertoires. Dans le cas où nous avons nos propres fichiers à inclure tout au long du processus de composition, par exemple des fichiers graphiques externes, nous DEVONS également définir le
InputWorkingDirectory en utilisant le chemin d’accès à l’emplacement où ces fichiers sont collectés. Nous pouvons également placer le fichier d’entrée principal quelque part dans le répertoire d’entrée et passer le chemin relatif au constructeur de TeXJob (ou ne spécifier aucun chemin si le fichier d’entrée principal est à la racine).
Ici sont les détails sur le concept de répertoire d’entrée dans Aspose.TeX pour Java et les implémentations fournies.
D’autres options de travail TeX sont discutées ici.
Vous pouvez également consulter la conversion gratuite LaTeX vers PNG application Web construite sur la base de l’API Aspose.TeX for .NET. Ici est la page de la version Java.
Ci-dessous, nous discutons de la conversion de LaTeX vers d’autres formats d’image raster pris en charge. Nous n’entrerons pas dans les détails simplement parce qu’il n’y a pas de détails. La seule différence réside dans le type de la propriété SaveOptions dans les options de conversion.
Comment convertir LaTeX en JPG
1// Convert LaTeX to JPEG.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6options.setSaveOptions(new JpegSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9ImageDevice device = new ImageDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Vous pouvez également consulter la conversion gratuite LaTeX vers JPG application Web construite sur la base de l’API Aspose.TeX for .NET. Ici est la page de la version Java.
Comment convertir LaTeX en TIFF
1// Convert LaTeX to TIFF.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6options.setSaveOptions(new TiffSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9ImageDevice device = new ImageDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Vous pouvez également consulter la conversion gratuite LaTeX vers TIFF application Web construite sur la base de l’API Aspose.TeX for .NET. Ici est la page de la version Java.
Comment convertir LaTeX en BMP
1// Convert LaTeX to BMP.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6options.setSaveOptions(new BmpSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9ImageDevice device = new ImageDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Vous pouvez également consulter la conversion gratuite LaTeX vers BMP application Web construite sur la base de l’API Aspose.TeX for .NET. Ici est la page de la version Java.
Comment convertir LaTeX en SVG
Et encore un autre format cible pris en charge est SVG. Scalable Vector Graphics (SVG) est un format d’image vectorielle basé sur XML permettant de définir des graphiques bidimensionnels, prenant en charge l’interactivité et l’animation.
Les images SVG sont définies dans un format graphique vectoriel et stockées dans des fichiers texte XML. Cela signifie que la taille des images SVG peut être redimensionnée sans perte de qualité, et que les fichiers SVG peuvent être recherchés, indexés, scriptés et compressés. Les fichiers texte XML peuvent être créés et modifiés avec des éditeurs de texte ou des éditeurs de graphiques vectoriels. Ils sont rendus par les navigateurs Web les plus utilisés.
Il existe également la bibliothèque Aspose.SVG qui possède diverses fonctionnalités basées sur le format SVG. Ceux-ci incluent la création, le chargement, l’édition et la conversion de documents SVG.
La conversion en SVG est aussi simple que la conversion aux formats d’image raster, sauf qu’en plus des SaveOptions, nous devons changer le périphérique en une instance du SvgDevice classe.
1// Convert LaTeX to SVG.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6options.setSaveOptions(new SvgSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9SvgDevice device = new SvgDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Vous pouvez également consulter la conversion gratuite LaTeX vers SVG application Web construite sur la base de Aspose.TeX pour .NET. Ici est la page de la version Java.