2009-06-29 10 views
11

¿Hay bibliotecas que tomen MathML (o, incluso más preferiblemente, OMML) y muestren un archivo .PNG?MathML u OMML a PNG con .NET?

Estoy preparando un proceso de exportación para archivos .docx y, como parte de este proceso, me gustaría extraer ecuaciones y presentarlas como archivos .PNG. Word 2007 hace esto de forma nativa cuando guarda un documento para la web, pero hasta ahora, no he podido encontrar una manera de hacerlo programáticamente (si alguien tiene una respuesta para eso, sería aún mejor). Entonces, la mejor alternativa es tomar OMML y usar las hojas de estilo XSL proporcionadas por Microsoft y transformarlas a MathML.

Desafortunadamente, no he podido encontrar ninguna biblioteca de representación (que funcione) para MathML u OMML.

Si no hay ninguna biblioteca .NET pura para esto, me conformaré con casi cualquier cosa que pueda llamar desde una línea de comandos para generar un .PNG desde MathML o OMML.

+0

solo quería hacer un seguimiento para ver si la respuesta a su pregunta. –

Respuesta

1

Tengo una necesidad similar. He aquí un fragmento que funciona para mí:

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

Algunas noticias bien, otras no tan buenas noticias y algunas noticias raro:

El bien noticia es la biblioteca que está buscando está en http://msdn.microsoft.com/en-us/library/documentformat.openxml.math%28office.14%29.aspx. Al menos eso es lo que creo que estás buscando.

La noticia no tan buena es que el código siguiente no funciona exactamente como se esperaba: copia la mayoría de los caracteres como "?" y la imagen resultante es bastante basura.

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 

El extraña noticia es que OMML hace copiar/pegar en PowerPoint bien como una imagen, que luego se pueden guardar como un archivo PNG. En poco incómodo, pero se puede hacer con VSTO.

+0

Copiar/pegar puede no funcionar bien, pero guardar ya que produce buenos resultados para mí –

2

Hacemos una biblioteca DLL llamada Ecuación Composer que muchos usan con .NET para convertir MathML a PNG. También está disponible como un ejecutable de línea de comandos. No es gratis, pero eso significa que obtienes asistencia técnica y corrección de errores. Más información está disponible aquí: http://dessci.com/en/products/mathflow/mf_components.htm

0

Si te gusta lo que hace Microsoft Word, el código que utilizan para hacer que esté disponible a partir de la Decisión de Ciencias ... http://dessci.com/ ... Voy a estar evaluando su producto MathFlow pronto, pero aún no ... así que todavía no puedo verificar que la generación PNG funcione bien.