使用文档主题
使用文档主题
本指南展示了如何读取和自定义 Word 文档与其他 Office 应用共享的颜色和字体方案——文档主题——使用 Theme, ThemeColors,以及 ThemeFonts in Aspose.Words FOSS 用于 .NET. 文档的主题是调色板和字体配对,主题感知的格式化在对象模型的其他位置引用它,而不是硬编码特定的颜色或字体名称。
主题对象
Document.Theme 返回文档的 Theme 实例。Theme.Colors 是一个包含文档十二种主题颜色的 ThemeColors 对象;Theme.MajorFonts 和 Theme.MinorFonts 分别是持有标题和正文字体集的 ThemeFonts 对象。
主题颜色
ThemeColors 公开了十二个可写的 Color 属性: Dark1, Light1, Dark2, Light2, Accent1 through Accent6, Hyperlink,以及 FollowedHyperlink. 文档其他位置的格式化对象—— Border.ThemeColor, Shading.ForegroundPatternThemeColor / BackgroundPatternThemeColor, Fill.ForeThemeColor / BackThemeColor, Stroke.ForeThemeColor / BackThemeColor,并且 Font.ThemeColor – 保存一个 ThemeColor 枚举值 (Dark1, Light1, Dark2, Light2, Accent1-Accent6, Hyperlink, FollowedHyperlink,加上 Text1, Text2, Background1, Background2,并且 None)标识 which 主题颜色槽适用;实际 Color 该槽位的值来自相应的 ThemeColors 属性开启 Document.Theme.Colors.
主题字体
ThemeFonts 提供三个可写的 string 属性:Latin(用于拉丁文字),EastAsian,以及 ComplexScript——当格式对象遵循主题时用于各脚本的字体名称。Font.ThemeFont、ThemeFontAscii、ThemeFontFarEast、ThemeFontOther 和 ThemeFontBi 各自保存一个 ThemeFont 枚举值(Major、Minor 或 None),用于标识给定的 Font 对象是遵循 Theme.MajorFonts 还是 Theme.MinorFonts 的特定脚本范围,而不是自行存储显式的字体名称。
提示与最佳实践
- 通过在
Document.Theme.Colors上更新相关的ThemeColors属性,一次性更改所有主题感知的边框、阴影、填充和字体的颜色,而无需逐个遍历文档并单独更新每个格式对象。 - 在假设格式对象遵循主题之前,检查其
ThemeColor或ThemeFont属性是否为None——None表示它拥有自己的显式Color或字体名称。 Theme.MajorFonts通常提供标题字体,而Theme.MinorFonts提供正文字体,与 Word 自带的主题字体选择器保持一致。
常见问题
| 问题 | 原因 | 修复 |
|---|---|---|
更改 Document.Theme.Colors.Accent1 不会影响形状的填充 | 形状的 Fill.ForeThemeColor 为 ThemeColor.None,因此它使用显式颜色而不是主题槽 | 将 Fill.ForeThemeColor 设置为所需的 ThemeColor 值,以便它遵循主题 |
一个 Font 的渲染字体与 Theme.MajorFonts.Latin 不匹配 | Font.ThemeFont(或特定脚本变体)是 ThemeFont.None,因此使用字体本身的名称 | 将相关的 ThemeFont 属性设置为 Major 或 Minor |
FAQ
我该如何读取文档的主题颜色?
读取 Document.Theme.Colors,一个具有 Color 属性的 ThemeColors 对象,用于十二个主题颜色槽——Dark1、Light1、Dark2、Light2、Accent1-Accent6、Hyperlink 和 FollowedHyperlink。
如何在文档中所有使用的位置更改强调色?
将 Document.Theme.Colors.Accent1(或任意强调槽)设置为新的 Color;所有其 ThemeColor 属性引用该槽的格式对象都会自动应用此更改。
ThemeColors 与 ThemeColor 有何区别?
ThemeColors(位于 Document.Theme.Colors 上)是保存文档中十二个实际 Color 值的对象。ThemeColor 是在其他地方使用的枚举(Border、Shading、Fill、Stroke、Font),用于通过名称引用这些槽,而不是直接存储颜色。
如何设置 Font 对象使用的主题字体?
将 Font.ThemeFont(或脚本特定的 ThemeFontAscii/ThemeFontFarEast/ThemeFontOther/ThemeFontBi)设置为 ThemeFont.Major 或 ThemeFont.Minor;实际的字体名称随后来源于 Document.Theme.MajorFonts 或 MinorFonts。
API Reference 摘要
| 类 / 枚举 | 描述 |
|---|---|
Theme | 文档主题,通过 Document.Theme;MajorFonts,MinorFonts,Colors |
ThemeColors | 十二个主题 Color 插槽:Dark1、Light1、Dark2、Light2、Accent1-Accent6、Hyperlink、FollowedHyperlink |
ThemeFonts | 每种脚本的主题字体名称:Latin、EastAsian、ComplexScript |
ThemeColor | 枚举,用于标识主题颜色槽;被 Border、Shading、Fill、Stroke、Font 使用 |
ThemeFont | 枚举,用于标识 Major/Minor 主题字体使用情况;被 Font 使用 |