Gerenciar Temas de Apresentação PowerPoint em Python
Introdução
Um tema de apresentação define as propriedades de seus elementos de design. Ao selecionar um tema, você está escolhendo um conjunto coordenado de elementos visuais e suas propriedades.
No PowerPoint, um tema inclui cores, fontes, estilos de fundo, e efeitos.

Alterar a Cor do Tema
Um tema do PowerPoint usa um conjunto específico de cores para diferentes elementos em um slide. Se você não gostar dos padrões, pode alterá‑los aplicando novas cores de tema. Para permitir que você selecione uma nova cor de tema, o Aspose.Slides fornece valores na enumeração SchemeColor .
Este código Python mostra como mudar a cor de destaque de um tema:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 10, 100, 100)
shape.fill_format.fill_type = slides.FillType.SOLID
shape.fill_format.solid_fill_color.scheme_color = slides.SchemeColor.ACCENT4
Você pode determinar o valor efetivo da cor resultante da seguinte forma:
fill_effective = shape.fill_format.get_effective()
print("{0} ({1})".format(fill_effective.solid_fill_color.name, fill_effective.solid_fill_color))
# Saída de exemplo:
#
# ff8064a2 (Cor [A=255, R=128, G=100, B=162])
Para demonstrar ainda mais a alteração de cor, criamos outro elemento, atribuímos a ele a cor de destaque da etapa inicial e, em seguida, atualizamos a cor do tema.
other_shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 120, 100, 100)
other_shape.fill_format.fill_type = slides.FillType.SOLID
other_shape.fill_format.solid_fill_color.scheme_color = slides.SchemeColor.ACCENT4
presentation.master_theme.color_scheme.accent4.color = draw.Color.red
A nova cor é aplicada automaticamente a ambos os elementos.
Definir uma Cor de Tema a partir da Paleta Adicional
Quando você aplica transformações de luminância à cor principal do tema (1), cores da paleta adicional (2) são geradas. Você pode então definir e recuperar essas cores de tema.

1 — Cores principais do tema
2 — Cores da paleta adicional
Este código Python demonstra como as cores da paleta adicional são derivadas da cor principal do tema e, em seguida, usadas em formas:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Realce 4
shape1 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 10, 50, 50)
shape1.fill_format.fill_type = slides.FillType.SOLID
shape1.fill_format.solid_fill_color.scheme_color = slides.SchemeColor.ACCENT4
# Realce 4, Mais claro 80%
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 70, 50, 50)
shape2.fill_format.fill_type = slides.FillType.SOLID
shape2.fill_format.solid_fill_color.scheme_color = slides.SchemeColor.ACCENT4
shape2.fill_format.solid_fill_color.color_transform.add(slides.ColorTransformOperation.MULTIPLY_LUMINANCE, 0.2)
shape2.fill_format.solid_fill_color.color_transform.add(slides.ColorTransformOperation.ADD_LUMINANCE, 0.8)
# Realce 4, Mais claro 60%
shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 130, 50, 50)
shape3.fill_format.fill_type = slides.FillType.SOLID
shape3.fill_format.solid_fill_color.scheme_color = slides.SchemeColor.ACCENT4
shape3.fill_format.solid_fill_color.color_transform.add(slides.ColorTransformOperation.MULTIPLY_LUMINANCE, 0.4)
shape3.fill_format.solid_fill_color.color_transform.add(slides.ColorTransformOperation.ADD_LUMINANCE, 0.6)
# Realce 4, Mais claro 40%
shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 190, 50, 50)
shape4.fill_format.fill_type = slides.FillType.SOLID
shape4.fill_format.solid_fill_color.scheme_color = slides.SchemeColor.ACCENT4
shape4.fill_format.solid_fill_color.color_transform.add(slides.ColorTransformOperation.MULTIPLY_LUMINANCE, 0.6)
shape4.fill_format.solid_fill_color.color_transform.add(slides.ColorTransformOperation.ADD_LUMINANCE, 0.4)
# Realce 4, Mais escuro 25%
shape5 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 250, 50, 50)
shape5.fill_format.fill_type = slides.FillType.SOLID
shape5.fill_format.solid_fill_color.scheme_color = slides.SchemeColor.ACCENT4
shape5.fill_format.solid_fill_color.color_transform.add(slides.ColorTransformOperation.MULTIPLY_LUMINANCE, 0.75)
# Realce 4, Mais escuro 50%
shape6 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 50, 50)
shape6.fill_format.fill_type = slides.FillType.SOLID
shape6.fill_format.solid_fill_color.scheme_color = slides.SchemeColor.ACCENT4
shape6.fill_format.solid_fill_color.color_transform.add(slides.ColorTransformOperation.MULTIPLY_LUMINANCE, 0.5)
presentation.save("example.pptx", slides.export.SaveFormat.PPTX)
Mapear SchemeColor para as Cores ColorScheme
Ao trabalhar com SchemeColor, você pode notar que ele contém os seguintes valores de cor de tema:
BACKGROUND1, BACKGROUND2, TEXT1 e TEXT2.
Entretanto, Presentation.master_theme.color_scheme retorna ColorScheme, que expõe as cores correspondentes como:
dark1, dark2, light1 e light2.
Essa diferença está apenas na nomenclatura. Esses valores referem‑se aos mesmos slots de cor de tema e o mapeamento é fixo:
TEXT1=dark1BACKGROUND1=light1TEXT2=dark2BACKGROUND2=light2
Não há conversão dinâmica entre TEXT/BACKGROUND e dark/light. Elas são simplesmente nomes alternativos para as mesmas cores de tema.
Essa diferença de nomenclatura vem da terminologia do Microsoft Office. Versões mais antigas do Office usavam Dark 1, Light 1, Dark 2 e Light 2, enquanto versões mais recentes da interface exibem os mesmos slots como Text 1, Background 1, Text 2 e Background 2.
Alterar a Fonte do Tema
Para permitir que você selecione fontes para temas e outros propósitos, o Aspose.Slides usa esses identificadores especiais (semelhantes aos do PowerPoint):
- +mn-lt — Fonte do Corpo Latin (Fonte Latina Menor)
- +mj-lt — Fonte do Título Latin (Fonte Latina Maior)
- +mn-ea — Fonte do Corpo East Asian (Fonte Leste‑Asiática Menor)
- +mj-ea — Fonte do Título East Asian (Fonte Leste‑Asiática Maior)
Este código Python mostra como atribuir a fonte Latin a um elemento de tema:
portion = slides.Portion("Theme text format")
portion.portion_format.latin_font = slides.FontData("+mn-lt")
paragraph = slides.Paragraph()
paragraph.portions.add(portion)
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 10, 100, 100)
shape.text_frame.paragraphs.add(paragraph)
Este exemplo Python mostra como alterar a fonte do tema da apresentação:
presentation.master_theme.font_scheme.minor.latin_font = slides.FontData("Arial")
Todas as caixas de texto serão atualizadas para a nova fonte.
DICA
Para mais informações, veja Fontes Mestre do PowerPoint com Python.Alterar o Estilo de Fundo do Tema
Por padrão, o PowerPoint fornece 12 fundos predefinidos, mas uma apresentação típica armazena apenas 3 deles.

