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

Ms word 将OLE二进制文件中嵌入的MathType方程转换为MathML,ms-word,docx,mathml,mathtype,Ms Word,Docx,Mathml,Mathtype,我正在尝试使用MathType的SDK将存储为OLE二进制文件的MathType方程转换为MathML 我的程序的输入文件是一个DocX,其中包含embdedd MathType方程。我正在寻找一个独立于使用MS Word的解决方案。DocX是一个zip文件,解压缩后,我们可以在文件夹“word/embeddings/”中找到每个OLE对象的二进制文件。通常,文件名为oleObject1.bin、oleObject2.bin等 当我使用MathType SDK检查时,它有一个类“ConvertE

我正在尝试使用MathType的SDK将存储为OLE二进制文件的MathType方程转换为MathML

我的程序的输入文件是一个DocX,其中包含embdedd MathType方程。我正在寻找一个独立于使用MS Word的解决方案。DocX是一个zip文件,解压缩后,我们可以在文件夹“word/embeddings/”中找到每个OLE对象的二进制文件。通常,文件名为oleObject1.bin、oleObject2.bin等

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

virtual public bool Convert(EquationInput ei, EquationOutput eo)
EquationInput是一个抽象类,可用于以下具体类:

EquationInputFileText
EquationInputFileWMF2
EquationInputFileWMF
EquationInputFileGIF
EquationInputFileEPS
在上面列出的类中,似乎没有一个支持OLE二进制

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


谢谢

您可以将mathtype wmf文件转换为mathml,如下所示: ConvertEquation conv=新的ConvertEquation(); var input=equalationInputFileWMF(“mathTYpe.wmf”); var output=equalationOutputFileText(“MathMLName.txt”、“MathML2(m namespace.tdl”); conv.Convert(输入,输入)


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

您可以尝试MathMagic等式编辑器(Windows版本)。 MathMagic可以从文档(.doc或.docx)中提取所有嵌入Word的公式,并可以将它们保存/转换为其他格式(如JPG、PNG、BMP、PDF、TeX、LaTeX、MathML等),作为批处理转换作业。
不幸的是,他们的试用版不支持此批处理转换。启用转换功能需要有效的许可证(即使是1个月或2个月的许可证)。

虽然不是一个完整的答案,但您可以从以下问题中找到一些启示。可以在答案的最后一条评论中找到下载建议代码的链接。这确实取决于Word,但它可能会帮助您开始。谢谢我已经看到了。作为一个线索,只有我走到了这一步。但是我无法继续我上面提到的内容。如果你能从物理上获得字节流,我会尝试这样做:创建一个可以激活该对象的应用程序。然后,您将拥有对内部对象的引用,然后可以将其传递给转换函数。当ole激活对象时,您的应用程序将执行Word正在执行的操作。我想在VB6中这样做至少是作为一个测试。这正是我试图做的,即将内部对象传递给转换函数。但正如我在问题中提出的,转换函数似乎并不消耗内部对象!非常感谢。我试试看。