11

是否有任何库可以采用 MathML(或者,甚至更好的是 OMML)并输出 .PNG 文件?

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

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

如果没有任何纯 .NET 库,我将满足于我可以从命令行调用的任何东西,以从 MathML 或 OMML 输出 .PNG。

4

6 回答 6

3

您可以尝试使用SVGMath将 mathml 转换为 SVG,然后使用一些工具将 svg 转换为 png,例如

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

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

于 2010-03-13T05:11:28.863 回答
2

我们制作了一个名为 Equation Composer 的 DLL 库,许多人使用它与 .NET 一起将 MathML 转换为 PNG。它也可以作为命令行可执行文件使用。它不是免费的,但这意味着您可以获得技术支持和错误修复。更多信息可在此处获得: http: //dessci.com/en/products/mathflow/mf_components.htm

于 2010-03-15T17:41:12.947 回答
1

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

于 2010-03-13T06:40:38.807 回答
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 完成。

于 2010-03-13T07:20:08.757 回答
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);
}
于 2010-05-29T04:51:03.193 回答
0

如果您喜欢 Microsoft Word 的功能,他们使用的代码可从 Decision Science... http://dessci.com/ ... 我将很快评估他们的 MathFlow 产品,但还没有。 ..所以,我还无法验证PNG生成是否正常。

于 2011-10-01T08:05:17.020 回答