是否有任何库采用MathML(或者更优选的是OMML)并输出.PNG文件?
我正在整理.docx文件的导出过程,作为此过程的一部分,我想提取方程式并将它们渲染为.PNG文件。当你为网络保存文档时,Word 2007本身会这样做,但到目前为止,我还没有找到一种方法来以编程方式执行此操作(如果有人有答案,那就更好了)。所以接下来最好的方法是使用OMML并使用Microsoft提供的XSL样式表并将它们转换为MathML。
不幸的是,我无法为MathML或OMML找到任何(工作)渲染库。
如果没有任何纯.NET库,我会解决几乎任何我可以从命令行调用从MathML或OMML输出.PNG的事情。
答案 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。至少那是我认为你正在寻找的。 p>
不那么好的新闻是下面的代码并不像预期的那样完全正常 - 它将大部分字符复制为“?”而最终的图像几乎就是废话。
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一代是否运作良好。