在 Java 中從 LaTeX 創建 PDF

LaTeX 廣泛用於創建技術和科學文檔。 LaTeX 文件(TEXLTX)是充滿了指定文檔格式的命令的源文檔,包括文本、符號、數學表達式和圖形。我們可以輕鬆地以編程方式從 LaTeX 源代碼生成 PDF 文檔。 PDF 允許以只讀格式共享文檔,而不會影響其樣式或佈局。在本文中,我們將學習如何使用 Java 從 LaTeX 源文件創建 PDF 文檔。

本文應涵蓋以下主題:

從 LaTeX 創建 PDF 的 Java API

為了從 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. 最後,使用輸出 PDF 和 PdfDevice 類對像作為參數為新創建的 TexJob 類實例調用 run() 方法。

以下代碼示例演示瞭如何使用 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. 最後,使用輸出 PDF 和 PdfDevice 類對像作為參數為新創建的 TexJob 類實例調用 run() 方法。

以下代碼示例演示瞭如何使用 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 存檔。

此外,您可以使用 文檔 了解更多關於 Aspose.TeX for Java API 的信息。如有任何歧義,請隨時在論壇上與我們聯繫。

也可以看看