Správa hlavních vzorů snímků v JavaScriptu

Přehled

master snímku definuje sdílená nastavení designu pro skupinu snímků. Může obsahovat společné tvary, loga, pozadí, styly textu, nastavení motivu a nastavení zápatí. V PowerPointu je úprava hlavního vzoru obvyklým způsobem, jak udržet prezentaci konzistentní, aniž by se opakovalo stejné formátování na každém snímku.

Aspose.Slides for Node.js via Java podporuje stejný model. Prezentace může obsahovat jeden nebo více hlavních vzorů a každý hlavní vzor může obsahovat několik rozložení snímků. Běžné snímky obvykle neodkazují přímo na hlavní vzor. Místo toho běžný snímek používá rozložení snímku a toto rozložení patří k hlavnímu vzoru.

Hierarchie je:

  1. Slide master – definuje sdílený design a motiv.
  2. Layout slide – definuje konkrétní uspořádání zástupných objektů a formátování na úrovni rozložení.
  3. Normal slide – obsahuje skutečný obsah prezentace a používá jedno rozložení snímku.

Hierarchie hlavních vzorů, rozložení a běžných snímků

V Aspose.Slides je hlavní vzor reprezentován třídou MasterSlide . Všechny hlavní vzory v prezentaci jsou dostupné přes kolekci Presentation.getMasters().

Přístup k hlavním vzorům

V PowerPointu můžete otevřít zobrazení Hlavní vzor přes View > Slide Master.

Příkaz Slide Master na kartě View v PowerPointu

V Aspose.Slides použijte kolekci getMasters() k přístupu k hlavním vzorům:

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();
}

Můžete také získat hlavní vzor použité běžným snímkem prostřednictvím jeho rozložení:

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();
}

Co obsahuje hlavní vzor

Hlavní vzor je objekt podobný snímku. Dědí běžné chování snímku z BaseSlide, takže poskytuje mnoho stejných vlastností použivaných běžnými a rozloženími snímků. Členové specifické pro hlavní vzor jsou uvedeni na stránce API MasterSlide .

Běžně používaní členové hlavního vzoru zahrnují:

Člen Účel
getBackground() Nastavuje pozadí snímku na úrovni hlavního vzoru.
getShapes() Ukládá tvary umístěné na hlavním vzoru, jako jsou loga, rámečky obrázků a sdílený text.
getLayoutSlides() Ukládá rozložení snímků, která patří k hlavnímu vzoru.
getThemeManager() Poskytuje přístup k API motivu hlavního vzoru.
getHeaderFooterManager() Řídí záhlaví, zápatí, data a čísla snímků pro hlavní vzor a jeho podřízená rozložení.
getDependingSlides() Vrací běžné snímky, které závisí na hlavním vzoru prostřednictvím jejich rozložení.

Přidání obrázku do hlavního vzoru

Když přidáte obrázek do hlavního vzoru, objeví se na snímcích, které používají rozložení z tohoto vzoru. To je užitečné pro loga, vodoznaky, dekorativní pásy a další opakující se vizuální prvky.

Následující příklad přidává logo do prvního hlavního vzoru:

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();
}

Další informace o rámečcích obrázků najdete v Picture Frame.

Práce se zástupnými objekty

Zástupné objekty jsou obvykle definovány na rozložení snímků. Hlavní vzor poskytuje sdílený styl a motiv, který tyto rozložení dědí, zatímco každé rozložení rozhoduje, které zástupné objekty jsou k dispozici a kde jsou umístěny.

V PowerPointu jsou příkazy pro zástupné objekty dostupné v režimu Slide Master.

Příkaz Insert Placeholder v režimu Slide Master v PowerPointu

Pro přidání nových zástupných objektů s Aspose.Slides pracujte s rozložením, které patří k hlavnímu vzoru:

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();
}

Můžete také formátovat tvary zástupných objektů, které již na hlavním vzoru existují. Následující příklad najde zástupný objekt nadpisu a použije lineární gradientní výplň:

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();
}

