Are there any libraries which take MathML (or, even more preferably, OMML) and outputs a .PNG file?
I am putting together an export process for .docx files and, as a part of this process, I'd like to extract equations and render them as .PNG files. Word 2007 does this natively when you save a document for the web, but so far, I have not been able to find a way to do this programmatically (if anyone has an answer for that, it would be even better). So the next best thing is to take the OMML and use the Microsoft provided XSL stylesheets and transform them to MathML.
Unfortunately, I haven't been able to find any (working) rendering libraries for either MathML or OMML.
If there aren't any pure .NET libraries for this, I'll settle for just about anything that I can call from a commandline to output a .PNG from either MathML or OMML.
You can try SVGMath to convert mathml to SVG and then some tool to convert svg to png e.g.
http://harriyott.com/2008/05/converting-svg-images-to-png-in-c.aspx
or use rsvg lib to convert svg to png files.
We make a DLL library called the Equation Composer that many use with .NET to convert MathML to PNG. It's also available as a commandline executable. It's not free, but that means you get technical support and bug fixes. More info is available here: http://dessci.com/en/products/mathflow/mf_components.htm
I have a similar need. Here's a fragment that works for me:
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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With