Выходной интерфейс Aspose.TeX | С++
Пожалуйста, обратитесь к Aspose.TeX for C++ ссылка на API для формальных определений реализации ввода-вывода.
Концепция выходного каталога
Поскольку примитивы ввода-вывода языка TeX могут работать только с именами файлов, Aspose.TeX определяет каталог как сопоставление между именами и объемами данных. Предполагается, что основная часть данных представляет собой файлы, потоки, массивы или что-то еще. API позволяет нам отдельно указывать входные и выходные рабочие каталоги. Он предоставляет общий интерфейс IOutputWorkingDirectory для вывода, который пользователь может реализовать в своих целях. Он также предоставляет свои собственные реализации, которые будут обсуждаться ниже. Интерфейс расширяет IInputWorkingDirectory, поскольку механизм может сначала создать и записать файл, а затем прочитать его обратно. Собственный метод интерфейса GetOutputFile() возвращает поток для записи, в отличие от потока для чтения, возвращаемого функцией GetFile().
Запись вывода файла в файловую систему диска
Как мы уже упоминали выше, наиболее распространенным значением для OutputDirectory, скорее всего, будет экземпляр класса OutputFileSystemDirectory.
Вот как мы это установим:
1// Create conversion options instance.
2...
3// Specify a file system working directory for the output.
4options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(RunExamples::OutputDirectory));
Этот вариант использования довольно прост, поэтому больше нет необходимости на нем зацикливаться.
Запись вывода файла в ZIP-архив
Мы также можем создать файл (или поток) и позволить движку TeX использовать его в качестве ZIP-архива для хранения выходных файлов. Вот:
1 // Open the stream for the ZIP archive that will serve as the output working directory.
2 System::SharedPtr<System::IO::Stream> outZipStream = System::IO::File::Open(System::IO::Path::Combine(RunExamples::OutputDirectory, u"zip-pdf-out.zip"), System::IO::FileMode::Create);
3
4 // Create conversion options instance.
5 ...
6 // Specify a ZIP archive working directory for the output.
7 options->set_OutputWorkingDirectory(System::MakeObject<OutputZipDirectory>(outZipStream));
Сначала мы создаем выходной поток для ZIP-файла. Затем, после создания параметров преобразования, мы устанавливаем параметр OutputWorkingDirectory как экземпляр класса OutputZipDirectory.
Концепция выходного терминала
Есть еще одна важная часть вывода — вывод терминала. Что касается этого, Aspose.TeX для C++ определяет общий интерфейс IOutputTerminal, имеющий только одно свойство, которое возвращает экземпляр реализации TextWriter. Предоставленные реализации обсуждаются ниже.
Запись вывода терминала на консоль
Для этого нам нужно установить опцию TerminalOut как экземпляр класса OutputConsoleTerminal.
1// Create conversion options instance.
2...
3// Specify the console as the output terminal.
4options->set_TerminalOut(System::MakeObject<OutputConsoleTerminal>()); // Default. No need to specify.
Опять же, это значение параметра по умолчанию, поэтому нет необходимости его указывать. В связи с этим данный раздел служит только демонстрационным целям.
Запись вывода терминала в файл
В отличие от терминала ввода, Aspose.TeX для C++ предоставляет реализацию 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->set_TerminalOut(System::MakeObject<OutputFileTerminal>(options->get_OutputWorkingDirectory()));
Здесь мы просим движок TeX записать вывод терминала в файл с именем <job_name>.trm, который будет храниться в том же выходном каталоге, который мы указали для остальной части вывода. Но это не обязательно. С таким же успехом мы могли бы передать в конструктор любой другой экземпляр любой реализации IOutputTerminal.