Преобразувайте уравнение MathType, вградено в OLE двоичен файл, в MathML

Опитвам се да конвертирам уравнението на MathType, което се съхранява като OLE двоичен файл, в MathML с помощта на SDK на MathType.

Входният файл за моята програма е DocX, който ще съдържа вградени MathType уравнения. Търся решение, независимо от използването на MS Word. DocX е zip файл и след като бъде извлечен, можем да намерим двоичен файл за всеки OLE обект в папката "word/embeddings/". Обикновено името на файла ще бъде oleObject1.bin, oleObject2.bin и т.н.

Когато проверих с MathType SDK, той има клас "ConvertEquation", който има следния метод:

virtual public bool Convert(EquationInput ei, EquationOutput eo)

EquationInput е абстрактен клас, за който са налични следните конкретни класове:

EquationInputFileText
EquationInputFileWMF2
EquationInputFileWMF
EquationInputFileGIF
EquationInputFileEPS

В изброените по-горе класове никой от тях изглежда не поддържа OLE двоичен файл.

Според SDK документа на MathType, MTEF данните се записват като оригиналния формат на данните на обекта. Всеки път, когато обект на уравнение трябва да бъде записан в OLE "поток", се записва 28-байтово заглавие, последвано от MTEF данните. Предполагам, че точно това присъства в този двоичен файл. Но просто изглежда, че няма начин, по който този формат да може да се използва от SDK за преобразуването му в MathML. някакви мисли?

Благодаря


person Srikanth Vittal    schedule 26.08.2015    source източник
comment
Въпреки че не е пълен отговор, може да намерите известно вдъхновение в следния въпрос. Връзка за изтегляне на предложения код може да бъде намерена в последния коментар на отговора. Зависи от Word, но може да ви помогне да започнете. stackoverflow.com/ въпроси/15320088/   -  person DanL    schedule 10.09.2015
comment
Благодаря. Това вече го видях. Само с това като водеща позиция стигнах дотук. Но не мога да продължа повече от казаното по-горе.   -  person Srikanth Vittal    schedule 11.09.2015
comment
Ако можете физически да получите потоците от байтове, бих опитал това: Създайте приложение, което може да активира OLE обекта. Тогава ще имате препратката към вътрешния обект, която след това можете да предадете на функцията за преобразуване. Приложението ви ще прави това, което прави Word, когато ole активира обекта. Бих помислил да направя това във VB6 поне като тест.   -  person Sql Surfer    schedule 14.09.2015
comment
Точно това се опитвам да направя, т.е. да предам вътрешния обект на функцията за преобразуване. Но както поставих във въпроса си, функцията за преобразуване изглежда не консумира вътрешния обект!   -  person Srikanth Vittal    schedule 14.09.2015


Отговори (2)


можете да конвертирате mathtype wmf файл в mathml, както следва: ConvertEquation conv = new ConvertEquation(); var input = EquationInputFileWMF("mathTYpe.wmf"); var output = EquationOutputFileText("MathMLName.txt", "MathML2 (m namespace).tdl")); conv.Convert(вход, вход);

низът "MathML2 (m namespace).tdl" означава файл "tdl", който съдържа в пътя "MathType\Translators", ако отворите пътя на преводачите, можете да намерите много от типа.

person rainy    schedule 03.03.2017
comment
Благодаря ти. ще го пробвам - person Srikanth Vittal; 04.03.2017

Можете да опитате MathMagic редактор на уравнения (версия за Windows). MathMagic може да извлече всички вградени уравнения на Word от документа(ите) (.doc или .docx) и може да ги запази/скрие в друг формат (като JPG, PNG, BMP, PDF, TeX, LaTeX, MathML, .. .) като задание за пакетно преобразуване. За съжаление тяхната пробна версия не поддържа това групово преобразуване. Необходим е валиден лиценз (дори 1-месечен или 2-месечен лиценз), за да активирате функцията за преобразуване.

person Sci Tech    schedule 03.07.2017