2009-06-29 2 views
11

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

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

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

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

+0

просто хотел следить за тем, соответствует ли приведенный ниже ответ на ваш вопрос. –

ответ

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); 
} 
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.

+0

Копирование/Вставка может работать не очень хорошо, но сохранить как дает хорошие результаты для меня –

2

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

0

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

Смежные вопросы