· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ZEN —› Жертва - WordDocument.

. 1 . 2 . 3 . 4 . 5 . 6 . >>

Посл.отвђт Сообщенiе


Дата: Окт 22, 2003 09:21:23

Помогите, кто чем может. Мне надо наваять прогу, которая бы вытаскивала из вордовских *.doc рисунки. Ворд на компе может быть и не установлен, т.е. использовать его нельзя. Я выдрал с помощью ole api из файла поток WordDocument, а вот что с ним делать дальше? Буду весьма благодарен за совет.
P.S. Пишу на C.


Дата: Окт 22, 2003 11:36:21

Хе-хе, очень интересный вопрос :)
Вкратце тебе лучше скачать исходники wvWare и попробовать разобраться во всем том мусоре, который там есть. Я с картинками еще детально не разбирался, но в потоке WordDocument хранятся только битмапы в формате png, векторные рисунки хранятся в пожатом LZW метафайле в потоке Data (но это недокументированная штука). Можешь еще попробовать почитать официальную документацию по формату (но там сам черт ногу сломит и ошибок и несоответствий просто немеряно).
Самый лучший вариант - найти уже что-то готовое, с нуля там на 2-3 месяца работы.


Дата: Окт 22, 2003 12:26:41

Я png'шные файлики в *.doc по заголовку нахожу, который начинается с 89 50 4E 47 (ЙPNG)


Дата: Окт 22, 2003 12:32:29

Johnikum
Для full saved файлов можно и так :), а вот для fast saved это может не прокатить (точнее - это точно не прокатит).


Дата: Окт 22, 2003 12:41:31

[i][/i]
Спасибо всем за отклики :-)
Это уже интереснее, а в чем дело с fast saved? Куски от прошлых сохранений тоже было бы неплохо пощупать...
Кстати, официальная дока у меня есть, но она по 97 , а мне надо вплоть до последних версий включительно.
Johnikum, а ты мне исходнички не скинешь?


Дата: Окт 22, 2003 12:50:18 · Поправил: masquer

Stariy
Куски прошлых сохранений ты не пощупаешь - они, как правило, очень хаотически раскиданы, и нет гарантии, что там вообще весь файл будет, какая-то часть - может быть.
Другой официальной доки нет, да и по той, что есть, ты не много напишешь - поверь мне :)))
Зачем тебе исходники - тяжело файл прочесать на предмет наличия сигнатуры? Хотя это очень неправильный путь, и работать будет далеко не со всеми файлами...


Дата: Окт 22, 2003 13:06:09

>Другой официальной доки нет,
>да и по той, что есть, ты не
>много напишешь - поверь мне :)))
Это я уже понял...
Сигнатуру я нашел, а как узнать конец рисунка?
Разбираться с форматом PNG? Кстати. а как с видео и звуком?
Меня еще вот что интересует - при вытягивании потока из файла он (поток) как-то распаковавается или же просто вырезается? Есть ли смысл их вытаскивать, или же можно работать непосредственно с doc?
>Хотя это очень неправильный путь,
>и работать будет далеко не со
>всеми файлами...
Прошу простить за занудство - а какой правильный? Есть уже какие-то идеи (если не секрет)? В сети попадаются только советы типа "как из дельфи сделать отчет в ворде"
У меня есть мысль, что где-то там прячется перечень всех инородных тел с адресами. по которым они лежат, но так ли это (если так, то где конкретно)?
>Куски прошлых сохранений ты не
>пощупаешь - они, как правило,
>очень хаотически раскиданы, и
>нет гарантии
У них есть какие-то признаки, по которым их можно отличить от видимого текста? Когда я просто открываю файл листером, я их вижу, но как их не спутать с нормальным текстом?


Дата: Окт 22, 2003 13:20:54 · Поправил: masquer

Сигнатуру я нашел, а как узнать конец рисунка?
Если мне память не изменяет, там в (или при?) конце IEND должно быть

Разбираться с форматом PNG? Кстати. а как с видео и звуком?
Библиотеки на это есть. С видео и звуком - сложнее, это недокументированно, но в общем это хранится сам файл (либо ссылка на него :)), плюс служебная информация

Меня еще вот что интересует - при вытягивании потока из файла он (поток) как-то распаковавается или же просто вырезается? Есть ли смысл их вытаскивать, или же можно работать непосредственно с doc?
Он не распаковывается, если ты используешь OLE API, то при вытягивании потока, вкратце, он просто собирается из кусочков. Если ты просто сканировать будешь, то тебе это и не нужно. Иначе имей ввиду, что потоков WordDocument может быть очень много, просто относятся они к разным подкаталогам.

