LaTeX до XPS | Java

Іншим цільовим форматом є XPS. Файл XPS фізично є ZIP-пакетом, який містить розбитий на сторінки вміст документа, а також метадані, необхідні для належного відображення певними засобами перегляду (наприклад, Windows XPS Viewer) і друку. Усі дані в пакеті організовано як файли в каталогах. Деякі з них містять такі ресурси, як зображення, шрифти та профілі ICC. Інші — це XML-файли в різних конкретних схемах. До останніх відносяться файли, що містять самі дані документа. Дані документа — це набір файлів — кожен файл містить дані для окремої сторінки документа. Такі файли складаються з одного елемента сторінки та дерева дочірніх елементів - Canvas, Path і Glyphs. Canvas — це груповий елемент, який може містити інші Canvases, 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 для .NET. Тут – сторінка версії Java.