Рендеринг отдельных фигур и математических формул 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).