Прошу простить за занудство - а какой правильный? Есть уже какие-то идеи (если не секрет)?
С идеями проблем нет, есть проблемы в их реализации. В твоем случае есть 2 варианта правильных путей (если офиса нет в системе).
1. Можно с собой таскать библиотеки конверторов офиса (не сам офис). Но, во-первых, я не уверен, как там у них с лицензирование этого, плюс они довольно глючные и в 1 случае из 3 либо некорректно работают, либо вообще не работают :))
2. Самому писать обработку бинарного формата - это не меньше 2-3 месяцев.

В сети попадаются только советы типа "как из дельфи сделать отчет в ворде"
А, это с OLE Automation можно сделать, для этого формат не нужен (естественно, сам офис должен быть установлен)

У меня есть мысль, что где-то там прячется перечень всех инородных тел с адресами. по которым они лежат, но так ли это (если так, то где конкретно)?
Нет, там все ГОРАЗДО сложнее.

У них есть какие-то признаки, по которым их можно отличить от видимого текста? Когда я просто открываю файл листером, я их вижу, но как их не спутать с нормальным текстом?
Ну, просто сканируй на предмет наличия заголовка PNG так, как тебе Johnikum сказал.


Дата: Окт 22, 2003 14:01:29

По поводу последнего совета - я не про рисунки уже, я про текст стертый, но оставшийся.
>я не уверен, как там у них с
>лицензирование этого
Это мне пофиг. Раз я купил офис (за 70 руб), значит и библиотеки купил. Пусть не и мелкософта, а у мужика с митьки - но купил же. А раз купил, значит они мои. А раз они мои, то делаю с ними все, что хочу. Какое может быть лицензирование? Не в Париже, поди...
Спасибо за советы, буду пробовать.


Дата: Окт 22, 2003 14:50:16

Кстати, насчет исходников vmWare - а там мозг не вывихнешь, разбираясь с исходниками?


Дата: Окт 22, 2003 15:12:24

Извиняюсь, спутал wm с wv. Хе-хе... Старость - не радость...


Дата: Окт 22, 2003 15:22:32

Да, а какая разница между full и fast saved? Ну не между ними, конечно, а между получаемыми в результате файлами?


Дата: Окт 22, 2003 17:31:29

Какое может быть лицензирование?
Ну, если для себя или для соседа Васи делаешь - так и есть :)

а там мозг не вывихнешь, разбираясь с исходниками?
Общую идею понять можно, хотя качество как кода, так и обработки файлов там не на высоте :))

Да, а какая разница между full и fast saved?
Большая, fast saved очень сильно разбросан по всему файлу. Физически один байт текста может чередоваться с байтом изображения. А вот _ПРАВИЛЬНО_ все это вычленить получается только Ворду (даже OpenOffice.org на некоторых файлах ошибается, хотя у него самый продвинутый фильтр, лучше только у Microsoft как по качеству, так и по объему выполняемой работы), ну и у меня еще пока (с оговорками) :))))


Дата: Окт 22, 2003 20:36:53

>ну и у меня еще пока (с оговорками) :))))
Кхе-кхе… Амеба, от которой, между прочим, произошли все мы, и сама делилась, и нам завещала…
Ну да ладно, у меня вот какие вопросы:
1.если пользовать ole api, то где можно посмотреть стертый текст? В worddocument или еще где?
2.Меня не радует перспектива выковыривать внедренные объекты по сигнатурам. Ну растровую графику я вытащу, звук тоже. Но есть куча других форматов – Автокад, маткад, ёксель и др. Это мне надо для каждого сигнатуру знать? Я сдохну, пока все это напишу. Да и ошибки возможны – будет какой-нить умник рассказывать про PNG, напишет там ЙPNG, а моя прога и обрадуется… Хотя, по идее, там текст в UNICODE должен быть… Не посоветуешь какую-нить литературу по этому вопросу? Про structured storage я читал, но этого мало, мне бы конкретно про ворд.


Дата: Окт 22, 2003 20:46:45

Stariy
Внутренний формат документов MS WORD. Авось поможет.

2.Меня не радует перспектива выковыривать внедренные объекты по сигнатурам.
Возьмите библотеку PNG с исходниками (на асме есть такая на MadWizard.org, но на С, наверное, тоже имеются). Там существует функция для проверки валидности PNG, на основании упомянутой вами ранее сигнатуры в начале файла + некоторых других данных. Эту функцию какой-нить умник с толку не собъёт.

. 1 . 2 . 3 . 4 . 5 . 6 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.054