Die Ausgabeschnittstelle von Aspose.TeX | Python
Formale Definitionen der E/A-Implementierung finden Sie in der API-Referenz von Aspose.TeX für Python.
Die Idee hinter dem Ausgabeverzeichnis
Aspose.TeX definiert ein Verzeichnis als eine Zuordnung zwischen Namen und Datenmengen, wobei die Datenmengen Dateien, Streams, Arrays oder andere Datentypen sein können. Die API ermöglicht die Angabe separater Eingabe- und Ausgabearbeitsverzeichnisse. Für die Ausgabe stellt die API die allgemeine Schnittstelle IOutputWorkingDirectory zur Verfügung, die vom Benutzer für seine spezifischen Anforderungen implementiert werden kann. Darüber hinaus stellt die API gebrauchsfertige Implementierungen bereit, die im Folgenden erläutert werden. Die IOutputWorkingDirectory-Schnittstelle erweitert IInputWorkingDirectory, da die Engine zunächst eine Datei erstellen und schreiben und diese dann zurücklesen kann. Die Schnittstelle enthält die Methode get_output_file(), die den Stream zum Schreiben zurückgibt, im Gegensatz zur Methode get_file(), die den Stream zum Lesen zurückgibt.
Speichern der Ausgabe als Datei im Festplattendateisystem
Wie oben erwähnt, wird das output_working_directory üblicherweise als Instanz der Klasse OutputFileSystemDirectory festgelegt.
So würden wir es einstellen:
Setzen Sie ASPOSE_TEX_OUTPUT_DIR auf das Ausgabeverzeichnis (Standard: output). Wenden Sie zuerst eine Lizenz an.
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()Der eingebettete plain-TeX-Stream erzeugt texput.xps und texput.log im Ausgabeverzeichnis.
Speichern der Ausgabe als ZIP-Archivdatei.
Eine andere Möglichkeit besteht darin, eine Datei oder einen Stream zu erstellen und diese als ZIP-Archiv zum Speichern der Ausgabedateien zu verwenden. Hier ist ein Beispiel:
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 wird im Binärmodus wb geöffnet. Rufen Sie finish() auf OutputZipDirectory auf, bevor der Stream geschlossen wird. Das Archiv enthält texput.xps und texput.log.
Zunächst erstellen wir einen Ausgabestream für die ZIP-Datei. Nachdem wir die Konvertierungsoptionen erstellt haben, legen wir dann die Option output_working_directory als Instanz der Klasse OutputZipDirectory fest.
Die Idee hinter dem Ausgabeterminal
Die Terminalausgabe ist ein weiterer wichtiger Aspekt der Ausgabe. Zu diesem Zweck definiert Aspose.TeX für Python die allgemeine Schnittstelle IOutputTerminal, die über eine einzelne Eigenschaft verfügt, die eine Instanz der TerminalWriter-Implementierung zurückgibt. Die verfügbaren Implementierungen werden im Folgenden erläutert.
Schreiben der Terminalausgabe in die Konsole
Um dies zu erreichen, müssen wir die Option terminal_out als Instanz der Klasse OutputConsoleTerminal festlegen.
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()Auch hier handelt es sich um den Standardwert der Option, sodass keine wirkliche Notwendigkeit besteht, ihn anzugeben. Daher dient dieser Abschnitt ausschließlich zu Demonstrationszwecken.
Terminalausgabe in eine Datei schreiben
Im Gegensatz zum Eingabeterminal enthält Aspose.TeX für Python eine Implementierung der IOutputTerminal-Schnittstelle, die es uns ermöglicht, die Terminalausgabe in eine Datei innerhalb eines angegebenen Ausgabeverzeichnisses zu schreiben.
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()OutputFileTerminal erhält das Ausgabearbeitsverzeichnis im Konstruktor und schreibt dort texput.trm neben texput.xps und texput.log.