Trabalhando com Temas de Documento
Trabalhando com Temas de Documento
Este guia mostra como ler e personalizar o esquema de cores e fontes que os documentos do Word compartilham com outros aplicativos do Office – o tema do documento – usando Theme, ThemeColors, e ThemeFonts in Aspose.Words FOSS para .NET. O tema de um documento é a paleta e o emparelhamento de fontes que a formatação sensível ao tema em outras partes do modelo de objetos referencia em vez de codificar rigidamente uma cor ou nome de fonte específico.
O Objeto Tema
Document.Theme retorna uma instância Theme para o documento. Theme.Colors é um objeto ThemeColors que contém as doze cores do tema do documento; Theme.MajorFonts e Theme.MinorFonts são objetos ThemeFonts que contêm, respectivamente, os conjuntos de fontes de título e de corpo.
Cores do Tema
ThemeColors exibe doze graváveis Color propriedades: Dark1, Light1, Dark2, Light2, Accent1 through Accent6, Hyperlink, e FollowedHyperlink. Objetos de formatação em outras partes do documento – Border.ThemeColor, Shading.ForegroundPatternThemeColor / BackgroundPatternThemeColor, Fill.ForeThemeColor / BackThemeColor, Stroke.ForeThemeColor / BackThemeColor, e Font.ThemeColor – contém um ThemeColor valor enum (Dark1, Light1, Dark2, Light2, Accent1-Accent6, Hyperlink, FollowedHyperlink, mais Text1, Text2, Background1, Background2, e None) que identifica which o slot de cor do tema se aplica; o real Color valor para esse slot vem do correspondente ThemeColors propriedade ativada Document.Theme.Colors.
Fontes do Tema
ThemeFonts expõe três propriedades string graváveis: Latin (para caracteres de script latino), EastAsian e ComplexScript – os nomes de fonte usados para cada script quando um objeto de formatação delega ao tema. Font.ThemeFont, ThemeFontAscii, ThemeFontFarEast, ThemeFontOther e ThemeFontBi contêm cada um um valor enum ThemeFont (Major, Minor ou None) identificando se um determinado objeto Font delega a Theme.MajorFonts ou Theme.MinorFonts para um intervalo de script específico, em vez de armazenar um nome de fonte explícito próprio.
Dicas e Melhores Práticas
- Altere uma cor em todas as bordas, sombreamentos, preenchimentos e fontes sensíveis ao tema de uma só vez, atualizando a propriedade
ThemeColorsrelevante emDocument.Theme.Colors, em vez de percorrer o documento para atualizar cada objeto de formatação individualmente. - Verifique se a propriedade
ThemeColorouThemeFontde um objeto de formatação estáNoneantes de presumir que ele delega ao tema —Nonesignifica que ele possui seu próprioColorexplícito ou nome de fonte. Theme.MajorFontsnormalmente fornece fontes de cabeçalho e fontes de corpoTheme.MinorFonts, correspondendo ao seletor de fontes de tema do Word.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
Alterar Document.Theme.Colors.Accent1 não afeta o preenchimento de uma forma | O Fill.ForeThemeColor da forma está ThemeColor.None, portanto usa uma cor explícita em vez de um slot de tema | Defina Fill.ForeThemeColor para o valor desejado de ThemeColor para que ele delegue ao tema |
A fonte renderizada do Font não corresponde a Theme.MajorFonts.Latin | O Font.ThemeFont (ou variante específica do script) é ThemeFont.None, portanto o próprio nome da fonte é usado em vez disso | Defina a propriedade ThemeFont relevante para Major ou Minor |
FAQ
Como ler as cores de tema de um documento?
Leia Document.Theme.Colors, um objeto ThemeColors com propriedades Color para cada um dos doze slots de cores do tema – Dark1, Light1, Dark2, Light2, Accent1-Accent6, Hyperlink e FollowedHyperlink.
Como altero a cor de destaque do documento em todos os lugares onde é usada?
Defina Document.Theme.Colors.Accent1 (ou o slot de destaque que desejar) para um novo Color; todo objeto de formatação cuja propriedade ThemeColor referencia esse slot adota a mudança.
Qual é a diferença entre ThemeColors e ThemeColor?
ThemeColors (em Document.Theme.Colors) é o objeto que contém os doze valores reais de Color do documento. ThemeColor é o enum usado em outros lugares (Border, Shading, Fill, Stroke, Font) para referenciar um desses slots pelo nome em vez de armazenar uma cor diretamente.
Como defino qual fonte do tema um objeto Font utiliza?
Defina Font.ThemeFont (ou o ThemeFontAscii / ThemeFontFarEast / ThemeFontOther / ThemeFontBi específico do script) para ThemeFont.Major ou ThemeFont.Minor; o nome real da fonte então vem de Document.Theme.MajorFonts ou MinorFonts.
API Reference Resumo
| Classe / Enum | Descrição |
|---|---|
Theme | Tema do documento, via Document.Theme; MajorFonts, MinorFonts, Colors |
ThemeColors | Doze slots de Color do tema: Dark1, Light1, Dark2, Light2, Accent1-Accent6, Hyperlink, FollowedHyperlink |
ThemeFonts | Nomes de fontes do tema por script: Latin, EastAsian, ComplexScript |
ThemeColor | Enum que identifica um slot de cor de tema; usado por Border, Shading, Fill, Stroke, Font |
ThemeFont | Enum que identifica o uso da fonte do tema Major/Minor; usado por Font |