LaTeX en PDF | Python
Conversion de LaTeX en PDF
Examinons maintenant en profondeur le code Python qui offre l’approche la plus simple pour convertir LaTeX au format PDF.
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 PDF.
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.pdf import PdfDevice, PdfSaveOptions
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 = PdfSaveOptions()
22device = PdfDevice()
23job_result = TeXJob(str(input_file), device, options).run()Pour commencer, nous devons créer une instance de la classe TeXOptions. La méthode console_app_options() est la seule méthode statique qui accomplit cela, alors ne vous inquiétez pas de son nom. Cette méthode prend une instance object_latex de la classe TeXConfig, ce qui est parfait pour convertir un fichier LaTeX. Cette configuration demande au moteur Object TeX de charger le format Object LaTeX et d’ê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 option qui doit être spécifiée est output_working_directory, qui détermine l’emplacement où la sortie TeX sera enregistrée. Si nécessaire, vous pouvez trouver plus d’informations sur le concept de répertoire de sortie dans Aspose.TeX. Dans ce cas particulier, nous utilisons la classe OutputFileSystemDirectory, qui nous permet d’écrire la sortie dans un répertoire ou un dossier désigné.
La deuxième option nécessite une instance de la classe SaveOptions, qui détermine comment le modèle objet est transformé dans le format souhaité. Dans notre cas, lorsque nous convertissons LaTeX en PDF, il fait référence à une instance de la classe PdfSaveOptions.
Pour convertir un fichier LaTeX stocké dans le système de fichiers, nous devons créer une instance de la classe TeXJob en utilisant le constructeur qui prend le chemin complet du fichier comme paramètre. Si nous ne précisons pas le chemin complet, le moteur recherchera le fichier dans le répertoire courant (qui est le répertoire de travail du script) et risque de ne pas le trouver. Cependant, nous pouvons omettre l’extension si notre fichier porte l’extension « .tex », car le moteur l’ajoutera automatiquement. Le deuxième argument du constructeur est une instance de la classe Device. Dans notre cas, puisque nous convertissons LaTeX en PDF, il s’agit d’une instance de la classe PdfDevice. Enfin, nous passons les options de conversion récemment 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.pdf (1 page).
13Transcript written on hello-world.log.Dans le dossier que nous avons spécifié comme répertoire de sortie, nous trouverons le fichier de transcription et, le voici !, le fichier PDF de sortie principal, entre autres résultats du travail du moteur.
Une autre façon d’écrire le fichier PDF de sortie principal
La classe PdfDevice a un autre constructeur qui nous permet d’obtenir différemment le fichier PDF résultant.
1# Convert LaTeX to PDF using an explicitly named binary output stream.
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.pdf import PdfDevice, PdfSaveOptions
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 = PdfSaveOptions()
22
23# Supply a binary stream to choose the output filename.
24with (output_dir / "any-name.pdf").open("wb") as output_stream:
25 device = PdfDevice(output_stream)
26 job_result = TeXJob(str(input_file), device, options).run()Le flux binaire écrit any-name.pdf dans le répertoire de sortie configuré. Aucun fichier PDF supplémentaire portant le nom par défaut n’est créé ; les fichiers auxiliaires et le journal restent dans output_working_directory.
À propos des 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 et les packages pris en charge, il est nécessaire de 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 comme vous le souhaitez. De plus, si nous avons nos propres fichiers à inclure dans le processus de composition, tels que des fichiers graphiques externes, nous devons également définir le
input_working_directory en utilisant le chemin d’accès à 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 à la racine. Pour plus de détails sur le concept de répertoire d’entrée dans Aspose.TeX pour Python et les implémentations fournies, veuillez vous référer à
ici.
Il existe également d’autres options de travail TeX discutées.
Vous pouvez également explorer l’ application Web gratuite pour la conversion LaTeX en PDF, développée à l’aide de l’API Aspose.TeX pour .NET.