Beheer slide‑masters van presentaties in Java

Overzicht

Een slide master definieert gedeelde ontwerpinstellingen voor een groep dia’s. Hij kan gemeenschappelijke vormen, logo’s, achtergronden, tekststijlen, themainstellingen en voettekstinstellingen bevatten. In PowerPoint is het bewerken van een slide master de gebruikelijke manier om een presentatie consistent te houden zonder dezelfde opmaak op elke dia te herhalen.

Aspose.Slides for Java ondersteunt hetzelfde model. Een presentatie kan één of meerdere masterdia’s bevatten, en elke masterdia kan verschillende indelingsdia’s bevatten. Normale dia’s verwijzen doorgaans niet rechtstreeks naar een masterdia. In plaats daarvan gebruikt een normale dia een indelingsdia, en die indelingsdia behoort tot een masterdia.

De hiërarchie is:

  1. Slide master – definieert het gedeelde ontwerp en thema.
  2. Layout slide – definieert een specifieke ordening van plaatshouders en opmaak op indelingsniveau.
  3. Normal slide – bevat de daadwerkelijke presentatiewaarde en gebruikt één indelingsdia.

De hiërarchie van masterdia’s, indelingsdia’s en normale dia’s

In Aspose.Slides wordt een slide‑master weergegeven door de interface IMasterSlide . Alle masterdia’s in een presentatie zijn beschikbaar via de collectie Presentation.getMasters die de interface IMasterSlideCollection implementeert.

Toegang tot slide‑masters

In PowerPoint kun je de weergave Slide Master openen via View > Slide Master.

Het Slide Master‑commando op het PowerPoint‑tabblad View

In Aspose.Slides gebruik je de collectie getMasters() om masterdia’s te benaderen:

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

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

Je kunt ook de masterdia opvragen die door een normale dia wordt gebruikt via zijn indeling:

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    ILayoutSlide layoutSlide = slide.getLayoutSlide();
    IMasterSlide masterSlide = layoutSlide.getMasterSlide();
    String masterSlideName = masterSlide.getName();

    System.out.println(masterSlideName);
} finally {
    presentation.dispose();
}

Wat een slide‑master bevat

Een masterdia is een dia‑achtig object. Het implementeert IBaseSlide, zodat het veel van dezelfde dia‑eigenschappen blootlegt die door normale en indelingsdia’s worden gebruikt. Master‑specifieke leden staan vermeld op de API‑pagina van IMasterSlide.

Veelgebruikte masterdia‑leden omvatten:

Lid Doel
getBackground() Stelt de achtergrond van de master‑dia in.
getShapes() Bewaar vormen die op de master zijn geplaatst, zoals logo’s, foto‑frames en gedeelde tekst.
getLayoutSlides() Bewaar de indelingsdia’s die tot de master behoren.
getThemeManager() Biedt toegang tot de master‑themabibliotheken.
getHeaderFooterManager() Beheert headers, voetteksten, datums en dia‑nummers voor de master en de onderliggende indelingen.
getDependingSlides() Geeft normale dia’s terug die via hun indelingen van de master afhankelijk zijn.

Afbeelding toevoegen aan een slide‑master

Wanneer je een afbeelding toevoegt aan een masterdia, verschijnt deze op dia’s die indelingen van die master gebruiken. Dit is handig voor logo’s, watermerken, decoratieve banden en andere herhaalde visuele elementen.

Het volgende voorbeeld voegt een logo toe aan de eerste masterdia:

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

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

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

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

Voor meer informatie over foto‑frames, zie Afbeeldingsframe.

Werken met plaatshouders

Plaatshouders worden normaal gedefinieerd op indelingsdia’s. De masterdia levert de gedeelde stijl en het thema waar die indelingen van erven, terwijl elke indeling beslist welke plaatshouders beschikbaar zijn en waar ze worden geplaatst.

In PowerPoint zijn plaatshouder‑commando’s beschikbaar in de Slide Master‑weergave.

