- MathML公式类使用MathType公式进行转换
- HTML格式导出Word(支持表格、图片、排序标签、转义字符等)
- Office2003+(Word And Excel) Best of 2007
- .Net Frameword4.0+
- MathType6.9+关于MathType6.9破解
这篇文章主要介绍怎么使用MathType把MathML转换MathType类型的公式对象并嵌入到Word中。
最近,这里有个需求是需要转换一大批的MathML文件到Word文档中,如果使用Open-XML-SDK是非常容易实现的,你可以参考https://github.com/scalad/MathML2Word,但是,最重要的是这不是想要的结果,因为经过Open-XML-SDK的转换,这个公式的类型变成了OMML(Office Math Markup Language)格式的,什么是OMML呢?
我们知道,微软的Word包含了公式编辑器,其实它是一个缩小版本的MathType,这个从上世纪word出现时已经开始了。直到2007年,word才允许使用图形用户界面输入公式,并且转换为像MATHML格式的标记语言。随着微软发布了Microsoft Office 2007 和Office Open XML file formats,微软引进了一个使用新的格式的公式编辑器,即所谓的Office Math Markup Language(OMML)
,OMML与原来的公式编辑器存在着兼容性问题,因此很多学术官网都拒绝使用Microsoft Office写的文档。
Mathtype公式编辑器是基于宏或是VB编出来的,实际上,在Office2007之前的版本中,微软一直使用的是MathType提供的缩小版本的MathType公式编辑器,想要使用完整公式编辑器的还需要用户到MathType去买(没错,在长达15年的时间里,所有Office都自带MathType的缩小版),直到2007之后,微软才开发出属于自己的一套公式编辑器,它的公式类型是OMML(Office Math Markup Language),并且和原有的MathType公式类型不兼容,因此,有许多学术网站都明确提出了不使用Office2007以及后面的版本。
MathType SDK是针对MathType工具用VB完成的一套开发工具包,它允许开发人员改造、扩展、修改或者创建命令等,并且官方文档中提供了.NET平台上SDK的实现,你可以很方便的使用C#调用它们。如下图是.NET平台上公式支持的输入输出的格式:
EquationInput(公式输入)、EquationOutput(公式输出)和MTSDK(MathType连接、释放)作为ConverttEquation的成员变量,ConverttEquation初始化时首先完成了MTSDK对象的初始化。MTSDK包含了两个方法,Init()和DeInit(),用来连接MathType服务和释放服务。而后调用ConvertEquation中的Convert方法完成它们两个所支持的文件格式的转换。
目前采用的方式是使用EquationInputFileText类从磁盘文件中读入MathML数据类型的数据,然后使用EquationOutputClipboardText输出到系统的剪切板中,从剪切板中获取到该公式的对象并写入到Word文档中,当文件读取并转换完成后,生成Wrod文档并保存。