Interface de sortie d'Aspose.TeX | Python

Pour les définitions formelles de l’implémentation des E/S, veuillez vous référer à la référence API de Aspose.TeX pour Python.

L’idée derrière le répertoire de sortie

Aspose.TeX définit un répertoire comme un mappage entre des noms et des blocs de données, où les blocs de données peuvent être des fichiers, des flux, des tableaux ou d’autres types de données. L’API permet de spécifier des répertoires de travail d’entrée et de sortie distincts. Pour la sortie, l’API fournit l’interface générale IOutputWorkingDirectory, qui peut être implémentée par l’utilisateur pour ses besoins spécifiques. De plus, l’API fournit des implémentations prêtes à l’emploi, qui seront abordées ci-dessous. L’interface IOutputWorkingDirectory étend IInputWorkingDirectory, car le moteur peut d’abord créer et écrire un fichier, puis le relire. L’interface inclut la méthode get_output_file(), qui renvoie le flux dans lequel écrire, contrairement à la méthode get_file(), qui renvoie le flux à partir duquel lire.

Enregistrement de la sortie sous forme de fichier dans le système de fichiers du disque

Comme mentionné ci-dessus, le output_working_directory est généralement défini comme une instance de la classe OutputFileSystemDirectory.

Voici comment nous le définirions :

Définissez ASPOSE_TEX_OUTPUT_DIR sur le répertoire de sortie (par défaut : output). Appliquez d’abord une licence. Licensing.

 1# Write an XPS document and its transcript to a file system directory.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from io import BytesIO
 6from aspose.tex.io import OutputFileSystemDirectory, OutputMemoryTerminal
 7from aspose.tex.presentation.xps import XpsDevice
 8
 9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_tex())
13options.interaction = Interaction.NONSTOP_MODE
14options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
15options.terminal_out = OutputMemoryTerminal()
16device = XpsDevice()
17with BytesIO(b"Hello, World!\\end") as input_stream:
18    job_result = TeXJob(input_stream, device, options).run()

Le flux plain TeX intégré produit texput.xps et texput.log dans le répertoire de sortie.

Enregistrement de la sortie sous forme de fichier d’archive ZIP.

Une autre option consiste à créer un fichier ou un flux et à l’utiliser comme archive ZIP pour stocker les fichiers de sortie. Voici un exemple :

 1# Write an XPS document and transcript into a finalized ZIP archive.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from io import BytesIO
 6from aspose.tex.io import OutputZipDirectory, OutputMemoryTerminal
 7from aspose.tex.presentation.xps import XpsDevice
 8
 9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12with (output_dir / "zip-xps-out.zip").open("wb") as output_stream:
13    directory = OutputZipDirectory(output_stream)
14    options = TeXOptions.console_app_options(TeXConfig.object_tex())
15    options.interaction = Interaction.NONSTOP_MODE
16    options.output_working_directory = directory
17    options.terminal_out = OutputMemoryTerminal()
18    try:
19        device = XpsDevice()
20        with BytesIO(b"Hello, World!\\end") as input_stream:
21            job_result = TeXJob(input_stream, device, options).run()
22    finally:
23        # Write the ZIP directory before closing its underlying stream.
24        directory.finish()

zip-xps-out.zip est ouvert en mode binaire wb. Appelez finish() sur OutputZipDirectory avant de fermer le flux. L’archive contient texput.xps et texput.log.

Pour commencer, nous créons un flux de sortie pour le fichier ZIP. Ensuite, après avoir créé les options de conversion, nous définissons l’option output_working_directory comme étant une instance de la classe OutputZipDirectory.

L’idée derrière le terminal de sortie

La sortie du terminal est un autre aspect important de la sortie. Pour cela, Aspose.TeX pour Python définit l’interface générale IOutputTerminal, qui possède une seule propriété qui renvoie une instance de l’implémentation de TerminalWriter. Les implémentations disponibles seront discutées ci-dessous.

Écrire la sortie du terminal sur la console

Pour y parvenir, nous devons définir l’option terminal_out comme instance de la classe OutputConsoleTerminal.

 1# Write TeX terminal output to the console.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from io import BytesIO
 6from aspose.tex.io import OutputFileSystemDirectory, OutputConsoleTerminal
 7from aspose.tex.presentation.xps import XpsDevice
 8
 9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_tex())
13options.interaction = Interaction.NONSTOP_MODE
14options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
15options.terminal_out = OutputConsoleTerminal()
16device = XpsDevice()
17with BytesIO(b"Hello, World!\\end") as input_stream:
18    job_result = TeXJob(input_stream, device, options).run()

Encore une fois, il s’agit de la valeur par défaut de l’option, il n’est donc pas vraiment nécessaire de la spécifier. Par conséquent, cette section est fournie uniquement à des fins de démonstration.

Écrire la sortie du terminal dans un fichier

Contrairement au terminal d’entrée, Aspose.TeX pour Python inclut une implémentation de l’interface IOutputTerminal qui nous permet d’écrire la sortie du terminal dans un fichier dans un répertoire de sortie spécifié.

 1# Write TeX terminal output to a .trm file.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from io import BytesIO
 6from aspose.tex.io import OutputFileSystemDirectory, OutputFileTerminal
 7from aspose.tex.presentation.xps import XpsDevice
 8
 9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_tex())
13options.interaction = Interaction.NONSTOP_MODE
14options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
15options.terminal_out = OutputFileTerminal(options.output_working_directory)
16device = XpsDevice()
17with BytesIO(b"Hello, World!\\end") as input_stream:
18    job_result = TeXJob(input_stream, device, options).run()

Le constructeur de OutputFileTerminal reçoit le répertoire de travail de sortie et y écrit texput.trm, à côté de texput.xps et texput.log.