| 
| 
 | Вопрос # 565/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Недавно я задавал вопрос 547 о том как из файла .doc извлечь jpeg напрямую , без ole. Сделал так как мне посоветовал min@y™ все получилось. Но! Оказалось что в некоторых doc файлах изображение хранится как png. Я как умная мартышка открыл файл png в far managere и файл doc содержащий этот же Png. И стал сравнивать. Оказалось что ворд как то изменяет этот формат и если взять нужную последовательность байт из файла doc (между IHDR и IEND) и попробовать скормить ее TImage то будет ошибка. Но если скопировать картинку из ворда в clipboard и сделать TImage.Picture.Assign(TClipboard)
 все получается. Осталось узнать какие же байты содержатся в clipboarde. Формат даных такой -  CF_ENHMETAFILE. Делаю так -
 var
 h : THandle;
 Len : integer;
 BufPtr: Pointer;
 begin
 Clipboard.Open;
 h := GetClipboardData(CF_ENHMETAFILE );
 if h <> 0 then
 begin
 Len := GlobalSize(h);
 BufPtr := GlobalLock(h);
 if BufPtr <> nil then
 begin
 ...
 end;
 end;
 но  BufPtr почемуто оказывается nil! ПАМАГИТЕ!!
 (делаю проверку:
 var
 Data: THandle;
 Format: Word;
 Palette: HPALETTE;
 begin
 
 Data := GetClipboardData(CF_ENHMETAFILE);
 Palette:=GetClipboardData(CF_PALETTE);
 Image.Picture.LoadFromClipboardFormat(Format, Data, Palette);
 - все работает!!!
 )
 Товарищи, или подскажите как вырвать из ворда кровный png или расскажите отчего BufPtr = nil.
 PS/ Ворд грузить нельзя, нужно напрямую, перезаписывать файлы в другой формат например rtf тоже нельзя
 
|  |   Вопрос задал: егоров (статус: Посетитель)Вопрос отправлен: 10 мая 2007, 14:41
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, егоров!Дело в том, что просто так, делфи не понимает png формат. Поэтому когда вы грузите файл напрямую, он и не грузиться. Но когда через буфер, то получается, так как буфер имеет такую особенность, как преобразование данных. С картинки текст достать он конечно не может, но png bmp - нараз
 Что делать? ищем в гугле фриварный компонент с наванием TPngImage. Точнее, это не компонент, а библиотека, которая позволяет стандартным компонентам с png работать
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 10 мая 2007, 15:02
 Оценка за ответ: 5
 Комментарий к оценке: Большое спасибо все получилось |  
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 10 мая 2007, 15:34; участников в обсуждении: 2. 
|   | егоров (статус: Посетитель), 10 мая 2007, 15:11 [#1]:TO Вадим К/ Беру файл doc/ создаю новый файл txt/копирую в него байты с IHDR по IEND /сохраняю/ меняю расширение на png/ пытаюсь открыть графическим редактором - ругань о неправильном формате |  
|   | Вадим К (статус: Академик), 10 мая 2007, 15:34 [#2]:правильно, а что вы хотели? в текстовом формате некоторые символы недомустимы, а в png файле их может быть туча, особенно 0. Нужто только побайтно, в бинарном режиме. Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |