如何从演示文稿主题获取run / txbody / paragraph的字体颜色?

时间:2012-04-20 02:36:12

标签: openxml openxml-sdk presentationml

我正在使用PresentationML解析器,我正在尝试实现有关字体颜色的主题支持。我正在使用SDK,我已经迷惑了这个怪物:

Slide.SlidePart.SlideLayoutPart.SlideMasterPart.SlideMaster.SlideMasterPart.ThemePart.Theme.ThemeElements.ColorScheme

但是我还不清楚我去哪里获得没有指定颜色的跑步的颜色。对此的任何帮助将不胜感激。

TIA。

更新:在浏览xml之后,看起来我上面发布的怪物调用可能是正确的...它产生一个带有“val”属性的元素,该属性与我正在寻找的十六进制代码相匹配。但目前尚不清楚如何解决颜色图中的特定方案(本例中为“Light1”)。我认为,我大约有75%的方式 - 如果有人可以帮助我了解哪种方案适用于跑步的逻辑,我认为这就是我需要的。

1 个答案:

答案 0 :(得分:3)

免费电子书Open XML Explained可能会提供一些帮助您理解的见解。在PresentationML部分的文档内容结构下,它讨论了如何使用主题和主布局来提供默认值:

第86页 - 第2段:

  

DrawingML主题可用于为字体,布局和其他品牌相关数据创建默认值,并允许它与演示文稿的主体分离。所有Open XML标记语言都可以重用主题。在PresentationML包中,正在使用各种主题。默认情况下,每个主人,幻灯片,笔记和分发主人都会引用一个单独的主题部分。演示文稿本身也引用了演示文稿中使用的默认主题。此默认主题通过引用包内的相同部分与幻灯片母版共享。

因此,在您的演示文稿SlideMaster的theme1.xml中,您将找到用于幻灯片母版和演示文稿的主题定义。颜色名称Light1,Dark1等在每个主题的主题元素的颜色方案中映射到12种所需颜色。有关详细信息,请参阅schema

因此在Run中,您会看到Light1,它映射到主题中定义的数字。如果作者更改了主版面和/或主题,则Light1在运行中不会更改,但主题中的值可能就是您从中获取新值的位置。

在页面121上,Open XML Explained中提到了12种颜色:

  

在主题元素中,您需要创建一个包含所有主题数据的themeElements节点。在此级别,您还可以对主题元素中的现有信息应用额外信息或覆盖。主题元素使用一组子节点构建,每个节点标识特定数据项,例如字体或颜色。 clrScheme元素定义颜色列表。主题颜色列表仅限于“accent1”或“visit links”等项目。每种主题颜色都使用单独的XML元素,其中节点名称标识主题颜色。在这个元素中,您可以使用前面讨论的着色机制,使用DrawingML对形状进行着色。在标记样本157中,定义了两种主题颜色,即“暗-1”和“重音-1”颜色。标记样本不完整。 您需要为所有十二种主题颜色定义值。

希望这会有所帮助......