Gestire i master slide della presentazione in Python

Panoramica

Un slide master definisce impostazioni di design condivise per un gruppo di diapositive. Può contenere forme comuni, loghi, sfondi, stili di testo, impostazioni del tema e impostazioni di piè di pagina. In PowerPoint, modificare un slide master è il modo consueto per mantenere una presentazione coerente senza ripetere la stessa formattazione su ogni diapositiva.

Aspose.Slides for Python via .NET supporta lo stesso modello. Una presentazione può contenere una o più master slide, e ogni master slide può contenere diverse layout slide. Le diapositive normali di solito non si riferiscono direttamente a un master slide. Invece, una diapositiva normale usa una layout slide, e quella layout slide appartiene a un master slide.

La gerarchia è:

  1. Slide master – definisce il design e il tema condivisi.
  2. Layout slide – definisce una disposizione specifica di segnaposti e formattazione a livello di layout.
  3. Diapositiva normale – contiene il contenuto effettivo della presentazione e utilizza una layout slide.

The hierarchy of master slides, layout slides, and normal slides

In Aspose.Slides, un slide master è rappresentato dalla classe MasterSlide. Tutti i master slide in una presentazione sono disponibili tramite la collezione Presentation.masters.

Accedere ai Slide Master

In PowerPoint, è possibile aprire la visualizzazione Slide Master da Visualizza > Slide Master.

The Slide Master command on the PowerPoint View tab

In Aspose.Slides, usate la collezione masters per accedere ai master slide:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    first_master_slide = presentation.masters[0]
    master_slide_count = len(presentation.masters)
    first_master_layout_slide_count = len(first_master_slide.layout_slides)

    print("Master slides: " + str(master_slide_count))
    print("Layouts in the first master: " + str(first_master_layout_slide_count))

È inoltre possibile ottenere il master slide usato da una diapositiva normale tramite il suo layout:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    slide = presentation.slides[0]
    layout_slide = slide.layout_slide
    master_slide = layout_slide.master_slide
    master_slide_name = master_slide.name

    print(master_slide_name)

Cosa Contiene un Slide Master

Un master slide è un oggetto simile a una diapositiva. Ereda il comportamento comune delle diapositive dalla classe BaseSlide, quindi espone molte delle stesse proprietà di diapositiva usate da diapositive normali e layout. I membri specifici del master sono elencati nella pagina API MasterSlide.

I membri del master slide più usati includono:

Member Purpose
background Imposta lo sfondo a livello di master slide.
shapes Memorizza le forme posizionate sul master, come loghi, cornici immagine e testo condiviso.
layout_slides Memorizza le layout slide che appartengono al master.
theme_manager Fornisce l’accesso alle API del tema master.
header_footer_manager Controlla intestazioni, piè di pagina, date e numeri di diapositiva per il master e i suoi layout figli.
get_depending_slides Restituisce le diapositive normali che dipendono dal master tramite i loro layout.

Aggiungere un’Immagine a un Slide Master

Quando si aggiunge un’immagine a un master slide, essa appare sulle diapositive che usano layout da quel master. È utile per loghi, filigrane, bande decorative e altri elementi visivi ripetuti.

L’esempio seguente aggiunge un logo al primo master slide:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    master_slide = presentation.masters[0]

    with open("logo.png", "rb") as logo_stream:
        logo_bytes = logo_stream.read()

    logo_image = presentation.images.add_image(logo_bytes)

    master_slide.shapes.add_picture_frame(
        slides.ShapeType.RECTANGLE,
        20,
        20,
        80,
        80,
        logo_image)

    presentation.save("presentation-with-logo.pptx", slides.export.SaveFormat.PPTX)

Per ulteriori informazioni sulle cornici immagine, vedere Picture Frame.

Lavorare con i Segnaposti

I segnaposti sono normalmente definiti sulle layout slide. Il master slide fornisce lo stile e il tema condivisi che tali layout ereditano, mentre ogni layout decide quali segnaposti sono disponibili e dove sono posizionati.

In PowerPoint, i comandi dei segnaposti sono disponibili nella visualizzazione Slide Master.

The Insert Placeholder command in PowerPoint Slide Master view