Formátovaný nadpisový zástupný objekt zděděný běžnými snímky

Další možnosti formátování zástupných objektů a textu najdete v Set Prompt Text in Placeholder a Text Formatting.

Změna pozadí hlavního vzoru

Pozadí hlavního vzoru je zděděno rozloženími a snímky, které jej nepřepíší. Následující příklad nastaví jednotnou barvu pozadí pro první hlavní vzor:

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();
}

Související témata jsou Presentation Background a Presentation Theme.

Klonování hlavního vzoru do jiné prezentace

Použijte MasterSlideCollection.addClone pro zkopírování hlavního vzoru do jiné prezentace. Zkopírovaný hlavní vzor pak může být použit rozloženími a snímky v cílové prezentaci.

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();
}

Pokud potřebujete klonovat běžné snímky společně s jejich hlavním vzorem, viz Clone Slides.

Přidání více hlavních vzorů

Prezentace může obsahovat více hlavních vzorů. To je užitečné, když různé sekce vyžadují odlišnou značku, strukturu stránky nebo nastavení motivu.

Příkazy PowerPointu pro vkládání a správu hlavních vzorů

Následující příklad klonuje výchozí hlavní vzor, dá klonu jiné pozadí, vytvoří rozložení pod tímto klonovaným hlavním vzorem a přidá nový snímek založený na tomto rozložení:

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();
}

Porovnání hlavních vzorů

Hlavní vzory lze porovnat pomocí metody equals zděděné z BaseSlide. Porovnání kontroluje strukturu a statický obsah, jako jsou tvary, text, formátování, animace a další nastavení snímku. Nekontroluje jedinečné identifikátory, jako jsou ID snímků, ani dynamické hodnoty zástupných objektů, jako je aktuální datum.

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();
}

Další informace najdete v Compare Presentation Slides.

Nastavení zobrazení hlavního vzoru jako výchozího zobrazení

Použijte metodu setLastView na ViewProperties pro nastavení výchozího zobrazení, které PowerPoint otevře jako první. Následující příklad otevře prezentaci v režimu Slide Master:

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();
}

Další nastavení zobrazení najdete v Save Presentation.

Odstranění nepoužívaných hlavních vzorů

Prezentace někdy obsahují hlavní vzory, které již nejsou použity žádnými běžnými snímky. Odstranění nepoužívaných hlavních vzorů může zmenšit velikost souboru a usnadnit údržbu šablony.

Použijte removeUnused k odstranění nepoužívaných hlavních vzorů ze sbírky 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();
}

Můžete také použít low‑code metodu 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();
}

Často kladené otázky

Jaký je rozdíl mezi hlavním vzorem a rozložením snímku?

Hlavní vzor definuje sdílená nastavení designu, jako je motiv, pozadí, společné tvary a styly textu. Rozložení snímku patří k hlavnímu vzoru a definuje konkrétní uspořádání zástupných objektů. Běžný snímek používá rozložení snímku, takže dědí jak z rozložení, tak z hlavního vzoru.

Může jedna prezentace obsahovat několik hlavních vzorů?

Ano. Prezentace může obsahovat několik hlavních vzorů. Používejte více hlavních vzorů, když různé sekce vyžadují odlišné vizuální systémy nebo značkování.

Mám přidávat zástupné objekty do hlavního vzoru nebo do rozložení?

Ve většině případů přidávejte zástupné objekty do rozložení. Sdílené vizuální prvky a společné formátování umístěte na hlavní vzor a obsahové zástupné objekty umístěte na rozložení, která budou používána běžnými snímky.

Mohu smazat hlavní vzor, který je stále používán?

Ne. Hlavní vzor, ke kterému existují závislé snímky, nelze bezpečně odstranit přímo. Nejprve přesunte tyto snímky do rozložení pod jiným hlavním vzorem nebo použijte metodu pro úklid nepoužívaných hlavních vzorů, která odstraní pouze ty, které nejsou v žádném snímku použity.