2010-06-29 4 views
5

Мне нужно открыть файл MS Word (.doc) и извлечь его составные файлы ('[1] CompObj', 'WordDocument' и т. Д.). Что-то вроде 7-zip можно использовать для этого вручную, но мне нужно сделать это программно.Как извлечь содержимое контейнера OLE?

Я понял, что документ Слово является OLE контейнер (следовательно, почему 7-Zip может использоваться для просмотра содержимого), но я не могу работать, как (с помощью C++):

  1. открыть контейнер OLE
  2. экстракт каждого компонента файла и сохранить его на диске

Я нашел несколько примеров автоматизации OLE (например, here), но то, что я хочу сделать, кажется, менее распространенным, и я мы не нашли конкретных примеров.

Если кто-нибудь имеет представление об API (?!) И учебнике для работы с OLE, я был бы благодарен. Тоже любые образцы кода.

ответ

4

Он называется Compound Files, частью API структурированного хранилища. Вы начинаете с StgOpenStorageEx(). Он мало покупает для файла Word .doc, сами потоки имеют сложный двоичный формат. В действительно читайте содержимое документа, которое вы хотите использовать для автоматизации, позволяя Word читать файл. Это редко делается на C++, но этот проект показывает вам, как это сделать.

+0

Кажется, что этот способ работает только для Windows ... Как извлечь содержимое контейнера OLE для IOS? Является ли это возможным? – MastAvalons

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