Как получить цвет шрифта для прогона /txbody/ абзаца из темы презентации?
Я работаю над анализатором PresentationML и пытаюсь реализовать поддержку тем в отношении цвета шрифта. Я работаю с SDK, и я озадачен этим монстром:
Slide.SlidePart.SlideLayoutPart.SlideMasterPart.SlideMaster.SlideMasterPart.ThemePart.Theme.ThemeElements.ColorScheme
Но до сих пор неясно, куда я иду, чтобы получить цвет для пробега, для которого не был указан другой цвет. Любая помощь по этому вопросу будет принята с благодарностью.
ТИА.
ОБНОВЛЕНИЕ: После простого просмотра xml, похоже, что вызов монстра, который я написал выше, вероятно, правильный... он дает элемент с атрибутом "val", который соответствует искомому шестнадцатеричному коду. Но не ясно, как бы я разрешил конкретную схему в цветовой карте (в данном случае "Light1"). Я думаю, что примерно 75% пути - если кто-то может мне помочь с логикой, чтобы узнать, какая схема применима к бегу, я думаю, что это то, что мне нужно.
1 ответ
Бесплатная электронная книга Open XML Explained может дать некоторое понимание, чтобы помочь вашему пониманию. В разделе PresentationML "Структура содержимого документа" рассказывается о том, как используются темы и основные макеты для задания значений по умолчанию:
стр. 86 - 2-й абзац:
Темы DrawingML можно использовать для создания значений по умолчанию для шрифтов, макетов и других данных, связанных с брендированием, и позволяют отделить их от основной части презентации. Тема может использоваться повторно на всех языках разметки Open XML. Внутри пакета PresentationML используются различные темы. По умолчанию каждый отдельный мастер, мастер слайдов, заметок и раздаточных материалов ссылается на отдельную часть темы. Сама презентация также ссылается на тему по умолчанию, которая будет использоваться в презентации. Эта тема по умолчанию используется совместно с мастерами слайдов, ссылаясь на ту же часть внутри пакета.
Итак, в theme1.xml ваших презентаций SlideMaster вы найдете определение темы, которое используется для мастера слайдов и вашей презентации. Цветовые названия Light1, Dark1 и т. Д. Соответствуют 12 требуемым цветам в цветовой схеме элемента темы для каждой темы. Смотрите схему для деталей.
Таким образом, в Run вы видите Light1, который соответствует номеру, определенному в теме. Если автор меняет мастер-макет и / или тему, Light1 не изменяется во время прогона, но значение в теме может измениться, и именно отсюда вы получите новое значение.
На странице 121 12 цветов упоминаются в объяснении Open XML:
Внутри элемента theme вам необходимо создать узел themeElements, который содержит все данные темы. На этом уровне вы также можете применить дополнительную информацию или переопределить существующую информацию внутри элементов темы. Элементы темы создаются с использованием набора дочерних узлов, каждый из которых идентифицирует определенный элемент данных, например шрифты или цвета. Элемент clrScheme определяет список цветов. Список тематических цветов ограничен такими элементами, как "accent1" или "посещенная ссылка". Каждый из этих цветов темы использует отдельный элемент XML, где имя узла определяет цвет темы. Внутри этого элемента вы используете механизм раскраски, который обсуждался ранее при раскрашивании фигур с помощью DrawingML. В образце разметки 157 определены два цвета темы: цвета "темный-1" и "акцент-1". Образец разметки не завершен. Вы должны определить значение для всех двенадцати цветов темы.
Надеюсь это поможет...