Gestisci i master delle diapositive della presentazione in JavaScript

Panoramica

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

Aspose.Slides per Node.js via Java supporta lo stesso modello. Una presentazione può contenere uno o più master diapositive, e ogni master diapositiva può contenere diversi layout diapositive. Le diapositive normali di solito non fanno riferimento direttamente a un master diapositiva. Invece, una diapositiva normale utilizza un layout diapositiva, e quel layout appartiene a un master diapositiva.

La gerarchia è:

  1. Master diapositiva - definisce il design e il tema condivisi.
  2. Diapositiva layout - definisce una disposizione specifica di segnaposti e formattazione a livello di layout.
  3. Diapositiva normale - contiene il contenuto effettivo della presentazione e utilizza un layout.

La gerarchia di master diapositive, layout diapositive e diapositive normali

In Aspose.Slides, un master diapositiva è rappresentato dalla classe MasterSlide. Tutti i master diapositive in una presentazione sono disponibili tramite la collezione Presentation.getMasters().

Accedere ai master diapositive

In PowerPoint, puoi aprire la vista Visualizza > Master diapositiva.

Il comando Master diapositiva nella scheda Visualizza di PowerPoint

In Aspose.Slides, usa la collezione getMasters() per accedere ai master diapositive:

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let firstMasterSlide = presentation.getMasters().get_Item(0);
    let masterSlideCount = presentation.getMasters().size();
    let firstMasterLayoutSlideCount = firstMasterSlide.getLayoutSlides().size();

    console.log("Master slides: " + masterSlideCount);
    console.log("Layouts in the first master: " + firstMasterLayoutSlideCount);
} finally {
    presentation.dispose();
}

Puoi anche ottenere il master diapositiva usato da una diapositiva normale attraverso il suo layout:

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let slide = presentation.getSlides().get_Item(0);
    let layoutSlide = slide.getLayoutSlide();
    let masterSlide = layoutSlide.getMasterSlide();
    let masterSlideName = masterSlide.getName();

    console.log(masterSlideName);
} finally {
    presentation.dispose();
}

Cosa contiene un master diapositiva

Un master diapositiva è un oggetto simile a una diapositiva. Eredita il comportamento comune delle diapositive da 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 più comunemente usati sono:

Membro Scopo
getBackground() Imposta lo sfondo a livello di master.
getShapes() Memorizza le forme posizionate sul master, come loghi, cornici immagine e testo condiviso.
getLayoutSlides() Memorizza i layout diapositive appartenenti al master.
getThemeManager() Fornisce l’accesso alle API del tema master.
getHeaderFooterManager() Controlla intestazioni, piè di pagina, date e numeri di diapositiva per il master e i suoi layout figli.
getDependingSlides() Restituisce le diapositive normali che dipendono dal master attraverso i loro layout.

Aggiungere un’immagine a un master diapositiva

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

