记录一种基于Java的MathML转图片的方法

Posted 公众号:我真的不会Java啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一种基于Java的MathML转图片的方法相关的知识,希望对你有一定的参考价值。

Maven依赖:
<dependency>
	<groupId>de.rototor.jeuclid</groupId>
	<artifactId>jeuclid-core</artifactId>
	<version>3.1.14</version>
</dependency>
示例:
@Test
public void testMathMlToImg() throws IOException {
	//MathML字符串
	String mathStr = "<math xmlns=\\"http://www.w3.org/1998/Math/MathML\\">\\n" +
			"        <mi>f</mi>\\n" +
			"            <mo>(</mo>\\n" +
			"            <mi>x</mi>\\n" +
			"            <mo>)</mo>\\n" +
			"            <mo>&gt;</mo>\\n" +
			"            <mfrac>\\n" +
			"                <msqrt>\\n" +
			"                    <mn>2</mn>\\n" +
			"                </msqrt>\\n" +
			"                <mn>8</mn>\\n" +
			"            </mfrac>\\n" +
			"            <mo>+</mo>\\n" +
			"            <mn>1</mn>\\n" +
			"        </math>";
	//创建转换器
	Converter converter = Converter.getInstance();
	//创建layoutContext并设置相关参数
        //参数设置可以参考net.sourceforge.jeuclid.context.Parameter类
        //参数默认值可以参考LayoutContextImpl类构造方法
	LayoutContextImpl layoutContext = (LayoutContextImpl) LayoutContextImpl.getDefaultLayoutContext();
	//设置公式字体大小,默认12.0pt
	layoutContext.setParameter(Parameter.MATHSIZE, 30);
	//设置公式颜色,默认黑色
	layoutContext.setParameter(Parameter.MATHCOLOR, Color.RED);
	//转换
	Dimension dimension = converter.convert(mathStr, new FileOutputStream("f:/1.png"), "image/png", layoutContext);
	if(dimension != null){
		System.out.println("图片转换成功!高:" + dimension.getHeight() + " 宽:" + dimension.getWidth());
	}
}

输出结果:

图片转换成功!高:70.0 宽:149.0

转换结果如下:

关于outFileType参数的取值,支持以下几种:

image/png
image/vnd.wap.wbmp
image/x-png
image/jpeg
image/tiff
image/bmp
image/gif

以上是关于记录一种基于Java的MathML转图片的方法的主要内容,如果未能解决你的问题,请参考以下文章

java pdf转图片

Java 在Word中添加数学公式(Latex/MathML)

#yyds干活盘点# 4.3 HTML5 MathML

安装MathType后在Word中复制全文时,公式部分如何自动替换为MathML LaTeX 的代码?

UEditor之基于Java图片上传前后端源码研究 (转)

如何在基于 Docbook 标签的 XSD 中包含 MathML 标签?