LaTeX 广泛用于创建技术和科学文档。 LaTeX 文件(TEX 或 LTX)是源文档,其中填充了用于指定文档格式的命令,包括文本、符号、数学表达式和图形。我们可以轻松地以编程方式从 LaTeX 源代码生成 PDF 文档。 PDF 允许以只读格式共享文档,而不会影响其样式或布局。在本文中,我们将学习如何从 Java 中的 LaTeX 源文件创建 PDF 文档。
本文将涵盖以下主题:
- Java API 从 LaTeX 创建 PDF
- 在 Java 中从 TeX (LaTeX) 文件创建 PDF
- 在 Java 中从 LTX (LaTeX) 文件创建 PDF
- 使用 Java 将 TeX 转换为 XPS
- 使用 Java 将 TeX ZIP 目录转换为 PDF ZIP 目录
Java API 从 LaTeX 创建 PDF
为了从 LaTeX 源文件创建 PDF 文档,我们将使用 Aspose.TeX for Java API。它允许将 TeX 文件排版为不同的文件格式,如 PDF、XPS 或图像。请下载 API 的 JAR 或在基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置。
存储库:
<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>21.11</version>
<type>jar</type>
</dependency>
在 Java 中从 LaTeX TeX 文件创建 PDF
我们可以按照以下步骤从 LaTeX (TeX) 文件创建 PDF 文档:
- 首先,使用 consoleAppOptions() 方法创建 TeXOptions 类的实例。
- 将 TeX 配置设置为 TeXConfig.objectLaTeX()。
- 接下来,设置输入和输出工作目录。
- 然后,指定控制台或内存流作为输出终端。
- 之后,设置渲染为 PDF 格式的选项。
- 最后,为新创建的 TexJob 类实例调用 run() 方法,并将输出 PDF 和 PdfDevice 类对象作为参数。
以下代码示例演示了如何使用 Java 从 TeX 文件创建 PDF。
// 此代码示例演示如何从 TeX 源文件创建 PDF。
// 工作目录
String dataDir = "D:\\Files\\Tex\\";
// 创建排版选项。
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// 为输入指定文件系统工作目录。
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));
// 指定用于输出的文件系统工作目录。
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));
// 指定内存流作为输出终端。
options.setTerminalOut(new OutputMemoryTerminal());
// 设置渲染为 PDF 格式的选项。
options.setSaveOptions(new PdfSaveOptions());
// 运行排版。
new TeXJob(dataDir + "sample.tex", new PdfDevice(), options).run();
在 Java 中从 LTX 文件创建 PDF
LaTeX 使用 LTX 文件扩展名排版标记标签和定义文档结构和内容的属性。我们也可以按照前面提到的步骤从 LaTeX (LTX) 文件创建 PDF。但是,我们只需要在最后一步输入扩展名为 .ltx 的源文件。
以下代码示例演示了如何使用 Java 从 LTX 文件创建 PDF。
// 此代码示例演示如何从 LTX 源文件创建 PDF。
// 工作目录
String dataDir = "D:\\Files\\Tex\\";
// 创建排版选项。
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// 为输入指定文件系统工作目录。
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));
// 指定用于输出的文件系统工作目录。
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));
// 指定内存流作为输出终端。
options.setTerminalOut(new OutputMemoryTerminal());
// 设置渲染为 PDF 格式的选项。
options.setSaveOptions(new PdfSaveOptions());
// 运行排版。
new TeXJob(dataDir + "sample.ltx", new PdfDevice(), options).run();
使用 Java 将 TeX 转换为 XPS
我们还可以按照前面提到的步骤将 LaTeX (TeX) 文件转换为 XPS。但是,我们只需要在第 5 步设置 XpsSaveOptions 而不是 PdfSaveOptions。
下面的代码示例演示了如何使用 Java 将 TeX 转换为 XPS。
// 此代码示例演示如何将 Tex 转换为 XPS。
// 工作目录
String dataDir = "D:\\Files\\Tex\\";
// 创建排版选项。
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// 为输入指定文件系统工作目录。
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));
// 指定用于输出的文件系统工作目录。
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));
// 指定内存流作为输出终端。
options.setTerminalOut(new OutputMemoryTerminal());
// 设置渲染为 XPS 格式的选项。
options.setSaveOptions(new XpsSaveOptions());
// 运行排版。
new TeXJob(dataDir + "sample.tex", new PdfDevice(), options).run();
使用 Java 将 TeX ZIP 目录转换为 PDF ZIP 目录
我们可以按照以下步骤将多个压缩在 ZIP 存档中的 TeX 文件一次转换为 PDF:
- 首先,打开 ZIP 档案上的流作为输入和输出工作目录。
- 接下来,使用 consoleAppOptions() 方法创建 TeXOptions 类的实例。
- 然后,将 TeX 配置设置为 TeXConfig.objectLaTeX()。
- 接下来,设置输入和输出 ZIP 目录。
- 然后,指定控制台或内存流作为输出终端。
- 之后,设置渲染为 PDF 格式的选项。
- 最后,为新创建的 TexJob 类实例调用 run() 方法,并将输出 PDF 和 PdfDevice 类对象作为参数。
以下代码示例演示了如何使用 Java 将 TeX ZIP 存档转换为 PDF ZIP 存档。
// 此代码示例演示如何将 TeX ZIP 目录转换为 PDF ZIP 目录。
// 工作目录
String dataDir = "D:\\Files\\Tex\\";
// 打开将用作输入工作目录的 ZIP 存档中的流。
final InputStream inZipStream = new FileInputStream(dataDir + "files.zip");
// 打开将用作输出工作目录的 ZIP 存档中的流。
final OutputStream outZipStream = new FileOutputStream(dataDir + "files-out.zip");
try {
// 在 ObjectTeX 引擎扩展上为默认的 ObjectTeX 格式创建转换选项。
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// 为输入指定一个 ZIP 归档工作目录。
options.setInputWorkingDirectory(new InputZipDirectory(inZipStream, "files"));
// 为输出指定一个 ZIP 归档工作目录。
options.setOutputWorkingDirectory(new OutputZipDirectory(outZipStream));
// 将控制台指定为输出终端。
options.setTerminalOut(new OutputConsoleTerminal()); // Default. Not necessary to specify.
// 定义保存选项。
options.setSaveOptions(new PdfSaveOptions());
// 运行作业。
TeXJob job = new TeXJob("sample", new PdfDevice(), options);
job.run();
// 对于后续输出看起来写。
options.getTerminalOut().getWriter().newLine();
// 完成输出 ZIP 存档。
((OutputZipDirectory)options.getOutputWorkingDirectory()).finish();
} finally {
outZipStream.close();
}
获得免费许可证
您可以 获得免费的临时许可证 试用该库而不受评估限制。
结论
在本文中,我们学习了如何:
- 从 Java 中的 LaTeX 源文件生成 PDF 输出;
- 以编程方式从 TeX 文件创建 XPS 输出文档;
- 使用 Java 将 TeX ZIP 存档转换为 PDF ZIP 存档。
此外,您可以使用 documentation 了解有关 Aspose.TeX for Java API 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。