将嵌入在OLE二进制文件中的MathType方程转换为MathML

Sri*_*tal 15 ms-word mathml docx mathtype

我正在尝试使用MathType的SDK将MathType的等式转换为MathML的方法,该等式存储为MathML.

我的程序的输入文件是一个DocX,它包含嵌入的MathType方程.我正在寻找一种独立于使用MS Word的解决方案.DocX是一个zip文件,一旦提取,我们就可以在"word/embeddings /"文件夹中找到每个OLE对象的二进制文件.通常,文件名是oleObject1.bin,oleObject2.bin等.

当我使用MathType SDK检查时,它有一个"ConvertEquation"类,它有以下方法:

virtual public bool Convert(EquationInput ei, EquationOutput eo)
Run Code Online (Sandbox Code Playgroud)

EquationInput是一个抽象类,可以使用以下具体类:

EquationInputFileText
EquationInputFileWMF2
EquationInputFileWMF
EquationInputFileGIF
EquationInputFileEPS
Run Code Online (Sandbox Code Playgroud)

在上面列出的类中,它们似乎都不支持OLE二进制文件.

根据MathType的SDK文档,MTEF数据被保存为对象的本机数据格式.每当将等式对象写入OLE"流"时,写入28字节的头,然后写入MTEF数据.我想这正是这个二进制文件中存在的内容.但就是说,似乎没有办法让SDK使用这种格式将其转换为MathML.有什么想法吗?

谢谢

小智 0

您可以将 mathtype wmf 文件转换为 mathml,如下所示: ConvertEquation conv = new ConvertEquation(); var input = EquationInputFileWMF("mathTYpe.wmf"); var output = EquationOutputFileText("MathMLName.txt", "MathML2 (m 命名空间).tdl")); 转换(输入,输入);

“MathML2 (m namespace).tdl”字符串代表“tdl”文件,该文件包含在“MathType\Translators”路径中,如果打开 Translators 路径,您可以找到多种类型。