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, Schriften, Hintergrundstile und Effekte.

Themafarbe ändern
Ein PowerPoint‑Thema verwendet für verschiedene Elemente auf einer Folie ein festgelegtes Farbspektrum. Wenn Ihnen die Vorgaben nicht gefallen, können Sie sie ändern, indem Sie neue Themenfarben anwenden. Um Ihnen die Auswahl einer neuen Themenfarbe zu ermöglichen, stellt Aspose.Slides Werte in der SchemeColor‑Enumeration bereit.
Dieser Python‑Code zeigt, wie die Akzentfarbe eines Themas geändert wird:
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:
#
# ff8088a2 (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.
Themafarbe aus der zusätzlichen Palette setzen
Wenn Sie Luminanz‑Transformationen auf die Hauptthemenfarbe (1) anwenden, werden Farben aus der zusätzlichen Palette (2) erzeugt. Diese Themenfarben können Sie anschließend setzen und abrufen.

1 — Hauptthemenfarben
2 — Farben aus der zusätzlichen Palette
Dieser Python‑Code demonstriert, wie Farben der zusätzlichen Palette 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, 80% heller
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, 60% heller
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, 40% heller
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, 25% dunkler
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, 50% dunkler
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)
SchemeColor zu ColorScheme‑Farben zuordnen
Wenn Sie mit SchemeColor arbeiten, bemerken Sie vielleicht, dass sie die folgenden Themenfarbwerte enthält:
BACKGROUND1, BACKGROUND2, TEXT1 und TEXT2.
Presentation.master_theme.color_scheme liefert jedoch ein ColorScheme, das die entsprechenden Farben als
dark1, dark2, light1 und light2
exponiert.
Dieser Unterschied besteht nur in der Benennung. Diese Werte beziehen sich auf dieselben Themenfarb‑Slots und die Zuordnung ist fest:
TEXT1=dark1BACKGROUND1=light1TEXT2=dark2BACKGROUND2=light2
Es gibt keine dynamische Konvertierung zwischen TEXT/BACKGROUND und dark/light. Es handelt sich lediglich um alternative Bezeichnungen für dieselben Themenfarben.
Diese Benennungsunterschiede stammen aus der Microsoft‑Office‑Terminologie. Ältere Office‑Versionen verwendeten Dark 1, Light 1, Dark 2 und Light 2, während neuere Benutzeroberflächen dieselben Slots als Text 1, Background 1, Text 2 und Background 2 anzeigen.
Thema‑Schriftart ändern
Um Ihnen die Auswahl von Schriften für Themen und andere Zwecke zu ermöglichen, verwendet Aspose.Slides diese speziellen Bezeichner (ähnlich denen in PowerPoint):
- +mn-lt — Body Font Latin (Minor Latin Font)
- +mj-lt — Heading Font Latin (Major Latin Font)
- +mn-ea — Body Font East Asian (Minor East Asian Font)
- +mj-ea — Heading Font East Asian (Major East Asian Font)
Dieser Python‑Code zeigt, wie die lateinische Schrift einer Themen‑Komponente zugewiesen wird:
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 die Schriftart des Präsentationsthemas geändert wird:
presentation.master_theme.font_scheme.minor.latin_font = slides.FontData("Arial")
Alle Textfelder werden auf die neue Schriftart aktualisiert.
TIPP
Weitere Informationen finden Sie unter Master PowerPoint Fonts with Python.Thema‑Hintergrundstil ändern
Standardmäßig stellt PowerPoint 12 vordefinierte Hintergründe bereit, aber eine typische Präsentation speichert nur 3 davon.

Beispielsweise 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 der Präsentationshintergrund gesetzt wird:
presentation.masters[0].background.style_index = 2 # 0 bedeutet keine Füllung; die Indizierung beginnt bei 1.
TIPP
Weitere Informationen finden Sie unter Manage Presentation Backgrounds in Python.Thema‑Effekte ändern
Ein PowerPoint‑Thema enthält typischerweise drei Werte in jedem Stil‑Array. Diese Arrays ergeben drei Effektstufen: dezent, mittel und intensiv. Beispielhaft ist hier das Ergebnis, wenn diese Effekte auf eine bestimmte Form angewendet werden:

Über die drei Eigenschaften — FillStyles, LineStyles und EffectStyles — der Klasse FormatScheme können Sie Themen‑Elemente (noch flexibler als in PowerPoint) anpassen.
Dieser Python‑Code zeigt, wie ein Thema‑Effekt geändert wird, indem Teile dieser Elemente modifiziert werden:
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 Updates von Füllfarbe, Fülltyp, Schatteneffekt und weiteren Eigenschaften:

FAQ
Kann ich ein Thema nur auf einer einzelnen Folie anwenden, ohne das Master‑Thema zu ändern?
Ja. Aspose.Slides unterstützt Folien‑bezogene Themen‑Überschreibungen, sodass Sie ein lokales Thema nur auf dieser Folie anwenden können, während das Master‑Thema unverändert bleibt (über den SlideThemeManager).
Wie übertrage ich ein Thema am sichersten von einer Präsentation in eine andere?
Slides klonen zusammen mit ihrem Master in die Zielpräsentation. Dadurch bleiben Master, Layouts und das zugehörige Thema erhalten, sodass das Erscheinungsbild konsistent bleibt.
Wie kann ich die „effektiven“ Werte nach allen Vererbungen und Überschreibungen einsehen?
Verwenden Sie die API‑„effective”‑Ansichten für Thema/Farbe/Schrift/Effekt. Diese geben die aufgelösten Endwerte nach Anwendung des Masters sowie aller lokalen Überschreibungen zurück.