Інтерфейс виводу Aspose.TeX | Java
Будь ласка, зверніться до Aspose.TeX для Java посилання на API, щоб отримати формальні визначення реалізації введення/виведення.
Приклади файлової системи, ZIP і терміналів набирають hello-world.tex у XPS. Укажіть у inputDirectory папку з файлом TeX, а в outputDirectory — наявну папку виведення. Для виведення в ZIP задайте outputZip як java.nio.file.Path у наявній папці. Імпортуйте класи Aspose.TeX із вибраного прикладу, com.aspose.tex.rendering.XpsDevice і потрібні класи java.io та java.nio.file. Метод виклику має обробляти або оголошувати винятки. Застосуйте ліцензію згідно з
посібником із ліцензування, щоб уникнути обмежень ознайомлювальної версії.
Поняття вихідного каталогу
Оскільки примітиви вводу-виводу мови TeX можуть мати справу лише з іменами файлів, Aspose.TeX визначає каталог як відображення між іменами та масивами даних. Маси даних мають бути файлами, потоками, масивами або будь-яким іншим. API дозволяє нам окремо вказувати вхідні та вихідні робочі каталоги. Він надає загальний інтерфейс IOutputWorkingDirectory для виведення, який користувач може реалізувати для власних цілей. Він також надає власні реалізації, які будуть розглянуті нижче. Інтерфейс розширює IInputWorkingDirectory, оскільки механізм може спочатку створити та записати файл, а потім прочитати його назад. Власний метод інтерфейсу getOuputFile() повертає потік для запису, на відміну від потоку для читання, який повертає getFile().
Запис вихідного файлу у файлову систему диска
Як ми згадували вище, найпоширенішим значенням для OutputWorkingDirectory буде екземпляр класу OutputFileSystemDirectory.
Ось як ми це встановимо:
1// inputDirectory contains hello-world.tex; outputDirectory is an existing output folder.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setInputWorkingDirectory(input);
6options.setOutputWorkingDirectory(output);
7options.setInteraction(Interaction.NonstopMode);
8options.setTerminalOut(new OutputMemoryTerminal());
9
10XpsDevice device = new XpsDevice();
11TeXJobResult result;
12try {
13 result = new TeXJob("hello-world", device, options).run();
14} finally {
15 device.dispose();
16 output.close();
17 input.close();
18}Цей варіант використання досить простий, тому ми не будемо на ньому довго зупинятися.
Запис вихідного файлу в ZIP-архів
Ми також можемо створити файл (або потік) і дозволити механізму TeX використовувати його як ZIP-архів для зберігання вихідних файлів. Ось воно:
1// Store the XPS document and TeX transcript in a ZIP archive.
2// inputDirectory contains hello-world.tex; outputZip is the java.nio.file.Path to create.
3TeXJobResult result;
4try (OutputStream zipStream = Files.newOutputStream(outputZip)) {
5 TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
6 InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
7 OutputZipDirectory output = new OutputZipDirectory(zipStream);
8 options.setInputWorkingDirectory(input);
9 options.setOutputWorkingDirectory(output);
10 options.setInteraction(Interaction.NonstopMode);
11 options.setTerminalOut(new OutputMemoryTerminal());
12 XpsDevice device = new XpsDevice();
13 try {
14 result = new TeXJob("hello-world", device, options).run();
15 // Finalize the archive while its underlying stream is still open.
16 output.finish();
17 } finally {
18 device.dispose();
19 output.close();
20 input.close();
21 }
22}Спочатку ми створюємо вихідний потік для файлу ZIP. Потім, після створення параметрів перетворення, ми встановлюємо параметр
OutputWorkingDirectory як екземпляр класу
OutputZipDirectory. Приклад зберігає hello-world.xps і hello-world.log в архіві. Після завдання викличте finish() для папки виведення до закриття базового потоку. Приклади тримають потоки й робочі папки відкритими до завершення завдання, потім закривають їх.
Поняття про вихідний термінал
Є ще одна важлива частина виводу — вихід терміналу. Що стосується цього, Aspose.TeX для Java визначає загальний інтерфейс IOutputTerminal як такий, що має два методи. Один із них повертає екземпляр BufferedWriter. Інший повертає екземпляр OutputStream як базовий потік. Надані реалізації інтерфейсу обговорюються нижче.
Запис виводу терміналу на консоль
Для цього нам потрібно встановити параметр TerminalOut як екземпляр класу OutputConsoleTerminal.
1// inputDirectory contains hello-world.tex; outputDirectory is an existing output folder.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setInputWorkingDirectory(input);
6options.setOutputWorkingDirectory(output);
7options.setInteraction(Interaction.NonstopMode);
8// This is also the default output terminal.
9options.setTerminalOut(new OutputConsoleTerminal());
10
11XpsDevice device = new XpsDevice();
12TeXJobResult result;
13try {
14 result = new TeXJob("hello-world", device, options).run();
15} finally {
16 device.dispose();
17 output.close();
18 input.close();
19}OutputConsoleTerminal — значення цього параметра за замовчуванням. Приклад явно вибирає його та записує виведення термінала в консоль під час перетворення. Усі чотири приклади виконуються без взаємодії з користувачем; приклади файлової системи та ZIP зберігають виведення термінала в пам’яті.
Запис вихідних даних терміналу у файл
На відміну від вхідного терміналу, Aspose.TeX для Java забезпечує реалізацію IOutputTerminal, яка дозволяє нам записувати вихідні дані терміналу у файл у деякому вихідному каталозі.
1// inputDirectory contains hello-world.tex; outputDirectory is an existing output folder.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setInputWorkingDirectory(input);
6options.setOutputWorkingDirectory(output);
7options.setInteraction(Interaction.NonstopMode);
8// Set the output directory first: the terminal writes <job_name>.trm there.
9options.setTerminalOut(new OutputFileTerminal(options.getOutputWorkingDirectory()));
10
11XpsDevice device = new XpsDevice();
12TeXJobResult result;
13try {
14 result = new TeXJob("hello-world", device, options).run();
15} finally {
16 device.dispose();
17 output.close();
18 input.close();
19}Задайте робочу папку виведення до створення OutputFileTerminal. Він записує виведення термінала в
<job_name>.trm, у цьому прикладі — hello-world.trm, у вказаній папці. Цей файл термінала відокремлений від журналу TeX hello-world.log. Для запису виведення термінала в інше місце передайте конструктору іншу реалізацію
IOutputWorkingDirectory.