MathML或OMML到PNG w / .NET?

时间:2009-06-29 21:51:16

标签: .net png mathml omml

是否有任何库采用MathML(或者更优选的是OMML)并输出.PNG文件?

我正在整理.docx文件的导出过程,作为此过程的一部分,我想提取方程式并将它们渲染为.PNG文件。当你为网络保存文档时,Word 2007本身会这样做,但到目前为止,我还没有找到一种方法来以编程方式执行此操作(如果有人有答案,那就更好了)。所以接下来最好的方法是使用OMML并使用Microsoft提供的XSL样式表并将它们转换为MathML。

不幸的是,我无法为MathML或OMML找到任何(工作)渲染库。

如果没有任何纯.NET库,我会解决几乎任何我可以从命令行调用从MathML或OMML输出.PNG的事情。

6 个答案:

答案 0 :(得分:3)

您可以尝试SVGMath将mathml转换为SVG,然后尝试将svg转换为png的工具,例如。

http://harriyott.com/2008/05/converting-svg-images-to-png-in-c.aspx

或使用rsvg lib将svg转换为png文件。

答案 1 :(得分:2)

我们创建了一个名为Equation Composer的DLL库,许多人使用.NET将MathML转换为PNG。它也可用作命令行可执行文件。它不是免费的,但这意味着您将获得技术支持和错误修复。有关详情,请访问:http://dessci.com/en/products/mathflow/mf_components.htm

答案 2 :(得分:1)

您可以尝试Java库JEuclid: http://jeuclid.sourceforge.net/

答案 3 :(得分:1)

一些好消息,一些不是那么好的消息和一些奇怪的新闻:

好的新闻是您正在寻找的库位于http://msdn.microsoft.com/en-us/library/documentformat.openxml.math%28office.14%29.aspx。至少那是我认为你正在寻找的。

不那么好的新闻是下面的代码并不像预期的那样完全正常 - 它将大部分字符复制为“?”而最终的图像几乎就是废话。

Sub SaveOMML()
Dim rng As Range
Dim Equation As OMath

Set rng = Selection.Range
rng.Text = "Celsius = (5/9)(Fahrenheit – 32)"
Set rng = Selection.OMaths.Add(rng)
Set Equation = rng.OMaths(1)
Equation.BuildUp
Equation.Range.Select

With Selection.Range
        .CopyAsPicture
        .PasteSpecial DataType:=wdPasteMetafilePicture
End With

End Sub

奇怪的新闻是OMML 将复制/粘贴到PowerPoint中就像图像一样精细,然后可以将其保存为PNG。虽然很麻烦,但可以用VSTO完成。

答案 4 :(得分:1)

我有类似的需求。这是一个适合我的片段:

public void FormulaToImage(string imageName, string eq)
{
    Application app = new Application();
    Document _doc = app.Documents.Add();
    Range _range = _doc.Range();
    _range.Text = eq; // "Celsius = (5/9)(Fahrenheit – 32)";
    _doc.OMaths.Add(_range);
    _doc.OMaths.BuildUp();
    _doc.SaveAs(@"foo.htm", WdSaveFormat.wdFormatHTML);

    //the gif appears to be better quality than the png
    File.Move(@"foo_files\image002.gif", imageName + ".gif");                
    app.Documents.Close(WdSaveOptions.wdDoNotSaveChanges);
    app.Quit(false);
}

答案 5 :(得分:0)

如果您喜欢Microsoft Word所做的事情,他们使用的代码可以从Decision Science获得...... http://dessci.com/ ...我很快就会评估他们的MathFlow产品,但还没有。 ..所以,我还不能确认PNG一代是否运作良好。