基于Java的MathML转图片的方法(示例代码)
作者:布禾 发布时间:2023-11-25 14:29:39
标签: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>></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
来源:https://www.cnblogs.com/seve/archive/2021/06/23/14906931.html


猜你喜欢
- 本文实例讲述了Android编程之利用服务实现 * 听的方法。分享给大家供大家参考,具体如下:1. 启动模拟器,部署应用2. 利用模拟器控制
- 首先!首先!首先!首先,我们由于历史问题,项目用的UI编辑器不是大众使用的GUI或者NGUI, 而是使用不知道算不算小众的FairyGUI,
- 当一个结合中想根据某一个字段做去重方法时使用以下代码IQueryable 继承自IEnumerable先举例:#region linq to
- 前言公司最近在开发中遇到一个问题,在弄帖子的发布与回复问题,然后再iOS端和Android端添加表情的时候都会出错Caused by: ja
- 需求:android存储字符串数据简单的有SharePerfence不过只能存储89kb最多的数据(好像),超过这个数据如果不方便网络存储,
- Spring官网上有一篇Getting Start,介绍了如何使用Docker发布Spring Boot应用,算是比较详细了,不过有些细节没
- JavaScript 中需要创建函数的话,有两种方法:函数声明、函数表达式,各自写法如下:// 方法一:函数声明function foo()
- 在作应用系统开发时,管理配置是必不可少的。例如数据库服务器的配置、安装和更新配置等等。由于Xml的兴起,现在的配置文件大都是以xml文档来存
- 之前代码有一个逻辑,是在初始化时读取某个包下的所有class文件,放入到一个HashMap里。代码运行过程中,通过Key获取到对应class
- 对不起大家,昨天文章里的告别说早了,这个系列还不能就这么结束。我们前面的文章中讲解过RabbitMQ的用法,所谓MQ就是一种发布订阅模式的消
- 关于startService的基本使用概述及其生命周期可参见《Android中startService基本使用方法概述》。本文通过批量下载文
- 简介DataBinding 是 Jetpack 组件之一,适用于 MVVM 模式开发,也是Google官方推荐使用的组件之一。使用DataB
- 详解Java使用super和this来重载构造方法实例代码://父类 class anotherPerson{ String
- 一、常见的状态保存恢复方式①onSaveInstance + onRestoreInstance这种方式是最通用的实现状态保存与恢复,在An
- 从刚接触c#编程到现在,差不多快有一年的时间了。在学习过程中,有很多地方始终似是而非,直到最近才弄明白。本文将先介绍用法,后评断功能。一、委
- 队列的特性很简答,就是先进先出,一般利用数组来实现。实现队列自然要实现几个函数:入队,出队,判断队满,判断队空,获得队头,队尾。实现队列的关
- 介绍记录将elasticsearch集成到spring boot的过程,以及一些简单的应用和helper类使用。接入方式使用spring-b
- 本文实例讲述了Java Spring开发环境搭建及简单入门示例。分享给大家供大家参考,具体如下:前言虽然之前用过Spring,但是今天试着去
- 要让项目实现 ssl 免密登录,首先需要开启 https 。所以先从 Spring Boot 如何开启 https 说起。创建服务端证书为了
- 1.1 解决方案名和项目名上右键——重命名如下图:改完后效果如下:1.2 接下来要改名 代码中的名称