LaTeX до зображення | Aspose.TeX для Python

Aspose.TeX для Python надає нам можливість конвертувати файли LaTeX у різні формати растрових зображень.

Перетворення LaTeX у PNG

Тепер давайте детально розглянемо код Python, який пропонує найпростіший підхід до перетворення LaTeX у формат PNG.

1# Create conversion options for Object LaTeX format upon Object TeX engine extension.
2options = TeXOptions.console_app_options(TeXConfig.object_latex)
3# Specify a file system working directory for the output.
4options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
5# Initialize the options for saving in PNG format.
6options.save_options = PngSaveOptions()
7
8# Run LaTeX to PNG conversion.
9TeXJob(path.join(Util.input_directory, "hello-world.ltx"), ImageDevice(True), options).run()

Для початку нам потрібно створити екземпляр класу TeXOptions за допомогою методу console_app_options(). Не турбуйтеся про назву, це лише статичний метод, який створює екземпляр. Цей метод використовує екземпляр object_latex класу TeXConfig, який ідеально підходить для перетворення файлу LaTeX. Ця конфігурація налаштовує механізм Object TeX для завантаження формату Object LaTeX і готовності до обробки файлу LaTeX. Формат Object LaTeX по суті такий самий, як формат LaTeX, але він використовує специфічні примітиви Object TeX для визначення показників сторінки.

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

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

Далі ми створюємо екземпляр класу TeXJob. У цьому випадку, оскільки ми хочемо перетворити файл LaTeX, що зберігається у файловій системі, ми використовуємо цю версію конструктора. Нам потрібно вказати повний шлях до файлу, інакше механізм шукатиме його в поточному каталозі (який є робочим каталогом сценарію) і може не знайти. Однак розширення .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.

Результати роботи движка можна знайти в зазначеному нами вихідному каталозі. Це включатиме файл стенограми та, що найважливіше, основний вихідний файл(и) зображень PNG.

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

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

 1# Create conversion options for Object LaTeX format upon Object TeX engine extension.
 2options = TeXOptions.console_app_options(TeXConfig.object_latex)
 3# Specify a file system working directory for the output.
 4options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
 5# Initialize the options for saving in PNG format.
 6so = PngSaveOptions()
 7so.device_writes_images = False  # Run LaTeX to PNG conversion.
 8options.save_options = so
 9device = ImageDevice(True)
10TeXJob(path.join(Util.input_directory, "hello-world.ltx"), device, options).run()
11
12# Save pages file by file.
13for i in range(len(device.result)):
14    with open(path.join(Util.output_directory, f"page-{(i + 1)}" + ".png"), "wb") as fs:
15        fs.write(device.result[i][0:len(device.result[i])])

Файл(и) “page-n.png” можна записати до будь-якого вказаного шляху. На відміну від PDF output, ці PNG-файли дублюватимуть вихідні PNG-файли, які записуються у вихідний каталог.

Щодо варіантів введення

Якщо наш основний вхідний файл потребує залежностей, наприклад пакетів, які не входять до базової системи LaTeX або підтримуваних пакунків, нам потрібно встановити параметр required_input_directory подібним чином до того, як ми встановлюємо параметр output_working_directory і розмістіть залежності в цьому каталозі. Залежності можна організовувати в підкаталоги за потреби. Якщо у нас є файли, які потрібно включити в процес верстки, наприклад зовнішні графічні файли, нам також потрібно встановити input_working_directory на місце, де зберігаються ці файли. Ми також можемо розмістити головний вхідний файл у вхідному каталозі та вказати відносний шлях у методі run() або взагалі не вказати шлях, якщо основний вхідний файл знаходиться в кореневому каталозі. Також є більше деталей про концепцію каталогу введення в Aspose.TeX і описані надані реалізації.

Також ознайомтеся з іншими варіантами роботи TeX тут.

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

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

Перетворення LaTeX у JPG

1# Create conversion options instance.
2...
3# Initialize the options for saving in JPEG format.
4options.save_options = JpegSaveOptions()

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

Перетворення LaTeX у TIFF

1# Create conversion options instance.
2...
3# Initialize the options for saving in TIFF format.
4options.save_options = TiffSaveOptions()

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

Перетворення LaTeX на BMP

1# Create conversion options instance.
2...
3# Initialize the options for saving in BMP format.
4options.save_options = BmpSaveOptions()

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

Перетворення LaTeX у SVG

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

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

API Aspose.SVG пропонує низку функцій для роботи з SVG, наприклад створення, завантаження, редагування та перетворення документів SVG.

Перетворення LaTeX у SVG так само просте, як перетворення у формати растрових зображень, з тією лише різницею, що save_options має бути встановлено на екземпляр класу SvgSaveOptions і пристрій має бути змінено на екземпляр класу SvgDevice.

1# Create conversion options for Object LaTeX format upon Object TeX engine extension.
2options = TeXOptions.console_app_options(TeXConfig.object_latex)
3# Specify a file system working directory for the output.
4options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
5# Initialize the options for saving in SVG format.
6options.save_options = SvgSaveOptions()
7# Run LaTeX to SVG conversion.
8TeXJob(path.join(Util.input_directory, "hello-world.ltx"), SvgDevice(), options).run()

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

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.