LaTeX vers l'image | Python

Aspose.TeX pour Python nous offre la possibilité de convertir des fichiers LaTeX en différents formats d’images raster.

Conversion de LaTeX en PNG

Examinons maintenant en profondeur le code Python qui offre l’approche la plus simple pour convertir LaTeX au format PNG.

Définissez ASPOSE_TEX_INPUT_FILE sur votre fichier LaTeX et ASPOSE_TEX_OUTPUT_DIR sur le répertoire de sortie, ou modifiez les chemins de l’exemple. Les valeurs par défaut sont hello-world.ltx et output. Appliquez d’abord une licence. Les fichiers d’entrée supplémentaires sont recherchés à côté du document principal ; le traitement est non interactif. Licences

 1# Convert LaTeX to PNG.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, PngSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = PngSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Pour commencer, nous devons créer une instance de la classe TeXOptions en utilisant la méthode console_app_options() . Ne vous inquiétez pas du nom, c’est juste la méthode statique qui crée l’instance. Cette méthode prend l’instance object_latex de la classe TeXConfig, ce qui est parfait pour convertir un fichier LaTeX. Cette configuration configure le moteur Object TeX pour charger le format Object LaTeX et être prêt à traiter le fichier LaTeX. Le format Object LaTeX est essentiellement le même que le format LaTeX, mais il utilise des primitives spécifiques à Object TeX pour définir les métriques de la page.

La première des options nécessaires est output_working_directory, qui spécifie l’emplacement où la sortie TeX sera enregistrée. Si vous êtes intéressé, vous pouvez en savoir plus sur le concept du répertoire de sortie dans Aspose.TeX pour Python. Dans cet exemple particulier, nous utilisons la classe OutputFileSystemDirectory pour écrire la sortie dans un répertoire ou un dossier spécifique.

La deuxième option est une instance de la classe SaveOptions, qui est chargée de gérer la conversion du modèle objet vers le format souhaité. Dans ce cas, puisque nous convertissons LaTeX en PNG, nous utilisons l’instance de classe PngSaveOptions, qui nous permet de spécifier la résolution des images de sortie.

Ensuite, nous créons une instance de la classe TeXJob. Dans ce cas, puisque nous souhaitons convertir un fichier LaTeX stocké dans le système de fichiers, nous utilisons cette version du constructeur . Nous devons fournir le chemin complet du fichier, sinon le moteur le recherchera dans le répertoire courant (qui est le répertoire de travail du script) et risque de ne pas le trouver. Cependant, l’extension « .tex » peut être omise car le moteur l’ajoutera automatiquement. Le deuxième argument du constructeur est une instance de la 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. Enfin, nous transmettons les options de conversion préparées comme dernier argument.

Il ne reste plus qu’à exécuter le travail.

L’exemple capture la sortie du terminal dans OutputMemoryTerminal. Le répertoire de sortie contient également un journal .log. Une conversion réussie produit un journal similaire à celui-ci ; les indications de version peuvent varier :

 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.

Les résultats du travail du moteur peuvent être trouvés dans le répertoire de sortie que nous avons spécifié. Cela inclura le fichier de transcription et, plus important encore, le(s) fichier(s) image PNG de sortie principal.

Une autre façon d’écrire le(s) fichier(s) PNG de sortie principal

Il existe une méthode alternative pour obtenir des données d’image sous la forme d’un tableau de tableaux d’octets, où 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.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, PngSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21save_options = PngSaveOptions()
22save_options.device_writes_images = False
23options.save_options = save_options
24device = ImageDevice(True)
25job_result = TeXJob(str(input_file), device, options).run()
26
27# Write the returned PNG page bytes yourself.
28for index, page_bytes in enumerate(device.result, start=1):
29    (output_dir / f"page-{index}.png").write_bytes(page_bytes)

