Как извлечь содержание контейнера OLE?

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

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

  1. откройте контейнер OLE
  2. извлеките каждый составляющий файл и сохраните его на диск

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

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

5
задан tshepang 12 October 2014 в 19:48
поделиться

2 ответа

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

4
ответ дан 14 December 2019 в 13:26
поделиться

Этот сайт http://www.endurasoft.com/vcd/ststo.htm содержит и учебник, и информацию об API, и пример кода, который делает все, что я искал.

2
ответ дан 14 December 2019 в 13:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: