LaTeX до зображення | Java

Aspose.TeX for Java provides features for converting LaTeX files to a number of raster image formats.

Як конвертувати LaTeX у PNG

Давайте ближче розглянемо код Java, що забезпечує найпростіший спосіб перетворення LaTeX у формат PNG.

Задайте в inputFile повний шлях до файлу LaTeX, наприклад hello-world.ltx, а в outputDirectory — наявну папку виводу. Імпортуйте використані в прикладі класи з com.aspose.tex і com.aspose.tex.rendering. Метод, що викликає цей код, має обробляти або оголошувати винятки. Застосуйте ліцензію згідно з посібником із ліцензування, щоб уникнути обмежень ознайомлювальної версії. Приклад використовує неінтерактивний режим і закриває ресурси виводу. У PNG-прикладі задано роздільну здатність 300 DPI. Для односторінкового файлу hello-world.ltx автоматично створюється hello-world.png, hello-world.jpg, hello-world.tif, hello-world.bmp або hello-world.svg залежно від вибраного формату.

 1// Convert LaTeX to PNG.
 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);
 6PngSaveOptions saveOptions = new PngSaveOptions();
 7saveOptions.setResolution(300);
 8options.setSaveOptions(saveOptions);
 9options.setInteraction(Interaction.NonstopMode);
10
11ImageDevice device = new ImageDevice();
12TeXJobResult result;
13try {
14    result = new TeXJob(inputFile, device, options).run();
15} finally {
16    device.dispose();
17    output.close();
18}

Отже, перше, що нам потрібно зробити (іноді не перше, як ми дізнаємося пізніше), це створити екземпляр класу TeXOptions. Єдиним статичним методом, який це робить, є consoleAppOptions(), тому не будемо турбуватися про значення його назви. Метод використовує примірник objectLaTeX() класу TeXConfig, який точно підходить для перетворення файлу LaTeX. Ця конфігурація вказує механізму Object TeX завантажити формат Object LaTeX і бути готовим прийняти файл LaTeX. Формат Object LaTeX насправді є лише форматом LaTeX, за винятком того, що він використовує специфічні примітиви Object TeX для налаштування показників сторінки.

Першим із необхідних параметрів є OutputWorkingDirectory, який визначає простір або область, куди буде записаний вихід TeX. Тут наведено деталі про концепцію вихідного каталогу в Aspose.TeX для Java. У цьому прикладі ми використовуємо клас OutputFileSystemDirectory, який дозволяє записувати вихідні дані у вказаний каталог або папку.

Другий варіант — екземпляр класу SaveOptions, який керуватиме перетворенням об’єктної моделі у цільовий формат. Оскільки ми перетворюємо LaTeX у PNG, це екземпляр класу PngSaveOptions, який дозволяє нам вказати роздільну здатність вихідних зображень.

Далі нам потрібно створити екземпляр класу TeXJob. Бажаючи перетворити файл LaTeX, що зберігається у файловій системі, ми використовуємо this версію конструктора. Потрібно вказати повний шлях до файлу. В іншому випадку механізм шукатиме його в поточному каталозі (який визначено тут) і, швидше за все, не знайде. Тим не менш, ми можемо опустити розширення, якщо наш файл має .tex. Механізм додасть його автоматично. Другим аргументом конструктора є екземпляр класу Device. Оскільки ми перетворюємо LaTeX у PNG, це екземпляр класу ImageDevice (який є спільним для всіх підтримуваних форматів зображень). В якості останнього аргументу ми передаємо нещодавно підготовлені параметри конвертації.

Все, що нам зараз потрібно зробити, це запустити роботу.

Незалежно від того, чи був запуск успішним чи ні, першим результатом, який ми побачимо, буде вихід терміналу. У разі успіху це виглядає приблизно так:

 1This is ObjectTeX, Version 3.1415926-1.0 (Aspose.TeX 21.8)
 2entering extended mode
 3
 4(<input_directory>\hello-world.ltx
 5LaTeX2e <2011/06/27>
 6(article.cls
 7Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
 8(size10.clo))
 9No file hello-world.aux.
10[1]
11(<output_directory>\hello-world.aux) )
12Output written on hello-world.png (1 page).
13Transcript written on hello-world.log.

Ми знайдемо інші продукти роботи двигуна в папці, яку ми вказали як каталог виведення. Це буде файл стенограми (.log) і, Вуаля!, основний вихідний(і) файл(и) зображень PNG.

Альтернативний спосіб запису основних вихідних файлів PNG

Існує інший спосіб отримати дані зображення у вигляді масиву байтів, кожен масив у другому вимірі представляє дані зображення для окремої сторінки.

 1// Convert LaTeX to PNG and save each page from the returned byte arrays.
 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);
 6PngSaveOptions saveOptions = new PngSaveOptions();
 7saveOptions.deviceWritesImages(false);
 8options.setSaveOptions(saveOptions);
 9options.setInteraction(Interaction.NonstopMode);
10
11ImageDevice device = new ImageDevice();
12TeXJobResult result;
13try {
14    result = new TeXJob(inputFile, device, options).run();
15    byte[][] pages = device.getResult();
16    for (int i = 0; i < pages.length; i++) {
17        Files.write(Paths.get(outputDirectory, "page-" + (i + 1) + ".png"), pages[i]);
18    }
19} finally {
20    device.dispose();
21    output.close();
22}

Приклад ручного збереження також потребує java.nio.file.Files і java.nio.file.Paths. Він зберігає дані сторінок із ImageDevice.getResult() як page-1.png, page-2.png тощо. Оскільки задано deviceWritesImages(false), автоматичний запис PNG вимкнено і вручну збережені сторінки не дублюються у вихідному каталозі. Це відрізняється від запису PDF у потік, де потік задає шлях виводу одного PDF-документа.

Про параметри введення

Якщо наш головний вхідний файл потребує залежностей, наприклад, пакетів, які не входять до базової системи LaTeX і підтримуваних пакетів, ми ПОВИННІ встановити опцію RequiredInputDirectory так само, як ми встановлюємо OutputWorkingDirectory і помістіть залежності в цей каталог. Залежності можуть бути довільно організовані в підкаталоги. Якщо у нас є власні файли для включення в процес верстки, скажімо, зовнішні графічні файли, ми ПОВИННІ також встановити InputWorkingDirectory, використовуючи шлях до розташування, де ці файли зібрано. Ми також можемо розмістити головний вхідний файл десь усередині вхідного каталогу та передати відносний шлях до конструктора TeXJob (або взагалі не вказати шлях, якщо головний вхідний файл знаходиться в корені). Тут наведено деталі про концепцію каталогу вводу в Aspose.TeX для Java та надані реалізації.

Інші варіанти завдань TeX обговорюються тут.

Ви також можете ознайомитися з безкоштовною веб-програмою для перетворення LaTeX у PNG, створеною на основі API Aspose.TeX для .NET. Тут – сторінка версії Java.

Нижче ми обговорюємо перетворення LaTeX в інші підтримувані формати растрових зображень. Ми не будемо вдаватися в подробиці лише тому, що їх насправді немає. Єдина відмінність полягає в типі властивості SaveOptions у параметрах перетворення.

Як конвертувати LaTeX у JPG

 1// Convert LaTeX to JPEG.
 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 JpegSaveOptions());
 7options.setInteraction(Interaction.NonstopMode);
 8
 9ImageDevice device = new ImageDevice();
10TeXJobResult result;
11try {
12    result = new TeXJob(inputFile, device, options).run();
13} finally {
14    device.dispose();
15    output.close();
16}

Ви також можете ознайомитися з безкоштовною веб-програмою для перетворення LaTeX у JPG, створеною на основі API Aspose.TeX для .NET. Тут – сторінка версії Java.

Як конвертувати LaTeX у TIFF

 1// Convert LaTeX to TIFF.
 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 TiffSaveOptions());
 7options.setInteraction(Interaction.NonstopMode);
 8
 9ImageDevice device = new ImageDevice();
10TeXJobResult result;
11try {
12    result = new TeXJob(inputFile, device, options).run();
13} finally {
14    device.dispose();
15    output.close();
16}

Ви також можете скористатися безкоштовною веб-програмою для перетворення LaTeX у TIFF, створеною на основі API Aspose.TeX для .NET. Тут – сторінка версії Java.

Як конвертувати LaTeX у BMP

 1// Convert LaTeX to BMP.
 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 BmpSaveOptions());
 7options.setInteraction(Interaction.NonstopMode);
 8
 9ImageDevice device = new ImageDevice();
10TeXJobResult result;
11try {
12    result = new TeXJob(inputFile, device, options).run();
13} finally {
14    device.dispose();
15    output.close();
16}

Ви також можете ознайомитися з безкоштовною веб-програмою для перетворення LaTeX у BMP, створеною на основі API Aspose.TeX для .NET. Тут – сторінка версії Java.

Як конвертувати LaTeX у SVG

І ще одним підтримуваним цільовим форматом є SVG. Масштабована векторна графіка (SVG) — це формат векторних зображень на основі XML для визначення двовимірної графіки з підтримкою інтерактивності та анімації.

Зображення SVG визначаються у форматі векторної графіки та зберігаються в текстових файлах XML. Це означає, що зображення SVG можна масштабувати без втрати якості, а файли SVG можна шукати, індексувати, створювати сценарії та стискати. Текстові файли XML можна створювати та редагувати за допомогою текстових редакторів або редакторів векторної графіки. Вони відображаються веб-браузерами, які найчастіше використовуються.

Крім того, існує бібліотека Aspose.SVG, яка має різні функції на основі формату SVG. Це включає створення, завантаження, редагування та конвертацію документів SVG.

Перетворення у SVG таке ж просте, як і перетворення у формати растрових зображень, за винятком того, що на додаток до SaveOptions, ми маємо змінити пристрій на екземпляр SvgDevice. ) клас.

 1// Convert LaTeX to SVG.
 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 SvgSaveOptions());
 7options.setInteraction(Interaction.NonstopMode);
 8
 9SvgDevice device = new SvgDevice();
10TeXJobResult result;
11try {
12    result = new TeXJob(inputFile, device, options).run();
13} finally {
14    device.dispose();
15    output.close();
16}

Ви також можете перевірити безкоштовну веб-програму для перетворення LaTeX у SVG, створену на основі Aspose.TeX для .NET . Тут – сторінка версії Java.