LaTeX у PDF | Aspose.TeX для Java

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

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

1// Create conversion options for Object LaTeX format upon Object TeX engine extension.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
3// Specify a file system working directory for the output.
4options.setOutputWorkingDirectory(new OutputFileSystemDirectory(Utils.getOutputDirectory()));
5// Initialize the options for saving in PDF format.
6options.setSaveOptions(new PdfSaveOptions());
7// Run LaTeX to PDF conversion.
8new TeXJob(Utils.getInputDirectory() +  "hello-world.ltx", new PdfDevice(), options).run();

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

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

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

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

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

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

Є ще один конструктор класу PdfDevice, який дозволяє нам отримати кінцевий PDF-файл альтернативним способом.

 1// Create the stream to write the PDF file to.
 2final OutputStream pdfStream = new FileOutputStream(Utils.getOutputDirectory() + "any-name.pdf");
 3try {
 4  // Create conversion options for Object LaTeX format upon Object TeX engine extension.
 5  ...
 6    // Run LaTeX to PDF conversion.
 7    new TeXJob(Utils.getInputDirectory() + "hello-world.ltx", new PdfDevice(pdfStream), options).run();
 8} finally {
 9  if (pdfStream != null)
10    pdfStream.close();
11}

Файл any-name.pdf у вказаному каталозі буде нашим основним вихідним PDF-файлом. У той же час, на відміну від image output, ми не знайдемо PDF-файлів у вихідному каталозі, визначеному параметрами перетворення. Виняток: any-name.pdf знаходиться (за своїм шляхом) у тому самому каталозі файлової системи, який призначено параметру OutputWorkingDirectory за допомогою OutputFileSystemDirectory.

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

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

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

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

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.