2009-06-29 5 views
11

Existe-t-il des bibliothèques qui utilisent MathML (ou, mieux encore, OMML) et produisent un fichier .PNG?MathML ou OMML vers PNG avec .NET?

Je suis en train de mettre en place un processus d'exportation pour les fichiers .docx et, dans le cadre de ce processus, je voudrais extraire les équations et les rendre sous forme de fichiers .PNG. Word 2007 le fait nativement lorsque vous enregistrez un document pour le Web, mais jusqu'à présent, je n'ai pas réussi à trouver un moyen de le faire par programme (si quelqu'un a une réponse pour cela, ce serait encore mieux). La meilleure solution est donc de prendre l'OMML et d'utiliser les feuilles de style XSL fournies par Microsoft et de les transformer en MathML.

Malheureusement, je n'ai trouvé aucune bibliothèque de rendu (fonctionnelle) pour MathML ou OMML.

S'il n'y a pas de bibliothèques .NET pures pour cela, je me contenterai de tout ce que je peux appeler depuis une ligne de commande pour sortir un .PNG depuis MathML ou OMML.

+0

Je voulais juste faire un suivi pour voir si le ci-dessous répond à votre question. –

Répondre

1

J'ai un besoin similaire. Voici un fragment qui fonctionne pour moi:

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

Quelques nouvelles d'accord, d'autres pas si bonnes nouvelles et des nouvelles étranges:

Le ok nouvelles est la bibliothèque que vous cherchez est à http://msdn.microsoft.com/en-us/library/documentformat.openxml.math%28office.14%29.aspx. Au moins, c'est ce que je pense que vous cherchez.

Le n'est pas si génial nouvelles est que le code ci-dessous ne fonctionne pas exactement comme espéré - il copie la plupart des caractères comme "?" et l'image qui en résulte est à peu près de la merde.

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 

L'bizarre nouvelles est que OMML ne copier/coller dans PowerPoint très bien comme une image qui peut être sauvé comme un PNG. Peu encombrant, mais cela peut être fait avec VSTO.

+0

Copier/Coller peut ne pas fonctionner correctement, mais enregistrer comme produit de bons résultats pour moi –

2

Nous créons une bibliothèque DLL appelée Composeur d'équations, que beaucoup utilisent avec .NET pour convertir MathML en PNG. Il est également disponible en tant qu'exécutable de ligne de commande. Ce n'est pas gratuit, mais cela signifie que vous obtenez un support technique et des corrections de bugs. Plus d'informations sont disponibles ici: http://dessci.com/en/products/mathflow/mf_components.htm

0

Si vous aimez ce que Microsoft Word fait, le code qu'ils utilisent pour le faire est disponible à partir de Sciences de la décision ... http://dessci.com/ ... J'évaluerons leur produit MathFlow bientôt, mais pas encore ... donc, je ne peux pas encore vérifier que la génération PNG fonctionne bien.

Questions connexes