LaTeX в XPS | Java
Другой целевой формат — XPS. Файл XPS физически представляет собой ZIP-пакет, содержащий содержимое документа с разбивкой на страницы, а также метаданные, необходимые для правильного отображения конкретными средствами просмотра (например, Windows XPS Viewer) и печати. Все данные в пакете организованы в виде файлов в каталогах. Некоторые из них содержат такие ресурсы, как изображения, шрифты и профили ICC. Другие представляют собой XML-файлы в различных конкретных схемах. К последним относятся файлы, содержащие сами данные документа. Данные документа представляют собой набор файлов – каждый файл содержит данные для отдельной страницы документа. Такие файлы состоят из одного элемента страницы и дерева дочерних элементов — Canvas, Path и Glyphs. Canvas — это элемент группировки, который может содержать другие Canvas, Paths и Glyphs. Его цель — контроль над внешним видом всех дочерних элементов как группы. Элементы Path используются для определения путей векторной графики. А элементы Glyphs используются для определения текстового содержимого. Все три элемента обладают свойствами, определяющими различные аспекты внешнего вида.
Существует библиотека Aspose.Page, которая предоставляет API для работы с документами XPS, а также для их преобразования в форматы PDF и растровых изображений.
Как конвертировать LaTeX в XPS
Преобразование в XPS так же просто, как и преобразование в форматы растровых изображений, за исключением того, что в дополнение к SaveOptions нам нужно использовать экземпляр класса XpsDevice .
Задайте в inputFile полный путь к файлу LaTeX, например hello-world.ltx, а в outputDirectory — существующую папку вывода. Импортируйте используемые в примере классы из com.aspose.tex и com.aspose.tex.rendering. Вызывающий метод должен обрабатывать или объявлять исключения. Примените лицензию согласно
руководству по лицензированию, чтобы избежать ограничений ознакомительной версии. Пример использует неинтерактивный режим и закрывает ресурсы вывода. Для самодостаточного входного файла hello-world.ltx выходной файл по умолчанию — hello-world.xps.
1// Convert LaTeX to XPS using the default output filename.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6options.setSaveOptions(new XpsSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9XpsDevice device = new XpsDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Альтернативный способ записи основного выходного файла XPS.
Есть еще один конструктор класса XpsDevice, который позволяет нам получить результирующий XPS-файл альтернативным способом.
Используйте те же значения inputFile и outputDirectory, что и выше. Задайте xpsFile как java.nio.file.Path, например Paths.get(outputDirectory, "any-name.xps"). Помимо классов Aspose.TeX, импортируйте java.io.OutputStream, java.nio.file.Files, java.nio.file.Path и java.nio.file.Paths. Поток определяет путь выходного XPS-файла; вспомогательные файлы по-прежнему записываются в outputDirectory.
1// Convert LaTeX to XPS using an explicitly selected output stream.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3// xpsFile is the java.nio.file.Path of the XPS file to create.
4TeXJobResult result;
5try (OutputStream xpsStream = Files.newOutputStream(xpsFile)) {
6 TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
7 OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
8 options.setOutputWorkingDirectory(output);
9 options.setSaveOptions(new XpsSaveOptions());
10 options.setInteraction(Interaction.NonstopMode);
11
12 XpsDevice device = new XpsDevice(xpsStream);
13 try {
14 result = new TeXJob(inputFile, device, options).run();
15 } finally {
16 device.dispose();
17 output.close();
18 }
19}Эффект тот же, что мы получаем здесь.
Вы также можете ознакомиться с бесплатным преобразованием LaTeX в XPS веб-приложение, созданным на основе API Aspose.TeX for .NET. Здесь — страница версии Java.