Всем привет.
Собственно, задача отлично описывается названием темы. Необходимо вставить рисунок в DOC-файл на бинарном уровне. При этом куда вставить -- неважно, допустим, в конец.
Открытая спецификация DOC есть на офсайте -- это плюс. Более того, есть даже описание того, как найти картинку:
http://msdn.microsoft.com/en-us/libr...InlinePictures. А вот на тему того как вставить картинку я ничего не нашел. Хотелось бы для начала осознать общий алгоритм действий. Понятно, что нужно разобрать поток 0Table(1Table), найти piece table, по нему найти в потоке WordDocument конец, и вставить туда символ 0x0001 (который, как я понимаю, обозначает inline-картинку). Дальше уже не так понятно. Каким образом теперь зарегистрировать эту картинку? Информация о картинках находится в OfficeArtContent, который находится в 0Table(1Table). Соответственно, нужно будет добавлять информацию туда (сил разобрать всю структуру данных OfficeArtContent у меня пока не хватило, но я на пути к успеху!). Кроме того, в FIB хранятся свойства картинок => и туда тоже нужно будет что-то добавлять. В каждом из шагов я не уверен (разве что кроме процедуры добавления символа), и каждый из шагов до конца мне не понятен. И самое главное -- что делать со смещениями? Изменятся ли они от таких манипуляций?
Буду крайне рад любой помощи по этой теме, так как вопросов очень много!
Заранее спасибо.
Джоэл Спольски небезосновательно рекомендует избегать работать с бинарным форматом DOC)
Здравствуйте, fast_tony, Вы писали:
_>Собственно, задача отлично описывается названием темы. Необходимо вставить рисунок в DOC-файл на бинарном уровне. При этом куда вставить -- неважно, допустим, в конец.
Можно попробовать использовать более простой формат rtf. Самому не доводилось работать на бинарном уровне с DOC но если верить Спольски то: всё что есть в Word можно записать в rtf. А rtf не бинарный формат — работать с ним проще..
Здравствуйте, Eugene Radius, Вы писали:
ER>Джоэл Спольски небезосновательно рекомендует избегать работать с бинарным форматом DOC)
ER>Здравствуйте, fast_tony, Вы писали:
_>>Собственно, задача отлично описывается названием темы. Необходимо вставить рисунок в DOC-файл на бинарном уровне. При этом куда вставить -- неважно, допустим, в конец.
ER>Можно попробовать использовать более простой формат rtf. Самому не доводилось работать на бинарном уровне с DOC но если верить Спольски то: всё что есть в Word можно записать в rtf. А rtf не бинарный формат — работать с ним проще..
Далеко небезосновательно

. DOC -- ужасный и мерзкий формат, но задание поставлено строго.
И, кстати, задание решено. Хотел отписаться здесь о решении, но оно слишком объемное для одного сообщения