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.