Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Где в doc документе хранится его эскиз?

6.9K
23 ноября 2015 года
fen1xxx
63 / / 04.11.2010
Нужно получить эскиз doc-документа. Из того, что смог найти в интернете узнал, что если при сохранении документа поставить галочку "Сохранить эскиз", то в документе сохраняется миниатюра. Но вот где именно она хранится найти не смог. Может кто подскажет?
7
06 декабря 2015 года
@pixo $oft
3.4K / / 20.09.2006
Воу-воу паринь палехчи! Ну что ты такой импульсивный сразу? Просто не все на этом форуме знают ответ на твой вопрос, а я сюда захожу крайне редко (но метко ☺).
Итак, по порядку:
0. Открываешь документ и перечисляешь его IPropertySetStorage, пока не наткнёшься на свойство FMTID_SummaryInformation
1. С помощью IEnumSTATPROPSTG перечисляешь список свойств, пока не наткнёшься на PIDSI_THUMBNAIL. Да, это оно!
2. ОНО является значением PROPVARIANT типа VT_CF (clipboard format), и тут тебе уже надо разобраться, как его извлечь. Подсказка — для этого тебе понадобится поле PROPVARIANT.pclipdata.
Upd.: о, даже нашёл ещё немного информации об этом (ближе к концу страницы, ищи по словам "pClipData value"). Т.к. с большой долей вероятности у тебя там будет метафайл, то дальше идёшь сюда за описанием. В принципе, я окинул взглядом — всё там понятно, разберёшься с форматом и как данные извлечь. Если не понятно/лень/иные причины, пиши, расскажу то, что я почерпнул.

Только учти, что если тебе нужно получить эскиз .doc'а в любом месте, а не в каком-то конкретно тебе нужном, то этот способ тебе не поможет, т.к. Word, насколько я знаю, создаёт эскиз только 1-й страницы. И да, этот способ действителен только для версий Office не старше 2003, потому что начиная с MSO 2007 всё хранится в .zip-архиве, и извлечь оттуда ещё проще. Поэтому уточни версию, а то вдруг окажется, что я зря тут распинался :D
6.9K
25 ноября 2015 года
fen1xxx
63 / / 04.11.2010
Бросаю ваш форум
6.9K
09 декабря 2015 года
fen1xxx
63 / / 04.11.2010
Спасибо огромное!
Цитата: @pixo $oft
И да, этот способ действителен только для версий Office не старше 2003, потому что начиная с MSO 2007 всё хранится в .zip-архиве, и извлечь оттуда ещё проще.

А вот с этого момента можно поподробнее?) Как достать оттуда?)

Мне нужно с любого doc документа получать эскиз (т.е. версия word'а не имеет значения). Если эскиза в файле нет, то я просто иконку показывать буду.

7
11 декабря 2015 года
@pixo $oft
3.4K / / 20.09.2006
Что поподробнее? Во-первых, начиная с MSO 2007 файл стал иметь расширение .docx, поэтому мой вопрос, наверное, не совсем корректен. В случае MSO 2007+ сохраняй любой документ со включенным эскизом, открывай в ZIP-совместимом архиваторе и изучай структуру, там обязательно будет файл картинки, в котором будет храниться эскиз.
А если всё-таки интересуют версии 2003 и ниже, то могу даже код написать (если самому лень ☺).

Upd.: сохранил документ с превьюхой в .docx, там она не сохраняется. Видимо, убрали такую возможность. Так что тебе остаётся только 2003 и ранее :-)
6.9K
12 декабря 2015 года
fen1xxx
63 / / 04.11.2010
Спасибо огромное!
Цитата: @pixo $oft
то могу даже код написать

Код сам напишу, ибо я пишу на CAVO, а ты вряд ли о нем вообще слышал (как и кто-либо вообще) :)
Долгие зимние вечера, потраченные на поиск ответа, не дали результатов. Еще раз спасибо!)

1
12 декабря 2015 года
kot_
7.3K / / 20.01.2000
Цитата: fen1xxx

Код сам напишу, ибо я пишу на CAVO, а ты вряд ли о нем вообще слышал (как и кто-либо вообще) :)

[offtop]
Завывая "I need to let it go, I need to let it go, I need to let it go"? ;)

[/offtop]

7
12 декабря 2015 года
@pixo $oft
3.4K / / 20.09.2006
Действительно, сия аббревиатура мне незнакома. Если там нет проблем с интерфейсами и ты поймёшь MSDN, то уверен, у тебя получится ☺
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог