Rendering gambar dan rumus matematika LaTeX mandiri di Java

Render persamaan matematika LaTeX, rumus kimia, dan gambar struktural mandiri langsung ke format gambar berkualitas tinggi (PNG, SVG, JPEG, BMP) atau output vektor menggunakan Aspose.TeX for Java. Konversikan potongan rumus seperti \sum_{i=1}^{n} i = \frac{n(n+1)}{2} menjadi gambar mandiri tanpa mengompilasi dokumen \documentclass{article} lengkap atau menulis file .tex sementara ke disk.

 

Aspose.TeX for Java menyediakan mesin rendering khusus (MathRenderer dan FigureRenderer) yang dirancang untuk rendering mikro ekspresi matematika dan blok grafis:

  • Untuk aplikasi, layar seluler, platform LMS (Canvas, Moodle), dan penyimpanan basis data, pilih format output PNG yang dirender dengan kelas PngMathRenderer.
  • Untuk layar dengan DPI tinggi, halaman web responsif, elemen UI yang dapat diskalakan, dan publikasi siap cetak, pilih format output SVG yang dirender dengan kelas SvgMathRenderer.
  • Untuk grafik LaTeX mandiri, gambar TikZ, atau blok tabel yang dirender langsung sebagai gambar, pilih format output PNG yang dirender dengan kelas PngFigureRenderer.
  • Untuk gambar dan diagram vektor yang tidak bergantung pada resolusi dan dirender langsung dari potongan LaTeX, pilih format output SVG yang dirender dengan kelas SvgFigureRenderer.

Render rumus matematika LaTeX ke gambar PNG

Gunakan PngMathRenderer untuk mengonversi potongan rumus matematika LaTeX mentah menjadi gambar PNG dengan latar belakang transparan atau solid hanya dengan beberapa baris kode.

import com.aspose.tex.*;
import com.aspose.tex.mathrenderer.*;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class RenderLaTeXFormulaToPng {
    public static void main(String[] args) throws Exception {
        // Step 1: Initialize PNG Math Renderer Options
        PngMathRendererOptions options = new PngMathRendererOptions();
        options.setResolution(300); // Set DPI resolution (300 DPI for high quality)
        options.setTextColor(java.awt.Color.BLACK); // Formula text color
        options.setBackgroundColor(java.awt.Color.WHITE); // Background color
        options.setLogOutput(new OutputConsoleTerminal());

        // Define LaTeX math snippet
        String mathFormula = "\\int_{0}^{\\infty} e^{-x^2} dx = \\frac{\\sqrt{\\pi}}{2}";

        // Define output stream for the generated PNG
        OutputStream stream = new FileOutputStream("C:/TeXProject/Output/formula.png");

        // Execute rendering job
        PngMathRenderer renderer = new PngMathRenderer();
        MathRendererResult result = renderer.render(mathFormula, stream, options, null);

        stream.close();
        System.out.println("LaTeX math formula rendered to PNG successfully.");
    }
}

Render rumus matematika LaTeX ke SVG vektor

Hasilkan grafik vektor yang dapat diskalakan (.svg) dari ekspresi matematika LaTeX untuk rendering web responsif menggunakan SvgMathRenderer.

import com.aspose.tex.*;
import com.aspose.tex.mathrenderer.*;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class RenderLaTeXFormulaToSvg {
    public static void main(String[] args) throws Exception {
        // Create SVG Renderer Options
        SvgMathRendererOptions options = new SvgMathRendererOptions();
        options.setTextColor(java.awt.Color.BLUE); // Custom formula color

        // Define quadratic formula snippet
        String mathFormula = "x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}";

        // Stream output to SVG file
        OutputStream stream = new FileOutputStream("C:/TeXProject/Output/quadratic.svg");

        // Perform rendering
        SvgMathRenderer renderer = new SvgMathRenderer();
        renderer.render(mathFormula, stream, options, null);

        stream.close();
        System.out.println("LaTeX math formula rendered to SVG successfully.");
    }
}

Render gambar dan tabel LaTeX mandiri

Render blok LaTeX terisolasi yang berisi tabel, diagram, atau lingkungan khusus menggunakan PngFigureRenderer.

import com.aspose.tex.*;
import com.aspose.tex.figurerenderer.*;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class RenderLaTeXFigureToPng {
    public static void main(String[] args) throws Exception {
        // Configure Figure Renderer Options
        PngFigureRendererOptions options = new PngFigureRendererOptions();
        options.setResolution(150);

        // Create standalone figure or matrix snippet
        String figureText = "\\begin{matrix} a & b \\\\ c & d \\end{matrix}";

        // Render snippet directly to output image stream
        OutputStream stream = new FileOutputStream("C:/TeXProject/Output/matrix.png");

        PngFigureRenderer renderer = new PngFigureRenderer();
        renderer.render(figureText, stream, options, null);

        stream.close();
        System.out.println("LaTeX matrix figure rendered to image successfully.");
    }
}

Instalasi dan Penyiapan

Integrasikan Aspose.TeX for Java ke dalam proyek Anda menggunakan Maven:

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>

Pertanyaan yang Sering Diajukan

1. Apa yang terjadi jika saya tidak menentukan nama pekerjaan di TeXOptions?

Jika nama pekerjaan tidak dikonfigurasi secara eksplisit melalui setJobName(), Aspose.TeX secara default menggunakan nama file input utama (misalnya, main.tex menghasilkan main.pdf dan main.log).

2. Bagaimana cara menonaktifkan sepenuhnya pembuatan file kompilasi .log?

Atur options.setLogOutput(false) sebelum membuat dan menjalankan TeXJob. Ini mencegah mesin menghasilkan file log tambahan di disk atau di direktori kerja output.

3. Bisakah saya menangkap pesan terminal TeX di lingkungan server/headless?

Ya. Dengan menetapkan OutputMemoryTerminal khusus atau mengimplementasikan IOutputTerminal, Anda dapat mengarahkan semua pesan stdout/stderr terminal ke sistem logging perusahaan di server Anda (misalnya, Log4j atau SLF4J).