Гибкий вывод TeX и рабочие каталоги вывода в Java

Настройте целевые места вывода и механизмы хранения для компиляции документов TeX и LaTeX с помощью Aspose.Font для Java. Сохраняйте отрендеренные документы (PDF, XPS, SVG, PNG, JPEG, TIFF, BMP) и вспомогательные артефакты компиляции (.log, .aux) непосредственно в физические папки на диске, сжатые ZIP-архивы или пользовательские потоки в памяти без необходимости установки настольного TeX.

 

Во время компиляции механизм компьютерной вёрстки TeX создает две основные категории выходных данных:

  • Основные выходные файлы: Целевой документ (например, .pdf, .xps или последовательности изображений).
  • Вспомогательные выходные файлы: журналы (.log), вспомогательные данные (.aux) и промежуточные файлы, создаваемые макросами LaTeX.

Aspose.TeX для Java инкапсулирует места назначения вывода в абстрактные рабочие каталоги через интерфейс IOutputWorkingDirectory, позволяя разработчикам динамически направлять выходные потоки. Поддерживаемые типы выходных каталогов:

  • Рабочий каталог вывода Локальная файловая система использует OutputFileSystemDirectory для сохранения отрендеренных документов и файлов журналов непосредственно в папки на локальном диске.
  • Рабочий каталог вывода ZIP-архив использует OutputZipDirectory для упаковки выходных документов, журналов и созданных ресурсов в один файл .zip.
  • Рабочий каталог вывода Пользовательский поток/память использует IOutputWorkingDirectory для захвата выходных данных непосредственно в памяти, BLOB-объекты базы данных или облачные потоки (S3/Azure Blob).

Сохранение вывода TeX в каталоге локальной файловой системы

Направляйте основной вывод документа и вспомогательные журналы компиляции в физическую папку с помощью OutputFileSystemDirectory.

import com.aspose.tex.*;
import java.io.IOException;

public class TeXOutputToFileSystem {
    public static void main(String[] args) throws IOException {
        // Initialize options for LaTeX format using ObjectTeX
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Set input working directory
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Set output working directory for compiled documents and logs
        String outputDirPath = "C:/TeXProject/Output/";
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory(outputDirPath));

        // Execute TeX job producing PDF output
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        System.out.println("TeX compilation complete. Outputs saved to: " + outputDirPath);
    }
}

Сохранение вывода TeX непосредственно в ZIP-архив

Упаковывайте отрендеренные документы вместе с промежуточными журналами и созданными изображениями в сжатый ZIP-файл с помощью OutputZipDirectory.

import com.aspose.tex.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class TeXOutputToZipArchive {
    public static void main(String[] args) throws IOException {
        // Initialize LaTeX conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Create output stream for destination ZIP file
        FileOutputStream zipStream = new FileOutputStream("C:/TeXProject/OutputBundle.zip");

        // Set output working directory to ZIP stream
        options.setOutputWorkingDirectory(new OutputZipDirectory(zipStream));

        // Run job targeting PDF rendering
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        zipStream.close();
        System.out.println("TeX outputs and logs successfully bundled into OutputBundle.zip.");
    }
}

Передача вывода TeX в память/ByteArray

Для облачных или веб-приложений захватывайте отрендеренные документы непосредственно как потоки байтов, не записывая файлы в локальное дисковое хранилище.

import com.aspose.tex.*;
import java.io.ByteArrayOutputStream;

public class TeXOutputToMemoryStream {
    public static void main(String[] args) throws Exception {
        // Configure conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Initialize memory output stream device
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        
        // Configure output working directory for log/auxiliary files
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Logs/"));

        // Run compilation directing PDF output to byte array stream
        TeXJob job = new TeXJob("main", new PdfDevice(outputStream), options);
        job.run();

        byte[] pdfBytes = outputStream.toByteArray();
        System.out.println("Generated PDF size in memory: " + pdfBytes.length + " bytes.");
    }
}

Установка и настройка

Интегрируйте Aspose.TeX для Java в свой проект с помощью Maven:

Package Manager Console Command

<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>Latest</version>
</dependency>

FAQ

1. Какие целевые устройства вывода поддерживаются в Aspose.TeX for Java?

Aspose.TeX поддерживает несколько устройств вывода, включая PdfDevice (PDF-документы), XpsDevice (XPS-документы), SvgDevice (масштабируемая векторная графика) и ImageDevice (растровые изображения, такие как PNG, JPEG, TIFF и BMP).

2. Где сохраняются вспомогательные файлы компиляции (.log, .aux)?

Вспомогательные файлы записываются в каталог, указанный в TeXOptions.setOutputWorkingDirectory(). Если используется OutputZipDirectory, файлы .log и .aux будут непосредственно упакованы в ZIP-архив вместе с отрендеренным документом.

3. Можно ли подавить или перенаправить выходные файлы журналов?

Да. Можно настроить обработку вывода терминала/журнала через TeXOptions.setTerminalOut() или назначить пользовательскую реализацию IOutputWorkingDirectory, чтобы удалять или перенаправлять журналы компиляции.