2015-08-26 26 views
16

Sto tentando di convertire l'equazione di MathType che è archiviata come file binario OLE in MathML utilizzando l'SDK di MathType.Convertire l'equazione MathType incorporata nel file binario OLE in MathML

Il file di input per il mio programma è un DocX che conterrà equazioni di MathType embdedd. Sto cercando una soluzione che sia indipendente dall'uso di MS Word. DocX è un file zip e, una volta estratto, è possibile trovare un file binario per ogni oggetto OLE nella cartella "word/embeddings /". In genere il nome del file sarebbe oleObject1.bin, oleObject2.bin ecc

Quando ho controllato con MathType SDK ha una classe "ConvertEquation", che ha seguente metodo:

virtual public bool Convert(EquationInput ei, EquationOutput eo) 

EquationInput è una classe astratta per che sono disponibili i seguenti corsi concreti:

EquationInputFileText 
EquationInputFileWMF2 
EquationInputFileWMF 
EquationInputFileGIF 
EquationInputFileEPS 

Nelle classi sopra elencate nessuno di essi sembra supportare il binario OLE.

In base al documento SDK di MathType, i dati MTEF vengono salvati come formato di dati nativi dell'oggetto. Ogni volta che un oggetto di equazione deve essere scritto in uno "stream" OLE, viene scritta un'intestazione da 28 byte, seguita dai dati MTEF. Immagino che questo sia esattamente ciò che è presente in questo file binario. Ma proprio non sembra esserci alcun modo in cui questo formato possa essere usato per essere utilizzato da SDK per convertirlo in MathML. qualche idea?

Grazie

+0

Sebbene non sia una risposta completa, è possibile trovare ispirazione nella seguente domanda. Un link per scaricare il codice proposto può essere trovato nell'ultimo commento della risposta. Dipende da Word, ma potrebbe aiutarti a iniziare. http://stackoverflow.com/questions/15320088/parse-mathtype-mtef-data-from-ole-binary-string – DanL

+0

Grazie. L'ho già visto. Con quello come vantaggio, sono arrivato fin qui. Ma non sono in grado di procedere oltre ciò che ho esposto sopra. –

+0

Se riesci a ottenere fisicamente i flussi di byte, proverei a farlo: crea un'applicazione in grado di attivare l'oggetto OLE. Quindi avrai il riferimento all'oggetto interno che potrai quindi passare alla funzione di conversione. La tua app farebbe ciò che Word sta facendo quando attiva l'oggetto. Penserei di farlo in VB6 almeno come test. –

risposta

0

è possibile convertire i file WMF MathType per MathML come segue: ConvertEquation conv = new ConvertEquation(); var input = EquationInputFileWMF ("mathTYpe.wmf"); var output = EquationOutputFileText ("MathMLName.txt", "MathML2 (m spazio dei nomi) .tdl")); conv.Convert (input, input);

la stringa "MathML2 (m namespace) .tdl" stringa per il file "tdl" che contiene nel percorso "MathType \ Translators", se si apre il percorso Translators, è possibile trovare molti di tipo.

+0

Grazie. Lo proverò. –

0

Si può provare l'editor di equazioni MathMagic (versione Windows). MathMagic può estrarre tutte le equazioni incorporate di Word dal documento (i) (.doc o .docx) e può salvarle/nasconderle in un altro formato (come JPG, PNG, BMP, PDF, TeX, LaTeX, MathML,. ..) come un processo di conversione batch. Sfortunatamente, la loro versione di prova non supporta questa conversione batch. Per abilitare la funzione Conversione è necessaria una licenza valida (anche 1 mese o 2 mesi di licenza).

Problemi correlati