Java における柔軟な TeX 出力と出力作業ディレクトリ

Aspose.Font for Java を使用して、TeX および LaTeX ドキュメントのコンパイルにおける出力先とストレージメカニズムを構成します。レンダリングされたドキュメント(PDF、XPS、SVG、PNG、JPEG、TIFF、BMP)やコンパイル時の補助ファイル(.log、.aux)を、デスクトップ版 TeX のインストールを必要とせずに、物理ディスクフォルダー、圧縮 ZIP アーカイブ、またはカスタムのメモリ内ストリームへ直接保存できます。

 

コンパイル中、TeX 組版エンジンは主に 2 種類の出力を生成します。

  • プライマリ出力ファイル:対象ドキュメント(例:.pdf.xps、または画像シーケンス)。
  • 補助出力ファイル:ログ(.log)、補助データ(.aux)、および LaTeX マクロによって生成される中間ファイル。

Aspose.TeX for Java は、IOutputWorkingDirectory インターフェイスを介して出力先を抽象的な作業ディレクトリにカプセル化し、開発者が出力ストリームを動的に指定できるようにします。サポートされている出力ディレクトリの種類:

  • 出力作業ディレクトリの ローカルファイルシステム は、OutputFileSystemDirectory を使用して、レンダリングされたドキュメントとログファイルをローカルディスクのフォルダーに直接保存します。
  • 出力作業ディレクトリの ZIP アーカイブ は、OutputZipDirectory を使用して、出力ドキュメント、ログ、生成されたアセットを 1 つの .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実装を割り当ててコンパイルログを破棄またはリダイレクトすることができます。