Рендеринг отдельных фигур и математических формул 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.
  • Для дисплеев с высоким DPI, адаптивных веб-страниц, масштабируемых элементов пользовательского интерфейса и публикаций, готовых к печати, выберите выходной формат 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).