06 августа 2011

Извлечение изображений из файлов Microsoft Office.



Читал много историй про то, как пересылали изображения, вставив их в документ MS Word. Посмеивался над таким решением, но однажды сам столкнулся с подобным. Надо было достать логотип из документа. Копировать изображение из документа, чтобы потом мучиться с ним в редакторе небыло никакого удовольствия. В документе картинка была размером с коробок, а сам документ весил прилично при минимуме текста в нем. Я знал, что документы в формате *.docx и похожие (Office Open XML) являются обычными zip-архивами. В своё время читал статью, что Microsoft не особо изобретали при создании нового формата хранения документов. Они просто перевели старый формат в XML, распихали файлы по папкам и засунули их в zip-архив с довольно слабой степенью сжатия.

Если документ - это архив, то его должен переварить архиватор. WinRAR. Он его и переварил, показав структуру папок в архиве. Кроме кучи папок с xml-файлами и прочими стилями там была папка "word\media\", в которой обнаружился файл с искомым изображением. Самое интересно, что файл был нормального размера. Похоже, что средства для оптимизации изображений, которые есть в Word-е, к нему не применялись. Ну а дальше всё просто: извлечь, использовать для своих целей.

Если надо извлечь изображения из файлов старого формата, то достаточно пересохранить в новый формат и действовать по описанной методике.