Я пытаюсь преобразовать уравнение 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. Есть предположения?
Благодаря
Хотя не полный ответ, вы можете найти вдохновение в следующем вопросе. Ссылка на скачивание предлагаемого кода можно найти в последнем комментарии ответа. Это зависит от Word, но это может помочь вам начать работу. http://stackoverflow.com/questions/15320088/parse-mathtype-mtef-data-from-ole-binary-string – DanL
Спасибо. Я это уже видел. С этим в качестве ведущего я только зашел так далеко. Но я не могу идти дальше от того, что я поставил выше. –
Если вы можете физически получить байтовые потоки, я бы попытался: Создать приложение, которое может активировать объект OLE. Затем вы получите ссылку на внутренний объект, который затем можно передать в функцию преобразования. Ваше приложение будет делать то, что делает Word, когда он активирует объект. Я бы подумал об этом в VB6, по крайней мере, в качестве теста. –