|
|
| Посл.отвђт | Сообщен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, на основании упомянутой вами ранее сигнатуры в начале файла + некоторых других данных. Эту функцию какой-нить умник с толку не собъёт. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.054 |