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
OutputFileSystemDirectoryto save rendered documents and log files directly to local disk folders. - Output working derictory ZIP archive uses
OutputZipDirectoryto package output documents, logs, and generated assets into a single.zipfile. - Output working directory Custom stream/memory uses
IOutputWorkingDirectoryto 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.