Відтворення окремих фігур і математичних формул LaTeX у Java

Відтворюйте окремі математичні рівняння LaTeX, хімічні формули та структурні фігури безпосередньо у високоякісні формати зображень (PNG, SVG, JPEG, BMP) або векторні формати за допомогою Aspose.TeX for Java. Перетворюйте фрагменти формул, такі як \sum_{i=1}^{n} i = \frac{n(n+1)}{2}, на окремі зображення без компіляції повних документів \documentclass{article} або запису тимчасових .tex-файлів на диск.

 

Aspose.TeX for Java надає спеціалізовані механізми відтворення (MathRenderer і FigureRenderer), призначені для мікровідтворення математичних виразів і графічних блоків:

  • Для застосунків, мобільних екранів, платформ LMS (Canvas, Moodle) і зберігання в базах даних обирайте формат PNG, відтворений за допомогою класу PngMathRenderer.
  • Для дисплеїв із високою роздільною здатністю, адаптивних вебсторінок, масштабованих елементів інтерфейсу та публікацій, готових до друку, обирайте формат SVG, відтворений за допомогою класу SvgMathRenderer.
  • Для окремих графічних елементів LaTeX, фігур TikZ або табличних блоків, відтворених безпосередньо як зображення, обирайте формат PNG, відтворений за допомогою класу PngFigureRenderer.
  • Для векторних фігур і діаграм, незалежних від роздільної здатності та безпосередньо відтворених із фрагментів LaTeX, обирайте вихідний формат SVG, відтворений за допомогою класу SvgFigureRenderer.

Відтворення математичної формули LaTeX у зображення PNG

Використовуйте PngMathRenderer, щоб перетворювати необроблені математичні фрагменти LaTeX на зображення PNG із прозорим або суцільним фоном за допомогою кількох рядків коду.

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

Відтворення математичної формули LaTeX у векторний SVG

Створюйте масштабовану векторну графіку (.svg) з математичних виразів LaTeX для адаптивного вебвідтворення за допомогою 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.");
    }
}

Відтворення окремих фігур і таблиць LaTeX

Відтворюйте ізольовані блоки LaTeX, що містять таблиці, діаграми або спеціальні середовища, за допомогою 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.");
    }
}

Встановлення та налаштування

Інтегруйте Aspose.TeX for Java у свій проєкт за допомогою 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. Що станеться, якщо не вказати ім’я завдання в TeXOptions?

Якщо ім’я завдання явно не налаштовано через setJobName(), Aspose.TeX використовує ім’я основного вхідного файлу за замовчуванням (наприклад, main.tex створює main.pdf і main.log).

2. Як повністю вимкнути створення файлу компіляції .log?

Встановіть options.setLogOutput(false) перед створенням і запуском TeXJob. Це запобігає створенню механізмом додаткових файлів журналу на диску або в робочому каталозі виведення.

3. Чи можна перехоплювати повідомлення термінала TeX у серверних/headless-середовищах?

Так. Призначення власного OutputMemoryTerminal або реалізація IOutputTerminal дає змогу перенаправляти всі повідомлення stdout/stderr термінала до корпоративної системи журналювання вашого сервера (наприклад, Log4j або SLF4J).