การเรนเดอร์รูปภาพและสูตรคณิตศาสตร์ 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 สูง เว็บเพจแบบ Responsive องค์ประกอบ UI ที่ปรับขนาดได้ และสิ่งพิมพ์ที่พร้อมสำหรับการพิมพ์ ให้เลือกรูปแบบเอาต์พุต 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 สำหรับการเรนเดอร์บนเว็บแบบ Responsive โดยใช้ 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. จะเกิดอะไรขึ้นหากไม่ได้ระบุชื่อ job ใน TeXOptions?

หากไม่ได้กำหนดชื่อ job อย่างชัดเจนผ่าน setJobName() Aspose.TeX จะใช้ชื่อไฟล์อินพุตหลักเป็นค่าเริ่มต้น (เช่น main.tex จะสร้าง main.pdf และ main.log)

2. จะปิดใช้งานการสร้างไฟล์คอมไพล์ .log โดยสมบูรณ์ได้อย่างไร?

ตั้งค่า options.setLogOutput(false) ก่อนสร้างและเรียกใช้ TeXJob ซึ่งจะป้องกันไม่ให้เอนจินสร้างไฟล์บันทึกเสริมบนดิสก์หรือในไดเรกทอรีทำงานเอาต์พุต

3. สามารถจับข้อความเทอร์มินัล TeX ในสภาพแวดล้อมเซิร์ฟเวอร์/headless ได้หรือไม่?

ได้ การกำหนด OutputMemoryTerminal แบบกำหนดเองหรือการ implement IOutputTerminal ช่วยให้คุณสามารถส่งข้อความ stdout/stderr ทั้งหมดจากเทอร์มินัลไปยังระบบบันทึกขององค์กรบนเซิร์ฟเวอร์ของคุณ (เช่น Log4j หรือ SLF4J)