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