2009-06-29 25 views
11

Esistono librerie che accettano MathML (o, ancora più preferibilmente, OMML) e restituiscono un file .PNG?MathML o OMML in PNG con .NET?

Sto assemblando un processo di esportazione per i file .docx e, come parte di questo processo, mi piacerebbe estrarre equazioni e renderle come file .PNG. Word 2007 lo fa in modo nativo quando si salva un documento per il web, ma finora, non sono stato in grado di trovare un modo per farlo a livello di programmazione (se qualcuno ha una risposta per questo, sarebbe ancora meglio). Quindi la cosa migliore da fare è prendere l'OMML e utilizzare i fogli di stile XSL forniti da Microsoft e trasformarli in MathML.

Purtroppo, non sono stato in grado di trovare alcuna libreria di rendering (di lavoro) per MathML o OMML.

Se non ci sono librerie .NET pure per questo, mi accontento di tutto ciò che posso chiamare da una riga di comando per generare un file .PNG da MathML o OMML.

+0

volevo solo seguire per vedere se il sotto risponde alla tua domanda. –

risposta

1

Ho una necessità simile. Ecco un frammento che funziona per 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); 
} 
1

Alcune novità va bene, alcuni non così grande notizia e qualche strano notizie:

Il bene notizia è la libreria che stai cercando è a http://msdn.microsoft.com/en-us/library/documentformat.openxml.math%28office.14%29.aspx. Almeno questo è quello che penso tu stia cercando.

Il non è così bello notizie è che il codice qui sotto non funziona esattamente come sperato - copia la maggior parte dei personaggi come "?" e l'immagine risultante è praticamente schifosa.

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 

Il strana notizia è che OMML fa copia/incolla in PowerPoint bene come immagine, che può quindi essere salvata come un PNG. Poco ingombrante, ma può essere fatto con VSTO.

+0

Copia/Incolla potrebbe non funzionare bene, ma salvare come produce buoni risultati per me –

2

Creiamo una libreria DLL denominata Equation Composer che molti usano con .NET per convertire MathML in PNG. È anche disponibile come eseguibile da riga di comando. Non è gratuito, ma ciò significa che ottieni supporto tecnico e correzioni di bug. Maggiori informazioni sono disponibili qui: http://dessci.com/en/products/mathflow/mf_components.htm

0

Se ti piace quello che fa Microsoft Word, il codice che usano per farlo è disponibile da decisione della Scienza ... http://dessci.com/ ... sarò valutando il loro prodotto MathFlow presto, ma non ancora ... quindi, non posso ancora verificare che la generazione PNG funzioni bene.