Извлечение уравнений и изображений из Word
Вопрос
Существует ли программный способ извлечения уравнений (и, возможно, изображений) из документа MS Word?Я погуглил повсюду, но пока не нашел ничего, во что я мог бы вонзить зубы и работать с этим.Если возможно, я хотел бы иметь возможность сделать это с помощью VB.NET или C #, но я могу подобрать достаточно любого языка, чтобы взломать DLL.Спасибо!
Редактировать: Прямо сейчас я рассматриваю возможность извлечения уравнений из Word 2003, но если требуется преобразовать его в 2007 / Open XML, это нормально.
Решение
Я не знаю, поможет ли что-нибудь из этого, но объектная модель в Word 2000/2003 имеет InlineShapes
коллекция как часть Document
объект, который представляет встроенные изображения и, возможно, подобные объекты, такие как уравнения.
Некоторый код VBA для копирования первого элемента в буфер обмена, который может помочь вам извлечь их:
ThisDocument.InlineShapes.Items(1).Select
Selection.Copy
Он также доступен в .NET, Ссылка на MSDN.
Другие советы
В каком формате Word находятся ваши документы?Если они находятся в формате Open XML (расширение файла .docx), вы могли бы использовать Открытый XML SDK доступно в Корпорации Майкрософт для извлечения изображений и встроенного содержимого.
Открытый XML-файл - это не что иное, как zip-архив, использующий специальную структуру.В SDK вы найдете примеры доступа к частям этого zip-архива.На самом деле вы могли бы использовать любую библиотеку с поддержкой zip для извлечения содержимого из пакета документов.
Если документы все еще используют старый двоичный формат, все немного сложнее.Я думаю, что самым простым способом было бы преобразовать документы в формат Open XML.Есть несколько способов сделать это:
- Получите бесплатно и откройте b2xтранслятор из SourceForge, который предлагает вам библиотеки DLL на C # для преобразования файлов.
Установите программное обеспечение Microsoft Пакет совместимости и используйте следующую командную строку для преобразования:
"C:\Program Files\Microsoft Office\Office12\wordconv.exe" -oice -nme input\_file output_file
где input_file и output_file должны быть полными именами путей.
Попробуйте взглянуть на Слово-в-latex преобразователь.Для этого требуется .Net framework, и хотя исходный код еще не открыт, автор вызывает вопросы по этому поводу.