Per aggiungere nuovi segnaposti con Aspose.Slides, lavorate sulla layout slide che appartiene al master:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    master_slide = presentation.masters[0]
    blank_layout_slide = master_slide.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)

    if blank_layout_slide is None:
        blank_layout_slide = presentation.layout_slides.add(
            master_slide,
            slides.SlideLayoutType.BLANK,
            "Blank")

    blank_layout_slide.placeholder_manager.add_text_placeholder(60, 120, 600, 80)

    presentation.slides.add_empty_slide(blank_layout_slide)
    presentation.save("presentation-with-placeholder.pptx", slides.export.SaveFormat.PPTX)

È anche possibile formattare le forme segnaposto già presenti su un master slide. L’esempio seguente trova il segnaposto del titolo e applica un riempimento a gradiente lineare:

import aspose.pydrawing as draw
import aspose.slides as slides


def find_placeholder(master_slide, placeholder_type):
    for shape in master_slide.shapes:
        if isinstance(shape, slides.AutoShape) and shape.placeholder is not None:
            if shape.placeholder.type == placeholder_type:
                return shape

    return None


with slides.Presentation("presentation.pptx") as presentation:
    master_slide = presentation.masters[0]
    title_placeholder = find_placeholder(master_slide, slides.PlaceholderType.TITLE)

    if title_placeholder is not None:
        red_gradient_color = draw.Color.from_argb(255, 0, 0)
        purple_gradient_color = draw.Color.from_argb(128, 0, 128)

        title_placeholder.fill_format.fill_type = slides.FillType.GRADIENT
        title_placeholder.fill_format.gradient_format.gradient_shape = slides.GradientShape.LINEAR
        title_placeholder.fill_format.gradient_format.gradient_stops.add(0, red_gradient_color)
        title_placeholder.fill_format.gradient_format.gradient_stops.add(1, purple_gradient_color)

    presentation.save("presentation-title-style.pptx", slides.export.SaveFormat.PPTX)

Formatted title placeholder inherited by normal slides

Per ulteriori opzioni di segnaposto e formattazione del testo, vedere Set Prompt Text in Placeholder e Text Formatting.

Modificare lo Sfondo di un Slide Master

Uno sfondo master è ereditato da layout e diapositive che non lo sovrascrivono. L’esempio seguente imposta un colore di sfondo solido per il primo master slide:

import aspose.pydrawing as draw
import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    master_slide = presentation.masters[0]

    master_slide.background.type = slides.BackgroundType.OWN_BACKGROUND
    master_slide.background.fill_format.fill_type = slides.FillType.SOLID
    master_slide.background.fill_format.solid_fill_color.color = draw.Color.forest_green

    presentation.save("presentation-master-background.pptx", slides.export.SaveFormat.PPTX)

Per argomenti correlati, vedere Presentation Background e Presentation Theme.

Clonare un Slide Master in un’Altra Presentazione

Usate il metodo add_clone sulla classe MasterSlideCollection per copiare un master slide in un’altra presentazione. Il master copiato può quindi essere usato da layout e diapositive nella presentazione di destinazione.

import aspose.slides as slides

with slides.Presentation("source.pptx") as source_presentation:
    with slides.Presentation("destination.pptx") as destination_presentation:
        source_master_slide = source_presentation.masters[0]
        cloned_master_slide = destination_presentation.masters.add_clone(source_master_slide)

        destination_presentation.save("destination-with-master.pptx", slides.export.SaveFormat.PPTX)

Se avete bisogno di clonare le diapositive normali insieme al loro master, vedere Clone Slides.

Aggiungere più Slide Master

Una presentazione può contenere più master slide. È utile quando sezioni diverse richiedono branding, struttura di pagina o impostazioni del tema differenti.

PowerPoint commands for inserting and managing master slides

L’esempio seguente clona il master predefinito, assegna al clone uno sfondo diverso, ottiene un layout vuoto sotto quel master clonato e aggiunge una nuova diapositiva basata su quel layout:

