PowerPoint-Präsentationsthemen in Python verwalten
Übersicht
Ein Präsentationsthema definiert die Eigenschaften seiner Designelemente. Wenn Sie ein Thema auswählen, wählen Sie ein abgestimmtes Set visueller Elemente und deren Eigenschaften.
In PowerPoint umfasst ein Thema Farben, Schriftarten, Hintergrundstile und Effekte.

Ändern der Themenfarbe
Ein PowerPoint‑Thema verwendet ein bestimmtes Farbschema für verschiedene Elemente einer Folie. Wenn Ihnen die Vorgaben nicht gefallen, können Sie sie ändern, indem Sie neue Themenfarben anwenden. Damit Sie eine neue Themenfarbe auswählen können, stellt Aspose.Slides Werte in der SchemeColor‑Aufzählung bereit.
Dieser Python‑Code zeigt, wie man die Akzentfarbe eines Themas ändert:
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
Sie können den effektiven Wert der resultierenden Farbe wie folgt bestimmen:
fill_effective = shape.fill_format.get_effective()
print("{0} ({1})".format(fill_effective.solid_fill_color.name, fill_effective.solid_fill_color))
# Beispielausgabe:
#
# ff8064a2 (Farbe [A=255, R=128, G=100, B=162])
Um die Farbänderung weiter zu demonstrieren, erstellen wir ein weiteres Element, weisen ihm die Akzentfarbe aus dem ersten Schritt zu und aktualisieren anschließend die Themenfarbe.
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
Die neue Farbe wird automatisch auf beide Elemente angewendet.
Festlegen einer Themenfarbe aus der zusätzlichen Palette
Wenn Sie Luminanz‑Transformationen auf die Hauptthemenfarbe (1) anwenden, werden Farben aus der zusätzlichen Palette (2) erzeugt. Sie können diese Themenfarben anschließend setzen und abrufen.

1 — Hauptthemenfarben
2 — Farben aus der zusätzlichen Palette
Dieser Python‑Code demonstriert, wie zusätzliche Palettenfarben aus der Hauptthemenfarbe abgeleitet und anschließend in Formen verwendet werden:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Akzent 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
# Akzent 4, Aufgehellt 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)
# Akzent 4, Aufgehellt 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)
# Akzent 4, Aufgehellt 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)
# Akzent 4, Dunkler 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)
# Akzent 4, Dunkler 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)
Ändern der Themen‑schriftart
Damit Sie Schriftarten für Themen und andere Zwecke auswählen können, verwendet Aspose.Slides diese speziellen Bezeichner (ähnlich wie in PowerPoint):
- +mn-lt — Body‑Schriftart Latin (Minor Latin Font)
- +mj-lt — Überschrift‑Schriftart Latin (Major Latin Font)
- +mn-ea — Body‑Schriftart Ostasiatisch (Minor East Asian Font)
- +mj-ea — Überschrift‑Schriftart Ostasiatisch (Major East Asian Font)
Dieser Python‑Code zeigt, wie man die Latin‑Schriftart einem Themen‑Element zuweist:
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)
Dieses Python‑Beispiel zeigt, wie man die Themen‑Schriftart der Präsentation ändert:
presentation.master_theme.font_scheme.minor.latin_font = slides.FontData("Arial")
Alle Textfelder werden auf die neue Schriftart aktualisiert.
TIP
Weitere Informationen finden Sie unter Master PowerPoint-Schriftarten mit Python.Ändern des Themen‑Hintergrundstils
Standardmäßig stellt PowerPoint 12 vordefinierte Hintergründe bereit, aber eine typische Präsentation speichert nur 3 davon.

Zum Beispiel können Sie nach dem Speichern einer Präsentation in PowerPoint den folgenden Python‑Code ausführen, um zu ermitteln, wie viele vordefinierte Hintergründe sie enthält:
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 der Klasse FormatScheme können Sie Hintergrundstile in einem PowerPoint‑Thema hinzufügen oder darauf zugreifen.
Dieses Python‑Beispiel zeigt, wie man den Präsentations‑Hintergrund festlegt:
presentation.masters[0].background.style_index = 2 # 0 bedeutet keine Füllung; die Indizierung beginnt bei 1.
TIP
Weitere Informationen finden Sie unter Verwalten von Präsentationshintergründen in Python.Ändern der Themen‑effekte
Ein PowerPoint‑Thema enthält typischerweise drei Werte in jedem Stil‑Array. Diese Arrays werden zu drei Effektstufen kombiniert: dezent, moderat und intensiv. Zum Beispiel ist hier das Ergebnis, wenn diese Effekte auf eine bestimmte Form angewendet werden:

Mit den drei Eigenschaften — FillStyles, LineStyles und EffectStyles — der Klasse FormatScheme können Sie Thema‑Elemente verändern (noch flexibler als in PowerPoint).
Dieser Python‑Code zeigt, wie man einen Themen‑Effekt ändert, indem man Teile dieser Elemente anpasst:
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)
Die resultierenden Änderungen umfassen Aktualisierungen der Füllfarbe, des Fülltyps, des Schattens und weiterer Eigenschaften:

FAQ
Kann ich ein Thema auf eine einzelne Folie anwenden, ohne den Master zu ändern?
Ja. Aspose.Slides unterstützt thema‑Overrides auf Folienebene, sodass Sie ein lokales Thema nur auf diese Folie anwenden können, während das Master‑Thema unverändert bleibt (über den SlideThemeManager).
Was ist der sicherste Weg, ein Thema von einer Präsentation zur anderen zu übertragen?
Clone slides zusammen mit ihrem Master in die Zielpräsentation. Dadurch bleiben der ursprüngliche Master, die Layouts und das zugehörige Thema erhalten, sodass das Aussehen konsistent bleibt.
Wie kann ich die „effektiven“ Werte nach allen Vererbungen und Overrides sehen?
Verwenden Sie die “effective”-Ansichten der API für Thema/Farbe/Schriftart/Effekt. Diese geben die aufgelösten, endgültigen Eigenschaften zurück, nachdem der Master sowie etwaige lokale Overrides angewendet wurden.