Інтерфейс виводу Aspose.TeX | Python через .NET

Щоб отримати офіційні визначення реалізації вводу/виводу, зверніться до посилання на API **Aspose.TeX для Python **.

Ідея вихідного каталогу

Aspose.TeX визначає каталог як відображення між іменами та масивами даних, де масиви даних можуть бути файлами, потоками, масивами або іншими типами даних. API дозволяє специфікувати окремі вхідні та вихідні робочі каталоги. Для виведення API надає загальний інтерфейс IOutputWorkingDirectory, який користувач може реалізувати для своїх конкретних потреб. Крім того, API надає готові до використання реалізації, які будуть розглянуті нижче. Інтерфейс IOutputWorkingDirectory розширює IInputWorkingDirectory, оскільки механізм може спочатку створити та записати файл, а потім прочитати його назад. Інтерфейс містить метод get_output_file(), який повертає потік для запису, на відміну від методу get_file(), який повертає потік для читання.

Збереження результату як файл у файловій системі диска

Як згадувалося вище, output_working_directory зазвичай встановлюється як екземпляр класу OutputFileSystemDirectory.

Ось як ми це встановимо:

Укажіть вихідний каталог у ASPOSE_TEX_OUTPUT_DIR (типово output). Спочатку застосуйте ліцензію. 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()

Вбудований потік plain TeX створює texput.xps і texput.log у вихідному каталозі.

Збереження результату як архівний файл ZIP.

Інший варіант — створити файл або потік і використовувати його як ZIP-архів для зберігання вихідних файлів. Ось приклад:

 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 відкривається у двійковому режимі wb. Викличте finish() в OutputZipDirectory перед закриттям потоку. Архів містить texput.xps і texput.log.

Для початку ми створюємо вихідний потік для файлу ZIP. Потім, після створення параметрів перетворення, ми встановлюємо параметр output_working_directory як екземпляр класу OutputZipDirectory.

Ідея вихідного терміналу

Вивід терміналу є ще одним важливим аспектом виводу. Для цього Aspose.TeX для Python визначає загальний інтерфейс IOutputTerminal, який має єдину властивість, яка повертає екземпляр реалізації TerminalWriter. Доступні реалізації будуть розглянуті нижче.

Запис виведення терміналу на консоль

Щоб досягти цього, нам потрібно встановити параметр terminal_out як екземпляр класу 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()

Знову ж таки, це значення параметра за замовчуванням, тому немає справжньої потреби вказувати його. Тому цей розділ надається виключно для демонстрації.

Запис вихідних даних терміналу у файл

На відміну від вхідного терміналу, Aspose.TeX для Python містить реалізацію інтерфейсу IOutputTerminal, який дозволяє нам записувати вихідні дані терміналу у файл у вказаному каталозі виведення.

 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 приймає вихідний робочий каталог і записує туди texput.trm поруч із texput.xps і texput.log.