在 Java 中从 LaTeX 创建 PDF

LaTeX 广泛用于创建技术和科学文档。 LaTeX 文件(TEXLTX)是源文档,其中填充了用于指定文档格式的命令,包括文本、符号、数学表达式和图形。我们可以轻松地以编程方式从 LaTeX 源代码生成 PDF 文档。 PDF 允许以只读格式共享文档,而不会影响其样式或布局。在本文中,我们将学习如何从 Java 中的 LaTeX 源文件创建 PDF 文档。

本文将涵盖以下主题:

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 文档:

  1. 首先,使用 consoleAppOptions() 方法创建 TeXOptions 类的实例。
  2. 将 TeX 配置设置为 TeXConfig.objectLaTeX()
  3. 接下来,设置输入和输出工作目录。
  4. 然后,指定控制台或内存流作为输出终端。
  5. 之后,设置渲染为 PDF 格式的选项。
  6. 最后,为新创建的 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 中从 LaTeX TeX 文件创建 PDF

在 Java 中从 LaTeX TeX 文件创建 PDF。

在 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:

  1. 首先,打开 ZIP 档案上的流作为输入和输出工作目录。
  2. 接下来,使用 consoleAppOptions() 方法创建 TeXOptions 类的实例。
  3. 然后,将 TeX 配置设置为 TeXConfig.objectLaTeX()
  4. 接下来,设置输入和输出 ZIP 目录。
  5. 然后,指定控制台或内存流作为输出终端。
  6. 之后,设置渲染为 PDF 格式的选项。
  7. 最后,为新创建的 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();
}
将 TeX ZIP 存档转换为 PDF ZIP 存档

将 TeX ZIP 存档转换为 PDF ZIP 存档。

获得免费许可证

您可以 获得免费的临时许可证 试用该库而不受评估限制。

结论

在本文中,我们学习了如何:

  • 从 Java 中的 LaTeX 源文件生成 PDF 输出;
  • 以编程方式从 TeX 文件创建 XPS 输出文档;
  • 使用 Java 将 TeX ZIP 存档转换为 PDF ZIP 存档。

此外,您可以使用 documentation 了解有关 Aspose.TeX for Java API 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看