Rendering di figure e formule matematiche LaTeX autonome in Java

Esegui il rendering di equazioni matematiche LaTeX, formule chimiche e figure strutturali autonome direttamente in formati immagine ad alta fedeltà (PNG, SVG, JPEG, BMP) o in output vettoriali utilizzando Aspose.TeX for Java. Converti frammenti di formule come \sum_{i=1}^{n} i = \frac{n(n+1)}{2} in immagini autonome senza compilare documenti completi \documentclass{article} né scrivere file .tex temporanei sul disco.

 

Aspose.TeX for Java offre motori di rendering dedicati (MathRenderer e FigureRenderer) progettati per il rendering di micro-elementi di espressioni matematiche e blocchi grafici:

  • Per applicazioni, schermi mobili, piattaforme LMS (Canvas, Moodle) e archiviazione nei database, scegli il formato di output PNG renderizzato con la classe PngMathRenderer.
  • Per display ad alta densità di pixel (DPI), pagine web responsive, elementi dell’interfaccia utente scalabili e pubblicazioni pronte per la stampa, scegli il formato di output SVG renderizzato con la classe SvgMathRenderer.
  • Per grafica LaTeX autonoma, figure TikZ o blocchi tabellari renderizzati direttamente come immagini, scegli il formato di output PNG renderizzato con la classe PngFigureRenderer.
  • Per figure e diagrammi vettoriali indipendenti dalla risoluzione, renderizzati direttamente da frammenti LaTeX, scegli il formato di output SVG renderizzato con la classe SvgFigureRenderer.

Eseguire il rendering di una formula matematica LaTeX come immagine PNG

Utilizza PngMathRenderer per convertire frammenti di formule matematiche LaTeX non elaborati in immagini PNG con sfondo trasparente o a tinta unita utilizzando poche righe di codice.

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.");
    }
}

Eseguire il rendering di una formula matematica LaTeX come SVG vettoriale

Genera grafica vettoriale scalabile (.svg) da espressioni matematiche LaTeX per il rendering web responsive utilizzando 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.");
    }
}

Eseguire il rendering di figure e tabelle LaTeX autonome

Esegui il rendering di blocchi LaTeX isolati contenenti tabelle, diagrammi o ambienti speciali utilizzando 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.");
    }
}

Installazione e configurazione

Integra Aspose.TeX for Java nel tuo progetto utilizzando 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>

FAQ

1. Cosa succede se non si specifica un nome del job in TeXOptions?

Se un nome del job non viene configurato esplicitamente tramite setJobName(), Aspose.TeX utilizza per impostazione predefinita il nome del file di input principale (ad esempio, main.tex produce main.pdf e main.log).

2. Come posso disabilitare completamente la creazione del file di compilazione .log?

Impostare options.setLogOutput(false) prima di creare ed eseguire TeXJob. Ciò impedisce al motore di generare file di log ausiliari sul disco o nella directory di lavoro di output.

3. È possibile acquisire i messaggi del terminale TeX in ambienti server/headless?

Sì. L’assegnazione di un OutputMemoryTerminal personalizzato o l’implementazione di IOutputTerminal consente di indirizzare tutti i messaggi stdout/stderr del terminale al sistema di logging aziendale del server (ad esempio, Log4j o SLF4J).