Il seguente esempio aggiunge un logo al primo master diapositiva:

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let masterSlide = presentation.getMasters().get_Item(0);
    let logo = aspose.slides.Images.fromFile("logo.png");

    try {
        let logoImage = presentation.getImages().addImage(logo);

        masterSlide.getShapes().addPictureFrame(
            aspose.slides.ShapeType.Rectangle,
            20,
            20,
            80,
            80,
            logoImage);
    } finally {
        logo.dispose();
    }

    presentation.save("presentation-with-logo.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Per ulteriori informazioni sulle cornici immagine, vedere Cornice immagine.

Lavorare con i segnaposti

I segnaposti sono normalmente definiti sui layout diapositive. Il master diapositiva fornisce lo stile e il tema condivisi che quei layout ereditano, mentre ogni layout decide quali segnaposti sono disponibili e dove sono posizionati.

In PowerPoint, i comandi dei segnaposti sono disponibili nella vista Master diapositiva.

Il comando Inserisci segnaposto nella vista Master diapositiva di PowerPoint

Per aggiungere nuovi segnaposti con Aspose.Slides, lavora sul layout diapositiva che appartiene al master:

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let masterSlide = presentation.getMasters().get_Item(0);
    let blankLayoutType = java.newByte(aspose.slides.SlideLayoutType.Blank);
    let blankLayoutSlide = masterSlide.getLayoutSlides().getByType(blankLayoutType);

    if (blankLayoutSlide === null) {
        blankLayoutSlide = masterSlide.getLayoutSlides().add(blankLayoutType, "Blank");
    }

    blankLayoutSlide.getPlaceholderManager().addTextPlaceholder(60, 120, 600, 80);

    presentation.getSlides().addEmptySlide(blankLayoutSlide);
    presentation.save("presentation-with-placeholder.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Puoi anche formattare le forme segnaposto già presenti su un master diapositiva. Il seguente esempio trova il segnaposto titolo e applica un riempimento a gradiente lineare:

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let masterSlide = presentation.getMasters().get_Item(0);
    let titlePlaceholder = null;
    let masterShapes = masterSlide.getShapes();
    let masterShapeCount = masterShapes.size();

    for (let masterShapeIndex = 0; masterShapeIndex < masterShapeCount; masterShapeIndex++) {
        let shape = masterShapes.get_Item(masterShapeIndex);

        if (java.instanceOf(shape, "com.aspose.slides.AutoShape")) {
            let placeholder = shape.getPlaceholder();

            if (placeholder !== null && placeholder.getType() === aspose.slides.PlaceholderType.Title) {
                titlePlaceholder = shape;
                break;
            }
        }
    }

    if (titlePlaceholder !== null) {
        let gradientFillType = java.newByte(aspose.slides.FillType.Gradient);
        let linearGradientShape = java.newByte(aspose.slides.GradientShape.Linear);
        let redGradientColor = java.newInstanceSync("java.awt.Color", 255, 0, 0);
        let purpleGradientColor = java.newInstanceSync("java.awt.Color", 128, 0, 128);

        titlePlaceholder.getFillFormat().setFillType(gradientFillType);
        titlePlaceholder.getFillFormat().getGradientFormat().setGradientShape(linearGradientShape);
        titlePlaceholder.getFillFormat().getGradientFormat().getGradientStops().add(0.0, redGradientColor);
        titlePlaceholder.getFillFormat().getGradientFormat().getGradientStops().add(255.0, purpleGradientColor);
    }

    presentation.save("presentation-title-style.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Segnaposto titolo formattato ereditato dalle diapositive normali

Per ulteriori opzioni di formattazione di segnaposti e testo, vedere Imposta testo di prompt nel segnaposto e Formattazione del testo.

Modificare lo sfondo di un master diapositiva

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

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let masterSlide = presentation.getMasters().get_Item(0);
    let ownBackgroundType = java.newByte(aspose.slides.BackgroundType.OwnBackground);
    let solidFillType = java.newByte(aspose.slides.FillType.Solid);
    let masterBackgroundColor = java.getStaticFieldValue("java.awt.Color", "GREEN");

    masterSlide.getBackground().setType(ownBackgroundType);
    masterSlide.getBackground().getFillFormat().setFillType(solidFillType);
    masterSlide.getBackground().getFillFormat().getSolidFillColor().setColor(masterBackgroundColor);

    presentation.save("presentation-master-background.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Per argomenti correlati, vedere Sfondo della presentazione e Tema della presentazione.

Clonare un master diapositiva in un’altra presentazione

Usa MasterSlideCollection.addClone per copiare un master diapositiva in un’altra presentazione. Il master copiato può quindi essere usato da layout e diapositive nella presentazione di destinazione.

let sourcePresentation = new aspose.slides.Presentation("source.pptx");
let destinationPresentation = new aspose.slides.Presentation("destination.pptx");
try {
    let sourceMasterSlide = sourcePresentation.getMasters().get_Item(0);
    let clonedMasterSlide = destinationPresentation.getMasters().addClone(sourceMasterSlide);

    destinationPresentation.save("destination-with-master.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    sourcePresentation.dispose();
    destinationPresentation.dispose();
}

Se devi clonare diapositive normali insieme al loro master, vedere Clona diapositive.

Aggiungere più master diapositive

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

Comandi PowerPoint per inserire e gestire master diapositive

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

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let defaultMasterSlide = presentation.getMasters().get_Item(0);
    let sectionMasterSlide = presentation.getMasters().addClone(defaultMasterSlide);
    let ownBackgroundType = java.newByte(aspose.slides.BackgroundType.OwnBackground);
    let solidFillType = java.newByte(aspose.slides.FillType.Solid);
    let sectionMasterBackgroundColor = java.getStaticFieldValue("java.awt.Color", "LIGHT_GRAY");

    sectionMasterSlide.getBackground().setType(ownBackgroundType);
    sectionMasterSlide.getBackground().getFillFormat().setFillType(solidFillType);
    sectionMasterSlide.getBackground().getFillFormat().getSolidFillColor().setColor(sectionMasterBackgroundColor);

    let blankLayoutType = java.newByte(aspose.slides.SlideLayoutType.Blank);
    let sourceBlankLayout = defaultMasterSlide.getLayoutSlides().getByType(blankLayoutType);
    if (sourceBlankLayout === null) {
        sourceBlankLayout = defaultMasterSlide.getLayoutSlides().get_Item(0);
    }

    let sectionBlankLayout = sectionMasterSlide.getLayoutSlides().addClone(sourceBlankLayout);

    presentation.getSlides().addEmptySlide(sectionBlankLayout);
    presentation.save("presentation-with-multiple-masters.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Confrontare i master diapositive

I master diapositive possono essere confrontati con il metodo equals ereditato da BaseSlide. Il confronto verifica struttura e contenuti statici, come forme, testo, formattazione, animazioni e altre impostazioni della diapositiva. Non confronta identificatori univoci, come gli ID delle diapositive, o valori dinamici dei segnaposti, come la data corrente.

let firstPresentation = new aspose.slides.Presentation("first.pptx");
let secondPresentation = new aspose.slides.Presentation("second.pptx");
try {
    let firstPresentationMasterCount = firstPresentation.getMasters().size();
    let secondPresentationMasterCount = secondPresentation.getMasters().size();

    for (let firstMasterIndex = 0; firstMasterIndex < firstPresentationMasterCount; firstMasterIndex++) {
        for (let secondMasterIndex = 0; secondMasterIndex < secondPresentationMasterCount; secondMasterIndex++) {
            let firstMasterSlide = firstPresentation.getMasters().get_Item(firstMasterIndex);
            let secondMasterSlide = secondPresentation.getMasters().get_Item(secondMasterIndex);
            let areMasterSlidesEqual = firstMasterSlide.equals(secondMasterSlide);

            if (areMasterSlidesEqual) {
                console.log(
                    "first.pptx master #" + firstMasterIndex +
                    " equals second.pptx master #" + secondMasterIndex);
            }
        }
    }
} finally {
    firstPresentation.dispose();
    secondPresentation.dispose();
}

Per ulteriori informazioni, vedere Confronta diapositive della presentazione.

Impostare la vista Master diapositiva come vista predefinita

Usa il metodo setLastView su ViewProperties per controllare la vista che PowerPoint apre per prima. Il seguente esempio apre la presentazione in vista Master diapositiva:

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    let slideMasterViewType = java.newByte(aspose.slides.ViewType.SlideMasterView);

    presentation.getViewProperties().setLastView(slideMasterViewType);
    presentation.save("presentation-master-view.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Per altre impostazioni di visualizzazione, vedere Salva presentazione.

Rimuovere i master diapositive non utilizzati

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

Usa removeUnused per rimuovere i master non usati dalla collezione getMasters():

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    presentation.getMasters().removeUnused(true);
    presentation.save("presentation-clean.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Puoi anche usare il metodo low‑code Compress.removeUnusedMasterSlides:

let presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    aspose.slides.Compress.removeUnusedMasterSlides(presentation);
    presentation.save("presentation-clean.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

FAQ

Qual è la differenza tra un master diapositiva e un layout diapositiva?
Un master diapositiva definisce le impostazioni di progettazione condivise come tema, sfondo, forme comuni e stili di testo. Un layout diapositiva appartiene a un master diapositiva e definisce una disposizione specifica di segnaposti. Una diapositiva normale usa un layout diapositiva, quindi eredita sia dal layout sia dal master.

Una presentazione può contenere diversi master diapositive?
Sì. Una presentazione può contenere diversi master diapositive. Usa più master quando sezioni diverse necessitano di sistemi visivi o branding differenti.

Devo aggiungere i segnaposti a un master diapositiva o a un layout diapositiva?
Nella maggior parte dei casi, aggiungi i segnaposti ai layout diapositive. Metti gli elementi visuali condivisi e la formattazione comune sul master diapositiva, quindi aggiungi i segnaposti di contenuto sui layout che le diapositive normali utilizzeranno.

Posso eliminare un master diapositiva che è ancora in uso?
No. Un master diapositiva con diapositive dipendenti non può essere rimosso direttamente in modo sicuro. Prima sposta quelle diapositive su layout sotto un altro master, o usa un metodo di pulizia dei master non usati che rimuove solo i master non in uso.