Java 中灵活的 TeX 输出和输出工作目录

使用 Aspose.Font for Java 配置 TeX 和 LaTeX 文档编译的输出目标和存储机制。将渲染后的文档(PDF、XPS、SVG、PNG、JPEG、TIFF、BMP)以及辅助编译文件(.log、.aux)直接保存到物理磁盘文件夹、压缩 ZIP 存档或自定义内存流中,无需安装桌面版 TeX。

 

在编译过程中,TeX 排版引擎会生成两大类输出:

  • 主要输出文件:目标文档(例如 .pdf.xps 或图像序列)。
  • 辅助输出文件:日志(.log)、辅助数据(.aux)以及由 LaTeX 宏生成的中间文件。

Aspose.TeX for 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 存档

使用 OutputZipDirectory 将渲染后的文档以及中间日志和生成的图像打包到压缩 ZIP 文件中。

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

对于云端或 Web 应用程序,可将渲染后的文档直接捕获为字节流,而无需将文件写入本地磁盘存储。

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.");
    }
}

安装和设置

使用 Maven 将 Aspose.TeX for Java 集成到您的项目中:

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 实现,以丢弃或重定向编译日志。