MathML или OMML в PNG с .NET?

Существуют ли библиотеки, которые принимают MathML (или, что еще более желательно, OMML) и выдает файл .PNG?

Я собираю процесс экспорта файлов .docx и, как часть этого процесса, хотел бы извлечь уравнения и сделать их как .PNG файлы. Word 2007 делает это изначально, когда вы сохраняете документ для Интернета, но до сих пор я не смог найти способ сделать это программно (если у кого есть ответ на это, было бы еще лучше). Итак, самое лучшее - взять OMML и использовать предоставленные Microsoft XSL-таблицы стилей и преобразовать их в MathML.

К сожалению, я не смог найти какие-либо (рабочие) библиотеки рендеринга для MathML или OMML.

Если для этого нет каких-либо чистых .NET-библиотек, я соглашусь на все, что я могу вызвать из командной строки для вывода .PNG из MathML или OMML.

Ответ 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);
}

Ответ 3

Мы создаем библиотеку DLL, которая называется Equation Composer, которую многие используют с .NET для преобразования MathML в PNG. Он также доступен как исполняемый файл командной строки. Это не бесплатно, но это означает, что вы получаете техническую поддержку и исправления ошибок. Дополнительная информация доступна здесь: http://dessci.com/en/products/mathflow/mf_components.htm

Ответ 5

Некоторые хорошие новости, некоторые не очень хорошие новости и некоторые странные новости:

Хорошие новости - это библиотека, которую вы ищете, в 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.

Ответ 6

Если вам нравится, что делает Microsoft Word, то код, который они используют для этого, доступен из Science Dec... http://dessci.com/.. Я буду оценивать их продукт MathFlow в ближайшее время, но еще не... поэтому я еще не могу проверить, что генератор PNG работает хорошо.