Por exemplo, depois de salvar uma apresentação no PowerPoint, você pode executar o seguinte código Python para determinar quantos fundos predefinidos ela contém:
with slides.Presentation() as presentation:
number_of_background_fills = len(presentation.master_theme.format_scheme.background_fill_styles)
print(f"Number of theme background fill styles: {number_of_background_fills}")
background_fill_styles da classe FormatScheme , você pode adicionar ou acessar estilos de fundo em um tema do PowerPoint.
Este exemplo Python mostra como definir o fundo da apresentação:
presentation.masters[0].background.style_index = 2 # 0 denota sem preenchimento; a indexação começa em 1.
DICA
Para mais informações, veja Gerenciar Fundos de Apresentação em Python.Alterar os Efeitos do Tema
Um tema do PowerPoint normalmente inclui três valores em cada array de estilo. Esses arrays combinam‑se em três níveis de efeito: sutil, moderado e intenso. Por exemplo, aqui está o resultado quando esses efeitos são aplicados a uma forma específica:

Usando as três propriedades — FillStyles, LineStyles e EffectStyles — da classe FormatScheme , você pode modificar elementos do tema (de forma ainda mais flexível que no PowerPoint).
Este código Python mostra como alterar um efeito do tema modificando partes desses elementos:
with slides.Presentation("sample.pptx") as presentation:
presentation.master_theme.format_scheme.line_styles[0].fill_format.solid_fill_color.color = draw.Color.red
presentation.master_theme.format_scheme.fill_styles[2].fill_type = slides.FillType.SOLID
presentation.master_theme.format_scheme.fill_styles[2].solid_fill_color.color = draw.Color.forest_green
presentation.master_theme.format_scheme.effect_styles[2].effect_format.outer_shadow_effect.distance = 10
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
As alterações resultantes incluem atualizações da cor de preenchimento, tipo de preenchimento, efeito de sombra e outras propriedades:

Perguntas Frequentes
Posso aplicar um tema a um único slide sem alterar o mestre?
Sim. O Aspose.Slides suporta substituições de tema por slide, permitindo aplicar um tema local apenas a esse slide enquanto mantém o tema mestre intacto (por meio do SlideThemeManager).
Qual é a maneira mais segura de transferir um tema de uma apresentação para outra?
Clone slides junto com seu mestre na apresentação de destino. Isso preserva o mestre original, os layouts e o tema associado, de modo que a aparência permaneça consistente.
Como posso ver os valores “efetivos” após toda herança e substituições?
Use as “visualizações efetivas” da API “effective” views para tema/cor/fonte/efeito. Elas retornam as propriedades resolvidas e finais após aplicar o mestre mais quaisquer substituições locais.