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

Aspose.TeX for 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 for 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, эти файлы PNG дублируют выходные файлы PNG, записанные в выходной каталог.

По поводу вариантов ввода

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

Также изучите другие варианты работы в TeX здесь.

Вы также можете изучить бесплатное веб-приложение для преобразования LaTeX в PNG, разработанное с использованием Aspose.TeX for .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 for .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 for .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 for .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 for .NET API.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.