L’exemple définit device_writes_images = False sur PngSaveOptions avant de l’affecter à options.save_options. Il enregistre les octets des pages renvoyées dans page-1.png, page-2.png, etc. Le périphérique ne crée donc pas de fichiers PNG en double.

Concernant les options de saisie

Si notre fichier d’entrée principal nécessite des dépendances, telles que des packages qui ne sont pas inclus dans le système LaTeX de base ou des packages pris en charge, nous devons définir l’option required_input_directory de la même manière que nous définissons l’option output_working_directory et placez les dépendances dans ce répertoire. Les dépendances peuvent être organisées en sous-répertoires selon les besoins. Si nous devons inclure nos fichiers dans le processus de composition, tels que des fichiers graphiques externes, nous devons également définir le input_working_directory sur l’emplacement où ces fichiers sont stockés. Nous pouvons également placer le fichier d’entrée principal dans le répertoire d’entrée et spécifier le chemin relatif au constructeur TeXJob, ou ne spécifier aucun chemin si le fichier d’entrée principal se trouve dans le répertoire racine. Il y a également plus de détails sur le concept de répertoire d’entrée dans Aspose.TeX et les implémentations fournies décrites.

Découvrez également les autres options de travail TeX ici.

Vous pouvez également explorer l’ application Web gratuite pour la conversion LaTeX en PNG, développée à l’aide de l’ API Aspose.TeX pour .NET.

Ci-dessous, nous expliquerons brièvement la conversion de LaTeX vers d’autres formats d’images raster pris en charge, sans trop entrer dans les détails car il n’y a pas de différences significatives. La seule variation réside dans le type de la propriété save_options dans les options de conversion.

Conversion de LaTeX en JPG

 1# Convert LaTeX to JPEG.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, JpegSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = JpegSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Vous pouvez également explorer l’ application Web gratuite pour la conversion LaTeX en JPG, développée à l’aide de l’API Aspose.TeX pour .NET.

Conversion de LaTeX en TIFF

 1# Convert LaTeX to TIFF.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, TiffSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = TiffSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Vous pouvez également explorer l’ application Web gratuite pour la conversion LaTeX vers TIFF, développée à l’aide de l’API Aspose.TeX pour .NET.

Conversion de LaTeX en BMP

 1# Convert LaTeX to BMP.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, BmpSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = BmpSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Vous pouvez également explorer l’ application Web gratuite pour la conversion LaTeX en BMP, développée à l’aide de l’API Aspose.TeX pour .NET.

Conversion de LaTeX en SVG

Un autre format cible pris en charge est SVG. Scalable Vector Graphics (SVG) est un format d’image vectorielle basé sur XML utilisé pour définir des graphiques bidimensionnels. Il prend en charge l’interactivité et l’animation.

Les images SVG sont stockées dans des fichiers texte XML et définies dans un format graphique vectoriel. Cela signifie que la taille des images SVG peut être redimensionnée sans perte de qualité, et que les fichiers SVG eux-mêmes peuvent être recherchés, indexés, scriptés et compressés. Les fichiers texte XML peuvent être créés et modifiés à l’aide d’éditeurs de texte ou d’éditeurs de graphiques vectoriels, et ils peuvent être rendus par les navigateurs Web les plus couramment utilisés.

L’API Aspose.SVG offre une gamme de fonctionnalités pour travailler avec SVG, telles que la création, le chargement, la modification et la conversion de documents SVG.

La conversion de LaTeX en SVG est tout aussi simple que la conversion aux formats d’image raster, la seule différence étant que les save_options doivent être définies sur une instance de la classe SvgSaveOptions et que Le périphérique doit être remplacé par une instance de la classe SvgDevice.

 1# Convert LaTeX to SVG.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.svg import SvgDevice, SvgSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = SvgSaveOptions()
22device = SvgDevice()
23job_result = TeXJob(str(input_file), device, options).run()

Vous pouvez également explorer l’ application Web gratuite pour la conversion LaTeX en SVG, développée à l’aide de l’API Aspose.TeX pour .NET.