Создать PDF из LaTeX на Java

LaTeX широко используется для создания технической и научной документации. Файлы LaTeX (TEX или LTX) представляют собой исходные документы, заполненные командами для указания формата документа, включая текст, символы, математические выражения и графику. Мы можем легко сгенерировать документ PDF из исходного кода LaTeX программно. PDF позволяет обмениваться документами в формате только для чтения без ущерба для их стиля или макета. В этой статье мы узнаем, как создать PDF-документ из исходного файла LaTeX на Java.

В этой статье должны быть раскрыты следующие темы:

Java API для создания PDF из LaTeX

Для создания документов PDF из исходных файлов LaTeX мы будем использовать API Aspose.TeX for Java. Он позволяет набирать файлы TeX в различные форматы файлов, такие как PDF, XPS или изображения. Пожалуйста, либо загрузите JAR API, либо добавьте следующую конфигурацию pom.xml в приложение Java на основе Maven.

Репозиторий:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Зависимость:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-tex</artifactId>
    <version>21.11</version>
    <type>jar</type>
</dependency>

Создать PDF из файла LaTeX TeX в Java

Мы можем создать PDF-документ из файла LaTeX (TeX), выполнив следующие шаги:

  1. Во-первых, создайте экземпляр класса TeXOptions, используя метод consoleAppOptions().
  2. Установите конфигурацию TeX как TeXConfig.objectLaTeX().
  3. Затем установите входные и выходные рабочие каталоги.
  4. Затем укажите консоль или поток памяти в качестве выходного терминала.
  5. После этого установите параметры рендеринга в формат PDF.
  6. Наконец, вызовите метод run() для вновь созданного экземпляра класса TexJob с выходным PDF-файлом и объектом класса PdfDevice в качестве аргументов.

В следующем примере кода показано, как создать PDF-файл из файла TeX с помощью Java.

// В этом примере кода показано, как создать PDF-файл из исходного файла TeX.
// Рабочий каталог
String dataDir = "D:\\Files\\Tex\\";

// Создание вариантов набора.
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// Укажите рабочий каталог файловой системы для ввода.
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// Укажите рабочий каталог файловой системы для вывода.
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// Укажите поток памяти в качестве выходного терминала.
options.setTerminalOut(new OutputMemoryTerminal());

// Установите параметры рендеринга в формат PDF.
options.setSaveOptions(new PdfSaveOptions());

// Запустите набор текста.
new TeXJob(dataDir + "sample.tex", new PdfDevice(), options).run();
Создать PDF из файла LaTeX TeX в Java

Создайте PDF из файла LaTeX TeX в Java.

Создать PDF из файла LTX в Java

LaTeX использует теги разметки и свойства набора файлов расширения LTX, которые определяют структуру и содержимое документа. Мы также можем создать PDF-файл из файла LaTeX (LTX), выполнив шаги, упомянутые ранее. Однако нам просто нужно ввести исходный файл с расширением .ltx на последнем шаге.

В следующем примере кода показано, как создать PDF-файл из файла LTX с помощью Java.

// В этом примере кода показано, как создать PDF-файл из исходного файла LTX.
// Рабочий каталог
String dataDir = "D:\\Files\\Tex\\";

// Создание вариантов набора.
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// Укажите рабочий каталог файловой системы для ввода.
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// Укажите рабочий каталог файловой системы для вывода.
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// Укажите поток памяти в качестве выходного терминала.
options.setTerminalOut(new OutputMemoryTerminal());

// Установите параметры рендеринга в формат PDF.
options.setSaveOptions(new PdfSaveOptions());

// Запустите набор текста.
new TeXJob(dataDir + "sample.ltx", new PdfDevice(), options).run();

Преобразование TeX в XPS с помощью Java

Мы также можем преобразовать файл LaTeX (TeX) в XPS, выполнив шаги, упомянутые ранее. Однако нам просто нужно установить XpsSaveOptions вместо PdfSaveOptions на шаге № 5.

