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 за допомогою constructor, який приймає повний шлях до файлу як параметр. Якщо ми не вкажемо повний шлях, механізм шукатиме файл у поточному каталозі (який є робочим каталогом сценарію) і може не знайти його. Однак ми можемо опустити розширення, якщо наш файл має розширення .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 матиме назву any-name.pdf і буде розміщено у вказаному каталозі. Однак, на відміну від виведення зображення, у вихідному каталозі, визначеному параметрами перетворення, не буде інших PDF-файлів. Винятком є ​​випадки, коли any-name.pdf знаходиться в тому самому каталозі файлової системи, призначеному параметру output_working_directory за допомогою OutputFileSystemDirectory.

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

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

Також обговорюються інші варіанти завдань TeX.

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

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.