LaTeX в PDF | Aspose.TeX для Python

Преобразование LaTeX в PDF

Теперь давайте подробно рассмотрим код Python, который предлагает наиболее простой подход к преобразованию LaTeX в формат PDF.

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 PDF format.
6options.save_options = PdfSaveOptions()
7# Run LaTeX to PDF conversion.
8TeXJob(path.join(Util.input_directory, "hello-world.ltx"), PdfDevice(), 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. В данном конкретном случае мы используем класс OutputFileSystemDirectory, который позволяет нам записывать выходные данные в указанный каталог или папку.

Для второго варианта требуется экземпляр класса SaveOptions, который определяет, как объектная модель преобразуется в нужный формат. В нашем случае, когда мы конвертируем LaTeX в PDF, он относится к экземпляру класса PdfSaveOptions.

Чтобы преобразовать файл LaTeX, хранящийся в файловой системе, нам нужно создать экземпляр класса TeXJob, используя конструктор, который принимает полный путь к файлу в качестве параметра. Если мы не укажем полный путь, движок будет искать файл в текущем каталоге (который является рабочим каталогом скрипта) и может не найти его. Однако мы можем опустить расширение, если наш файл имеет расширение .tex, поскольку движок автоматически добавит его. Второй аргумент конструктора — это экземпляр класса Device. В нашем случае, поскольку мы конвертируем LaTeX в PDF, это экземпляр класса PdfDevice. Наконец, в качестве последнего аргумента мы передаем недавно подготовленные параметры преобразования.

Теперь остается только запустить задание.

После выполнения, независимо от того, было оно успешным или нет, первое, что мы увидим — это вывод терминала. Если выполнение прошло успешно, вывод будет выглядеть примерно так:

 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.pdf (1 page).
13Transcript written on hello-world.log.

В папке, которую мы указали в качестве выходной, мы найдем файл расшифровки и, вот он!, основной выходной PDF-файл, а также другие результаты работы движка.

Альтернативный способ записи основного выходного PDF-файла.

Класс PdfDevice имеет еще один конструктор, который позволяет нам получить результирующий PDF-файл другим способом.

 1# Create the stream to write the PDF file to.
 2with open(path.join(Util.output_directory, "any-name.pdf"), "wb") as pdf_stream:
 3    # Create conversion options for Object LaTeX format upon Object TeX engine extension.
 4    options = TeXOptions.console_app_options(TeXConfig.object_latex)
 5    # Specify a file system working directory for the output.
 6    options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
 7    # Initialize the options for saving in PDF format.
 8    options.save_options = PdfSaveOptions()
 9    # Run LaTeX to PDF conversion.
10    TeXJob(path.join(Util.input_directory, "hello-world.ltx"), PdfDevice(pdf_stream), options).run()

Основной выходной PDF-файл будет называться «любое имя.pdf» и будет расположен в указанном каталоге. Однако, в отличие от вывода изображения, в выходном каталоге, указанном параметрами преобразования, не будет других PDF-файлов. Исключением является случай, когда any-name.pdf находится в том же каталоге файловой системы, который назначен для параметра output_working_directory с помощью OutputFileSystemDirectory.

О параметрах ввода

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

Также обсуждаются другие варианты работы в TeX.

Вы также можете изучить бесплатное веб-приложение для преобразования LaTeX в PDF, разработанное с использованием Aspose.TeX for .NET API.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.