Java 中灵活的 TeX 输入和工作目录
使用 Aspose.TeX for Java 配置用于 TeX 和 LaTeX 文档编译的输入源和虚拟文件系统工作目录。直接从本地文件系统、压缩 ZIP 存档或自定义内存流传递 TeX 源文件、包、宏和嵌入式图像,无需安装桌面 TeX 发行版(如 MiKTeX 或 TeX Live)。
编译 TeX 或 LaTeX 文档时,引擎需要访问主源文件(.tex)、引用的子文件(\input{} 或 \include)、样式(.sty)、类(.cls)、字体和图像。
Aspose.TeX for Java 将 TeX 输入源分离为由 IInputWorkingDirectory 接口表示的抽象工作目录:
- 输入工作目录 本地文件系统 使用
InputFileSystemDirectory直接从磁盘文件夹读取 TeX 源文件和资源。 - 输入工作目录 ZIP 存档 使用
InputZipDirectory读取封装的 TeX 编译内容,其中所有依赖项(.tex、.sty、图像)都存储在单个 .zip 文件中。 - 输入工作目录 自定义流/内存 使用
IInputWorkingDirector读取虚拟化文件系统、数据库 BLOB 输入或云存储流(S3/Azure Blob)。"
从本地文件系统目录加载 TeX 输入
使用 InputFileSystemDirectory 将物理磁盘文件夹指定为 TeX 引擎的输入工作目录。
import com.aspose.tex.*;
import java.io.IOException;
public class TeXInputFromFileSystem {
public static void main(String[] args) throws IOException {
// Create TeX options for LaTeX format using ObjectTeX engine
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Set the input working directory to a local file folder
String inputDirPath = "C:/TeXProject/Input/";
options.setInputWorkingDirectory(new InputFileSystemDirectory(inputDirPath));
// Set output working directory for compiled results (PDF/XPS/Images)
String outputDirPath = "C:/TeXProject/Output/";
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(outputDirPath));
// Run TeX compilation for 'main.tex'
TeXJob job = new TeXJob("main", new PdfDevice(), options);
job.run();
System.out.println("TeX compilation from local directory completed successfully.");
}
}从 ZIP 存档加载 TeX 输入
使用 InputZipDirectory 直接从 .zip 文件编译自包含的 TeX 包,而无需将其解压到磁盘。
import com.aspose.tex.*;
import java.io.FileInputStream;
import java.io.IOException;
public class TeXInputFromZipArchive {
public static void main(String[] args) throws IOException {
// Initialize LaTeX conversion options
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Open input ZIP stream containing main.tex, packages, and assets
FileInputStream zipStream = new FileInputStream("C:/TeXProject/ProjectBundle.zip");
// Set input working directory to the ZIP archive stream
options.setInputWorkingDirectory(new InputZipDirectory(zipStream, "subfolder_inside_zip"));
// Define output directory on disk
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Execute TeX job referencing 'main.tex' inside the ZIP
TeXJob job = new TeXJob("main", new PdfDevice(), options);
job.run();
zipStream.close();
System.out.println("TeX compilation directly from ZIP archive completed.");
}
}通过内存流传递 TeX 源代码
对于动态 LaTeX 生成(例如服务器呈现的报告或动态公式渲染),将原始字符串内容或流直接传递给 TeXJob。
import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
public class TeXInputFromMemoryStream {
public static void main(String[] args) throws Exception {
// Create dynamic LaTeX content string
String latexCode = "\\documentclass{article}\n" +
"\\begin{document}\n" +
"\\section{Dynamic Report}\n" +
"Hello World from Aspose.TeX for Java!\n" +
"\\end{document}";
InputStream inputSteam = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));
// Configure options
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Run job passing stream directly
TeXJob job = new TeXJob(inputSteam, new PdfDevice(), options);
job.run();
System.out.println("Dynamic LaTeX stream successfully compiled to PDF.");
}
}安装和设置
使用 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. 我是否需要安装 MiKTeX、TeX Live 或外部可执行二进制文件?
不需要。Aspose.TeX for Java 是一个完全独立的 Java 引擎,可以原生执行 TeX/LaTeX 解析、排版和渲染,无需依赖外部原生可执行文件。
2. 我可以为主文件和外部图形/样式混合使用不同的输入源吗?
可以。您可以设置主 InputWorkingDirectory(例如 InputZipDirectory),并使用 TeXOptions 配置设置配置辅助程序包/字体搜索路径。
3. Aspose.TeX 如何处理 \input{} 或 \includegraphics{} 宏中的相对路径?
LaTeX 文档中定义的相对路径会自动相对于活动 IInputWorkingDirectory 实例指定的根目录进行解析。