В следующем примере кода показано, как преобразовать TeX в XPS с помощью Java.

// В этом примере кода показано, как преобразовать Tex в XPS.
// Рабочий каталог
String dataDir = "D:\\Files\\Tex\\";

// Создание вариантов набора.
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// Укажите рабочий каталог файловой системы для ввода.
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// Укажите рабочий каталог файловой системы для вывода.
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// Укажите поток памяти в качестве выходного терминала.
options.setTerminalOut(new OutputMemoryTerminal());

// Установите параметры рендеринга в формат XPS.
options.setSaveOptions(new XpsSaveOptions());

// Запустите набор текста.
new TeXJob(dataDir + "sample.tex", new PdfDevice(), options).run();

Преобразование ZIP-каталога TeX в ZIP-каталог PDF с использованием Java

Мы можем конвертировать сразу несколько файлов TeX, сжатых в ZIP-архиве, в PDF, выполнив следующие шаги:

  1. Во-первых, открывайте потоки в ZIP-архивах в качестве входного и выходного рабочего каталога.
  2. Затем создайте экземпляр класса TeXOptions, используя метод consoleAppOptions().
  3. Затем установите конфигурацию TeX как TeXConfig.objectLaTeX().
  4. Затем установите входные и выходные ZIP-каталоги.
  5. Затем укажите консоль или поток памяти в качестве выходного терминала.
  6. После этого установите параметры рендеринга в формат PDF.
  7. Наконец, вызовите метод run() для вновь созданного экземпляра класса TexJob с выходным PDF-файлом и объектом класса PdfDevice в качестве аргументов.

В следующем примере кода показано, как преобразовать ZIP-архив TeX в ZIP-архив PDF с помощью Java.

// В этом примере кода показано, как преобразовать ZIP-каталог TeX в ZIP-каталог PDF.
// Рабочий каталог
String dataDir = "D:\\Files\\Tex\\";

// Откройте поток в ZIP-архиве, который будет служить входным рабочим каталогом.
final InputStream inZipStream = new FileInputStream(dataDir + "files.zip");

// Откройте поток в ZIP-архиве, который будет служить выходным рабочим каталогом.
final OutputStream outZipStream = new FileOutputStream(dataDir + "files-out.zip");

try {
    // Создайте параметры преобразования для формата ObjectTeX по умолчанию в расширении ядра ObjectTeX.
    TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

    // Укажите рабочий каталог ZIP-архива для ввода.
    options.setInputWorkingDirectory(new InputZipDirectory(inZipStream, "files"));

    // Укажите рабочий каталог ZIP-архива для вывода.
    options.setOutputWorkingDirectory(new OutputZipDirectory(outZipStream));

    // Укажите консоль в качестве выходного терминала.
    options.setTerminalOut(new OutputConsoleTerminal()); // Default. Not necessary to specify.

    // Определите параметры сохранения.
    options.setSaveOptions(new PdfSaveOptions());

    // Запустите работу.
    TeXJob job = new TeXJob("sample", new PdfDevice(), options);
    job.run();

    // Для последующего вывода посмотреть напишите. 
    options.getTerminalOut().getWriter().newLine();

    // Завершить выходной ZIP-архив.
    ((OutputZipDirectory)options.getOutputWorkingDirectory()).finish();
} finally {
  outZipStream.close();
}
Преобразование ZIP-архива TeX в ZIP-архив PDF

Преобразование ZIP-архива TeX в ZIP-архив PDF.

Получить бесплатную лицензию

Вы можете получить бесплатную временную лицензию, чтобы попробовать библиотеку без ограничений пробной версии.

Вывод

В этой статье мы узнали, как:

  • генерировать вывод PDF из исходного файла LaTeX на Java;
  • программно создать выходной документ XPS из файла TeX;
  • преобразовать ZIP-архив TeX в ZIP-архив PDF с помощью Java.

Кроме того, вы можете узнать больше об Aspose.TeX for Java API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

Смотрите также