Страница 1 из 1

XPS - обход и вставка изображения

Добавлено: 15 май 2013, 10:48
MiReQ
Добрый день.
Необходимо добавить картинку на каждую страницу XPS-документа.
Курил XML Paper Specification, MSDN но ответов до конца не нашел...

Вопросы следующие:
1) как найти коллекцию ресурсов-изображений документа (

Код: Выделить всё

/Documents/<n>/Resources/Images/
)?
могу найти только все картинки, участвующие в текущей странице... но как пройтись по всем картинкам документа?
это необходимо для:
1) генерации уникального имени картинки в области документа,
2) для вызова какого-нибудь метода Append() :)

2) (следствие из первого) как вставить картинку на каждую страницу документа?

Заранее спасибо.

Re: XPS - обход и вставка изображения

Добавлено: 15 май 2013, 16:06
Romeo
А обойти все страницы документа и в них перебрать все изображения разве нельзя?

Re: XPS - обход и вставка изображения

Добавлено: 15 май 2013, 22:48
MiReQ
это как-то нелогично... мне кажется... суть даже не в том, чтобы перебрать картинки, а найти их хранилище: /Documents/<n>/Resources/Images/
Спецификация говорит, что PartName'ы SHOULD BE Documents, <n>, Resources, Images...
Т.е. наверняка неизвестно, как будет называться раздел с картинками, раздел ресурсов и прочее...
А при создании ресурса-картинки мы должны указывать его Uri в документе.

Можно конечно пройтись, найти картинки, распарсить, получить Uri раздела-хранилища картинок (Images)... А если нет картинок, то свой раздел создать...
При этом надо проверить существование хранилища вообще всех ресурсов документа (шрифты и прочее (Resources))...
Но как-то это некрасиво...

Выходит, либо спецификация говорит: "что хотите, то творите, а я просто тут буковки написал, а вы читаете", либо реализация заголовочных файлов xpsobjectmodel.h неполная... Либо я чего-то не вижу :)
(скорее всего последнее и я на это надеюсь... не охота костылями писать...)

Re: XPS - обход и вставка изображения

Добавлено: 16 май 2013, 12:23
MiReQ
Залез в сам XPS-пакет (который представляет из себя архив с xml-ками и прочим). Наглядно увидел структуру.

Буду просто писать в /Documents/<n>/Resources/Images/

На сколько я понял, если сторонний разработчик засунул свои ресурсы не сюда же, это не повлияет на "корректность" документа и он будет интерпретироваться правильно.
Провел 1 тест на практике - работает.

P.S. Romeo, спасибо за участие :)