Javaを使用してLaTeXドキュメントにグラフィックスを埋め込む

Aspose.TeX for Javaを使用して、高解像度のラスター画像(PNG、JPEG、BMP)とベクター図(EPS、PDF)をLaTeXドキュメントに組み込みます。graphicxなどのネイティブLaTeXパッケージを利用し、入力作業ディレクトリを設定することで、開発者はグラフ、図、写真、ベクターグラフィックスを埋め込んだドキュメントをシームレスにコンパイルし、出版用に適したPDF、XPS、画像形式の出力を生成できます。

 

グラフィック要素を含むLaTeXドキュメントをコンパイルする際、Aspose.TeX for Javaは、設定されたIInputWorkingDirectoryを基準として、参照されている画像ファイルを解決します。

  • 写真、ラスター形式のスクリーンショット、Webグラフィックスには、\usepackage{graphicx} - \includegraphics{figure.png}コマンドを使用して埋め込むPNG/JPEG形式を選択してください。
  • 高精度のベクター図やCAD/科学用グラフには、\usepackage{graphicx} - \includegraphics{diagram.eps}コマンドを使用して埋め込むEPS形式を選択してください。
  • 従来のビットマップ画像を埋め込む場合は、\usepackage{graphicx} - \includegraphics{image.bmp}コマンドを使用して埋め込むBMP/TIFF形式を選択してください。

LaTeXにラスター画像(PNG/JPEG)を埋め込む

標準的なラスター画像を埋め込むには、LaTeXドキュメントのプリアンブルにgraphicxパッケージを追加し、\includegraphics{}で対象画像のファイル名を指定します。

import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;

public class EmbedRasterGraphicsInLaTeX {
    public static void main(String[] args) throws Exception {
        // Create LaTeX document string referencing an image file 'sample.png'
        String latexCode = "\\documentclass{article}\n" +
                           "\\usepackage{graphicx}\n" +
                           "\\begin{document}\n" +
                           "\\section{Graphics Rendering Demo}\n" +
                           "Here is an embedded raster image:\n\n" +
                           "\\begin{figure}[h]\n" +
                           "  \\centering\n" +
                           "  \\includegraphics[width=0.5\\textwidth]{sample.png}\n" +
                           "  \\caption{Sample PNG Image in LaTeX}\n" +
                           "\\end{figure}\n" +
                           "\\end{document}";

        ByteArrayInputStream inputStream = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));

        // Initialize conversion options for ObjectLaTeX
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Set input working directory where 'sample.png' is located
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Images/"));

        // Set output working directory for compiled PDF
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Execute TeX job
        TeXJob job = new TeXJob(inputStream, new PdfDevice(), options);
        job.run();

        System.out.println("LaTeX document with embedded PNG successfully compiled to PDF.");
    }
}

LaTeXにベクターグラフィックス(EPS)を埋め込む

Aspose.TeXは、ObjectLaTeX形式エンジンを使用してコンパイルする際に、Encapsulated PostScript(.eps)グラフィックスをネイティブに処理します。

import com.aspose.tex.*;
import java.io.IOException;

public class EmbedEPSGraphicsInLaTeX {
    public static void main(String[] args) throws IOException {
        // Initialize options for LaTeX format engine
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Configure directory paths containing .tex source and .eps graphics
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/SourceWithEPS/"));
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Run job for 'document_with_eps.tex' containing \includegraphics{vector_chart.eps}
        TeXJob job = new TeXJob("document_with_eps", new PdfDevice(), options);
        job.run();

        System.out.println("LaTeX document with vector EPS figure compiled successfully.");
    }
}

ZIPアーカイブからグラフィックアセットを読み込む

TeXソースファイル、マクロパッケージ、動的画像を1つの.zipアーカイブにまとめ、Aspose.TeXがメモリまたは圧縮ストレージからグラフィックの依存関係を直接解決するように指定できます。

import com.aspose.tex.*;
import java.io.FileInputStream;

public class EmbedGraphicsFromZip {
    public static void main(String[] args) throws Exception {
        // Initialize LaTeX engine options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Open input ZIP archive containing 'main.tex' and 'figure.png'
        FileInputStream zipStream = new FileInputStream("C:/TeXProject/ProjectWithAssets.zip");
        options.setInputWorkingDirectory(new InputZipDirectory(zipStream, "src"));

        // Define output destination
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Run compilation job
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        zipStream.close();
        System.out.println("Compiled LaTeX document with images embedded directly from ZIP file.");
    }
}

インストールとセットアップ

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. TeXOptionsでジョブ名を指定しない場合はどうなりますか?

setJobName()でジョブ名を明示的に設定しない場合、Aspose.TeXはデフォルトでメイン入力ファイル名を使用します(例:main.texの場合、main.pdfmain.logが生成されます)。

2. コンパイル時の.logファイルの作成を完全に無効にするにはどうすればよいですか?

TeXJobを作成して実行する前に、options.setLogOutput(false)を設定してください。これにより、エンジンがディスク上または出力作業ディレクトリに補助ログファイルを生成するのを防ぎます。

3. サーバー/ヘッドレス環境でTeXターミナルメッセージをキャプチャできますか?

はい。カスタムのOutputMemoryTerminalを割り当てるか、IOutputTerminalを実装することで、すべての端末の標準出力/標準エラーメッセージをサーバーのエンタープライズログシステム(Log4jやSLF4Jなど)にルーティングできます。