2015-08-26 38 views
16

Я пытаюсь преобразовать уравнение MathType, которое хранится как двоичный файл OLE в MathML, используя SDK MathType.Преобразование уравнения MathType, встроенного в OLE Двоичный файл в MathML

Входной файл для моей программы является DocX, который будет содержать embmedd 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. Есть предположения?

Благодаря

+0

Хотя не полный ответ, вы можете найти вдохновение в следующем вопросе. Ссылка на скачивание предлагаемого кода можно найти в последнем комментарии ответа. Это зависит от Word, но это может помочь вам начать работу. http://stackoverflow.com/questions/15320088/parse-mathtype-mtef-data-from-ole-binary-string – DanL

+0

Спасибо. Я это уже видел. С этим в качестве ведущего я только зашел так далеко. Но я не могу идти дальше от того, что я поставил выше. –

+0

Если вы можете физически получить байтовые потоки, я бы попытался: Создать приложение, которое может активировать объект OLE. Затем вы получите ссылку на внутренний объект, который затем можно передать в функцию преобразования. Ваше приложение будет делать то, что делает Word, когда он активирует объект. Я бы подумал об этом в VB6, по крайней мере, в качестве теста. –

ответ

0

вы можете конвертировать Mathtype WMF файл MathML следующим образом: ConvertEquation ко = новый ConvertEquation(); var input = EquationInputFileWMF ("mathTYpe.wmf"); var output = EquationOutputFileText ("MathMLName.txt", "MathML2 (m namespace) .tdl")); conv.Convert (вход, вход);

«MathML2 (m namespace) .tdl» строка для файла «tdl», которая содержит в пути «MathType \ Translators», если вы открываете путь Translators, вы можете найти много типов.

+0

Спасибо. Я попробую. –

0

Вы можете попробовать редактор уравнений MathMagic (версия для Windows). MathMagic может извлекать из Word (-ов) документы (.doc или .docx) из Word (-doc), и может сохранять/скрывать их в другом формате (например, JPG, PNG, BMP, PDF, TeX, LaTeX, MathML,. ..) в качестве задания пакетного преобразования. К сожалению, их пробная версия не поддерживает это пакетное преобразование. Для включения функции конвертации требуется действительная лицензия (даже 1-месячная или двухмесячная лицензия).

 Смежные вопросы

  • Нет связанных вопросов^_^