Het commando Plaats plaatshouder in PowerPoint‑Slide‑Master‑weergave

Om nieuwe plaatshouders toe te voegen met Aspose.Slides, werk je met de indelingsdia die tot de master behoort:

Presentation presentation = new Presentation("presentation.pptx");
try {
    IMasterSlide masterSlide = presentation.getMasters().get_Item(0);
    ILayoutSlide blankLayoutSlide = masterSlide.getLayoutSlides().getByType(SlideLayoutType.Blank);

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

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

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

Je kunt ook plaatshouder‑vormen die al op een masterdia bestaan opmaken. Het volgende voorbeeld vindt de titel‑plaatshouder en past een lineaire kleurverloop‑vulling toe:

Presentation presentation = new Presentation("presentation.pptx");
try {
    IMasterSlide masterSlide = presentation.getMasters().get_Item(0);
    IAutoShape titlePlaceholder = null;

    for (IShape shape : masterSlide.getShapes()) {
        if (shape instanceof IAutoShape) {
            IAutoShape autoShape = (IAutoShape) shape;

            if (autoShape.getPlaceholder() != null &&
                    autoShape.getPlaceholder().getType() == PlaceholderType.Title) {
                titlePlaceholder = autoShape;
                break;
            }
        }
    }

    if (titlePlaceholder != null) {
        Color redGradientColor = new Color(255, 0, 0);
        Color purpleGradientColor = new Color(128, 0, 128);

        titlePlaceholder.getFillFormat().setFillType(FillType.Gradient);
        titlePlaceholder.getFillFormat().getGradientFormat().setGradientShape(GradientShape.Linear);
        titlePlaceholder.getFillFormat().getGradientFormat().getGradientStops().add(0.0f, redGradientColor);
        titlePlaceholder.getFillFormat().getGradientFormat().getGradientStops().add(255.0f, purpleGradientColor);
    }

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

Opgeformatteerde titel‑plaatshouder geërfd door normale dia’s

Voor meer plaatshouder‑ en tekstopmaakopties, zie Prompt‑tekst instellen in plaatshouder en Tekstopmaak.

Achtergrond van een slide‑master wijzigen

Een master‑achtergrond wordt geërfd door indelingen en dia’s die het niet overschrijven. Het volgende voorbeeld stelt een effen achtergrondkleur in voor de eerste masterdia:

Presentation presentation = new Presentation("presentation.pptx");
try {
    IMasterSlide masterSlide = presentation.getMasters().get_Item(0);
    Color masterBackgroundColor = Color.GREEN;

    masterSlide.getBackground().setType(BackgroundType.OwnBackground);
    masterSlide.getBackground().getFillFormat().setFillType(FillType.Solid);
    masterSlide.getBackground().getFillFormat().getSolidFillColor().setColor(masterBackgroundColor);

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

Voor gerelateerde onderwerpen, zie Presentatie‑achtergrond en Presentatie‑thema.

Een slide‑master klonen naar een andere presentatie

Gebruik IMasterSlideCollection.addClone om een masterdia te kopiëren naar een andere presentatie. De gekopieerde master kan vervolgens door indelingen en dia’s in de doelfpresentatie worden gebruikt.

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

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

Als je normale dia’s samen met hun master moet klonen, zie Dia’s klonen.

Meerdere slide‑masters toevoegen

Een presentatie kan meerdere masterdia’s bevatten. Dit is handig wanneer verschillende secties verschillende branding, paginavormgeving of themainstellingen vereisen.

PowerPoint‑commando’s voor het invoegen en beheren van masterdia’s

Het volgende voorbeeld kloont de standaardmaster, geeft de kloon een andere achtergrond, maakt een indeling onder die gekloonde master en voegt een nieuwe dia toe op basis van die indeling:

Presentation presentation = new Presentation("presentation.pptx");
try {
    IMasterSlide defaultMasterSlide = presentation.getMasters().get_Item(0);
    IMasterSlide sectionMasterSlide = presentation.getMasters().addClone(defaultMasterSlide);
    Color sectionMasterBackgroundColor = Color.LIGHT_GRAY;

    sectionMasterSlide.getBackground().setType(BackgroundType.OwnBackground);
    sectionMasterSlide.getBackground().getFillFormat().setFillType(FillType.Solid);
    sectionMasterSlide.getBackground().getFillFormat().getSolidFillColor().setColor(sectionMasterBackgroundColor);

    ILayoutSlide sourceBlankLayout = defaultMasterSlide.getLayoutSlides().getByType(SlideLayoutType.Blank);
    if (sourceBlankLayout == null) {
        sourceBlankLayout = defaultMasterSlide.getLayoutSlides().get_Item(0);
    }

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

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

Slide‑masters vergelijken

Masterdia’s kunnen worden vergeleken met de equals‑methode die ze van IBaseSlide erven. De vergelijking controleert de structuur en statische inhoud, zoals vormen, tekst, opmaak, animaties en andere dia‑instellingen. Het vergelijkt geen unieke identifiers, zoals dia‑ID’s, of dynamische plaatshouder‑waarden, zoals de huidige datum.

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

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

            if (areMasterSlidesEqual) {
                System.out.printf(
                        "first.pptx master #%d equals second.pptx master #%d%n",
                        firstMasterIndex,
                        secondMasterIndex);
            }
        }
    }
} finally {
    firstPresentation.dispose();
    secondPresentation.dispose();
}

Voor meer informatie, zie Presentatiedia’s vergelijken.

Slide‑master‑weergave als standaardweergave instellen

Gebruik de methode setLastView op ViewProperties om de weergave te bepalen die PowerPoint eerst opent. Het volgende voorbeeld opent de presentatie in de Slide Master‑weergave:

Presentation presentation = new Presentation("presentation.pptx");
try {
    presentation.getViewProperties().setLastView(ViewType.SlideMasterView);
    presentation.save("presentation-master-view.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Voor meer weergave‑instellingen, zie Presentatie opslaan.

Ongebruikte masterdia’s verwijderen

Presentaties kunnen soms masterdia’s bevatten die niet meer door normale dia’s worden gebruikt. Het verwijderen van ongebruikte masters kan de bestandsgrootte verkleinen en het onderhoud van sjablonen vereenvoudigen.

Gebruik removeUnused om ongebruikte masters uit de collectie getMasters() te verwijderen:

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

Je kunt ook de low‑code‑methode Compress.removeUnusedMasterSlides gebruiken:

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

FAQ

Wat is het verschil tussen een slide‑master en een indelingsdia?

Een slide‑master definieert gedeelde ontwerpinstellingen zoals thema, achtergrond, gemeenschappelijke vormen en tekststijlen. Een indelingsdia behoort tot een slide‑master en definieert een specifieke ordening van plaatshouders. Een normale dia gebruikt een indelingsdia, waardoor hij zowel van de indeling als van de master erft.

Kan één presentatie meerdere slide‑masters bevatten?

Ja. Een presentatie kan meerdere slide‑masters bevatten. Gebruik meerdere masters wanneer verschillende secties verschillende visuele systemen of branding nodig hebben.

Moet ik plaatshouders toevoegen aan een masterdia of een indelingsdia?

In de meeste gevallen voeg je plaatshouders toe aan indelingsdia’s. Plaats gedeelde visuele elementen en gedeelde opmaak op de masterdia, en zet de inhouds‑plaatshouders op de indelingen die normale dia’s zullen gebruiken.

Kan ik een masterdia verwijderen die nog in gebruik is?

Nee. Een masterdia die afhankelijke dia’s heeft, kan niet veilig direct worden verwijderd. Verplaats eerst die dia’s naar indelingen onder een andere master, of gebruik een opruimmethode voor ongebruikte masters die alleen masters verwijdert die niet in gebruik zijn.