Flexible TeX outputs and output working directories in Java

Configure output targets and storage mechanisms for TeX and LaTeX document compilation using Aspose.Font for Java. Save rendered documents (PDF, XPS, SVG, PNG, JPEG, TIFF, BMP) and auxiliary compilation artifacts (.log, .aux) directly to physical disk folders, compressed ZIP archives, or custom in-memory streams without requiring desktop TeX installations.

 

During compilation, the TeX typesetting engine produces two main categories of output:

  • Primary Output files: The target document (e.g., .pdf, .xps, or image sequences).
  • Auxiliary output files: Logs (.log), auxiliary data (.aux), and intermediate files generated by LaTeX macros.

Aspose.TeX for Java encapsulates output destinations into abstract working directories via the IOutputWorkingDirectory interface, allowing developers to direct output streams dynamically. Supported output directory types:

  • Output working directory Local file system uses OutputFileSystemDirectory to save rendered documents and log files directly to local disk folders.
  • Output working derictory ZIP archive uses OutputZipDirectory to package output documents, logs, and generated assets into a single .zip file.
  • Output working directory Custom stream/memory uses IOutputWorkingDirectory to capture output directly in memory, database BLOBs, or cloud streams (S3/Azure Blob).

Save TeX output to a Local file system directory

Direct primary document outputs and auxiliary compilation logs to a physical folder using 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);
    }
}

Save TeX output directly to a ZIP archive

Package rendered documents along with intermediate logs and generated images into a compressed ZIP file using 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.");
    }
}

Stream TeX output to memory/ByteArray

For cloud or web applications, capture rendered documents directly as byte streams without writing files to local disk storage.

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

Installation and Setup

Integrate Aspose.TeX for Java into your project using 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. What output target devices are supported in Aspose.TeX for Java?

Aspose.TeX supports several output devices, including PdfDevice (PDF documents), XpsDevice (XPS documents), SvgDevice (scalable vector graphics), and ImageDevice (raster images like PNG, JPEG, TIFF, and BMP).

2. Where are auxiliary compilation files (.log, .aux) saved?

Auxiliary files are written to the directory specified in TeXOptions.setOutputWorkingDirectory(). If you use OutputZipDirectory, the .log and .aux files will be packaged directly inside the ZIP archive alongside the rendered document.

3. Can I suppress or redirect log output files?

Yes. You can customize terminal/log output handling through TeXOptions.setTerminalOut() or assign a custom IOutputWorkingDirectory implementation to discard or redirect compilation logs.