Выходной интерфейс Aspose.TeX | Java
Пожалуйста, обратитесь к Aspose.TeX for Java ссылка на API для формальных определений реализации ввода-вывода.
Концепция выходного каталога
Поскольку примитивы ввода-вывода языка TeX могут работать только с именами файлов, Aspose.TeX определяет каталог как сопоставление между именами и объемами данных. Предполагается, что основная часть данных представляет собой файлы, потоки, массивы или что-то еще. API позволяет нам отдельно указывать входные и выходные рабочие каталоги. Он предоставляет общий интерфейс IOutputWorkingDirectory для вывода, который пользователь может реализовать в своих целях. Он также предоставляет свои собственные реализации, которые будут обсуждаться ниже. Интерфейс расширяет IInputWorkingDirectory, поскольку механизм может сначала создать и записать файл, а затем прочитать его обратно. Собственный метод интерфейса getOuputFile() возвращает поток для записи, в отличие от потока для чтения, возвращаемого getFile().
Запись вывода файла в файловую систему диска
Как мы уже упоминали выше, наиболее распространенным значением OutputWorkingDirectory, скорее всего, будет экземпляр класса OutputFileSystemDirectory.
Вот как мы это установим:
1// Create conversion options instance.
2...
3// Specify a file system working directory for the output.
4options.setOutputWorkingDirectory(new OutputFileSystemDirectory(Utils.getOutputDirectory()));
Этот вариант использования достаточно прост, поэтому мы не будем на нем долго останавливаться.
Запись вывода файла в ZIP-архив
Мы также можем создать файл (или поток) и позволить движку TeX использовать его в качестве ZIP-архива для хранения выходных файлов. Вот:
1// Open the stream for the ZIP archive that will serve as the output working directory.
2final OutputStream outZipStream = new FileOutputStream(Utils.getOutputDirectory() + "zip-pdf-out.zip");
3{
4 // Create conversion options instance.
5 ...
6 // Specify a ZIP archive working directory for the output.
7 options.setOutputWorkingDirectory(new OutputZipDirectory(outZipStream));
8} finally {
9 if (outZipStream != null)
10 outZipStream.close();
11}
Сначала мы создаем выходной поток для ZIP-файла. Затем, после создания параметров преобразования, мы устанавливаем параметр OutputWorkingDirectory как экземпляр класса OutputZipDirectory.
Концепция выходного терминала
Есть еще одна важная часть вывода — вывод терминала. Что касается этого, Aspose.TeX для Java определяет общий интерфейс IOutputTerminal как имеющий два метода. Один из них возвращает экземпляр BufferedWriter. Другой возвращает экземпляр OutputStream в качестве базового потока. Предоставленные реализации интерфейса обсуждаются ниже.
Запись вывода терминала на консоль
Для этого нам нужно установить опцию TerminalOut как экземпляр класса OutputConsoleTerminal.
1// Create conversion options instance.
2...
3// Specify the console as the input terminal.
4options.setTerminalOut(new OutputConsoleTerminal()); // Default value. Arbitrary assignment.
Опять же, это значение параметра по умолчанию, поэтому нет необходимости его указывать. В связи с этим данный раздел служит только демонстрационным целям.
Запись вывода терминала в файл
В отличие от терминала ввода, Aspose.TeX for Java предоставляет реализацию IOutputTerminal, которая позволяет нам записывать вывод терминала в файл в некотором выходном каталоге.
1// Create conversion options instance.
2...
3// Specify that the terminal output must be written to a file in the output working directory.
4// The file name is <job_name>.trm.
5options.setTerminalOut(new OutputFileTerminal(options.getOutputWorkingDirectory()));
Здесь мы просим движок TeX записать вывод терминала в файл с именем <job_name>.trm, который будет храниться в том же выходном каталоге, который мы указали для остальной части вывода. Но это не обязательно. С таким же успехом мы могли бы передать в конструктор любой другой экземпляр любой реализации IOutputTerminal.