import aspose.pydrawing as draw
import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    default_master_slide = presentation.masters[0]
    section_master_slide = presentation.masters.add_clone(default_master_slide)

    section_master_slide.background.type = slides.BackgroundType.OWN_BACKGROUND
    section_master_slide.background.fill_format.fill_type = slides.FillType.SOLID
    section_master_slide.background.fill_format.solid_fill_color.color = draw.Color.light_steel_blue

    section_blank_layout = section_master_slide.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)

    if section_blank_layout is None:
        section_blank_layout = presentation.layout_slides.add(
            section_master_slide,
            slides.SlideLayoutType.BLANK,
            "Section Blank")

    presentation.slides.add_empty_slide(section_blank_layout)
    presentation.save("presentation-with-multiple-masters.pptx", slides.export.SaveFormat.PPTX)

Confrontare i Slide Master

I master slide possono essere confrontati con il metodo equals ereditato dalla classe BaseSlide. Il confronto verifica la struttura e il contenuto statico, come forme, testo, formattazione, animazioni e altre impostazioni della diapositiva. Non confronta identificatori unici, come ID diapositiva, né valori dinamici dei segnaposti, come la data corrente.

import aspose.slides as slides

with slides.Presentation("first.pptx") as first_presentation:
    with slides.Presentation("second.pptx") as second_presentation:
        first_presentation_master_count = len(first_presentation.masters)
        second_presentation_master_count = len(second_presentation.masters)

        for first_master_index in range(first_presentation_master_count):
            for second_master_index in range(second_presentation_master_count):
                first_master_slide = first_presentation.masters[first_master_index]
                second_master_slide = second_presentation.masters[second_master_index]
                are_master_slides_equal = first_master_slide.equals(second_master_slide)

                if are_master_slides_equal:
                    print(
                        "first.pptx master #{} equals second.pptx master #{}".format(
                            first_master_index,
                            second_master_index))

Per ulteriori informazioni, vedere Compare Presentation Slides.

Impostare la Vista Slide Master come Vista Predefinita

Usate la proprietà last_view sull’oggetto ViewProperties della presentazione per controllare la vista che PowerPoint apre per prima. L’esempio seguente apre la presentazione in visualizzazione Slide Master:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    presentation.view_properties.last_view = slides.ViewType.SLIDE_MASTER_VIEW
    presentation.save("presentation-master-view.pptx", slides.export.SaveFormat.PPTX)

Per ulteriori impostazioni di visualizzazione, vedere Save Presentation.

Rimuovere i Master Slide Inutilizzati

Le presentazioni a volte contengono master slide che non sono più usati da alcuna diapositiva normale. Rimuovere i master inutilizzati può ridurre la dimensione del file e semplificare la manutenzione del modello.

Usate remove_unused per eliminare i master inutilizzati dalla collezione masters:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    presentation.masters.remove_unused(True)
    presentation.save("presentation-clean.pptx", slides.export.SaveFormat.PPTX)

È anche possibile usare il metodo low‑code remove_unused_master_slides della classe Compress:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    slides.lowcode.Compress.remove_unused_master_slides(presentation)
    presentation.save("presentation-clean.pptx", slides.export.SaveFormat.PPTX)

FAQ

Qual è la differenza tra un slide master e una layout slide?

Un slide master definisce impostazioni di design condivise come tema, sfondo, forme comuni e stili di testo. Una layout slide appartiene a un slide master e definisce una disposizione specifica di segnaposti. Una diapositiva normale usa una layout slide, così eredita sia dal layout che dal master.

Una presentazione può contenere diversi slide master?

Sì. Una presentazione può contenere diversi slide master. Utilizzate più master quando sezioni diverse hanno bisogno di sistemi visivi o branding differenti.

Devo aggiungere i segnaposti a un master slide o a una layout slide?

Nella maggior parte dei casi, aggiungete i segnaposti alle layout slide. Inserite gli elementi visivi condivisi e la formattazione comune sul master slide, poi mettete i segnaposti di contenuto sulle layout che le diapositive normali utilizzeranno.

Posso eliminare un master slide che è ancora in uso?

No. Un master slide che ha diapositive dipendenti non può essere rimosso in modo sicuro direttamente. Prima spostate quelle diapositive su layout di un altro master, oppure usate un metodo di pulizia dei master inutilizzati che rimuove solo i master non in uso.