Beheer presentatie-masterdia's in PHP

Overzicht

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

Aspose.Slides for PHP via Java ondersteunt hetzelfde model. Een presentatie kan één of meer masterdia’s bevatten, en elke masterdia kan meerdere lay‑outdia’s bevatten. Normale dia’s verwijzen meestal niet direct naar een masterdia. In plaats daarvan gebruikt een normale dia een lay‑outdia, en die lay‑outdia behoort tot een masterdia.

De hiërarchie is:

  1. Masterdia – definieert het gedeelde ontwerp en thema.
  2. Lay‑outdia – definieert een specifieke rangschikking van tijdelijke aanduidingen en lay‑out‑niveau opmaak.
  3. Normale dia – bevat de daadwerkelijke presentatietoepassing en gebruikt één lay‑outdia.

De hiërarchie van masterdia’s, lay‑outdia’s en normale dia’s

In Aspose.Slides wordt een masterdia weergegeven door de MasterSlide‑klasse. Alle masterdia’s in een presentatie zijn beschikbaar via de Presentation.getMasters‑methode, die een MasterSlideCollection‑object retourneert.

Masterdia’s Benaderen

In PowerPoint kun je de masterdia‑weergave openen via Beeld > Masterdia.

De masterdia‑opdracht op het PowerPoint‑tabblad Beeld

In Aspose.Slides gebruik je de getMasters‑methode om masterdia’s te benaderen:

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

    echo "Master slides: " . $masterSlideCount . PHP_EOL;
    echo "Layouts in the first master: " . $firstMasterLayoutSlideCount . PHP_EOL;
} finally {
    $presentation->dispose();
}

Je kunt ook de masterdia die door een normale dia wordt gebruikt via de bijbehorende lay‑out verkrijgen:

$presentation = new Presentation("presentation.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $layoutSlide = $slide->getLayoutSlide();
    $masterSlide = $layoutSlide->getMasterSlide();
    $masterSlideName = $masterSlide->getName();

    echo $masterSlideName . PHP_EOL;
} finally {
    $presentation->dispose();
}

Wat Een Masterdia Bevat

Een masterdia is een object dat op een dia lijkt. Het erft van BaseSlide, zodat het veel van dezelfde dia‑eigenschappen blootlegt die door normale en lay‑outdia’s worden gebruikt. Master‑specifieke leden staan opgesomd op de MasterSlide‑API‑pagina.

Veelgebruikte masterdia‑leden omvatten:

Lid Doel
getBackground Stelt de achtergrond van de masterdia in.
getShapes Bevat vormen die op de master zijn geplaatst, zoals logo’s, afbeeldingskaders en gedeelde tekst.
getLayoutSlides Bevat de lay‑outdia’s die bij de master horen.
getThemeManager Biedt toegang tot de master‑thema‑API’s.
getHeaderFooterManager Beheert kopteksten, voetteksten, datums en paginanummers voor de master en diens onderliggende lay‑outs.
getDependingSlides Retourneert normale dia’s die via hun lay‑outs afhankelijk zijn van de master.

Een Afbeelding Aan Een Masterdia Toevoegen

Wanneer je een afbeelding aan een masterdia toevoegt, verschijnt deze op dia’s die lay‑outs van die master gebruiken. Dit is handig voor logo’s, watermerken, decoratieve balken en andere terugkerende visuele elementen.

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

$presentation = new Presentation("presentation.pptx");
try {
    $masterSlide = $presentation->getMasters()->get_Item(0);
    $logoImage = Images::fromFile("logo.png");
    try {
        $presentationImage = $presentation->getImages()->addImage($logoImage);
    } finally {
        $logoImage->dispose();
    }

    $masterSlide->getShapes()->addPictureFrame(
        ShapeType::Rectangle,
        20,
        20,
        80,
        80,
        $presentationImage
    );

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

Voor meer informatie over afbeeldingskaders, zie Picture Frame.

Werken Met Tijdelijke Aanduidingen

Tijdelijke aanduidingen worden normaal gedefinieerd op lay‑outdia’s. De masterdia levert de gedeelde stijl en het thema die die lay‑outs erven, terwijl elke lay‑out beslist welke tijdelijke aanduidingen beschikbaar zijn en waar ze worden geplaatst.

In PowerPoint zijn de tijdelijke‑aanduiding‑opdrachten beschikbaar in de masterdia‑weergave.

De opdracht Plaats Tijdelijke Aanduiding in de PowerPoint‑masterdia‑weergave

Om nieuwe tijdelijke aanduidingen toe te voegen met Aspose.Slides, werk je met de lay‑outdia die bij de master hoort:

$presentation = new Presentation("presentation.pptx");
try {
    $masterSlide = $presentation->getMasters()->get_Item(0);
    $blankLayoutSlideName = "Custom Blank";
    $blankLayoutSlide = $masterSlide->getLayoutSlides()->add(
        SlideLayoutType::Blank,
        $blankLayoutSlideName
    );

    $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 de vorm van bestaande tijdelijke aanduidingen op een masterdia opmaken. Het volgende voorbeeld zoekt de titel‑tijdelijke‑aanduiding en past een lineaire gradiëntenvulling toe:

$presentation = new Presentation("presentation.pptx");
try {
    $masterSlide = $presentation->getMasters()->get_Item(0);
    $titlePlaceholder = findPlaceholder($masterSlide, PlaceholderType::Title);

    if (!java_is_null($titlePlaceholder)) {
        $redGradientColor = java("java.awt.Color")->RED;
        $purpleGradientColor = new Java("java.awt.Color", 128, 0, 128);

        $fillFormat = $titlePlaceholder->getFillFormat();
        $fillFormat->setFillType(FillType::Gradient);
        $gradientFormat = $fillFormat->getGradientFormat();
        $gradientFormat->setGradientShape(GradientShape::Linear);
        $gradientStops = $gradientFormat->getGradientStops();
        $gradientStops->add(0, $redGradientColor);
        $gradientStops->add(255, $purpleGradientColor);
    }

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

function findPlaceholder($masterSlide, $placeholderType)
{
    $shapesCount = java_values($masterSlide->getShapes()->size());
    for ($shapeIndex = 0; $shapeIndex < $shapesCount; $shapeIndex++) {
        $shape = $masterSlide->getShapes()->get_Item($shapeIndex);
        $placeholder = $shape->getPlaceholder();

        if (!java_is_null($placeholder) && java_values($placeholder->getType()) == $placeholderType) {
            return $shape;
        }
    }

    return null;
}

Opgepaste titel‑tijdelijke‑aanduiding geërfd door normale dia’s

Voor meer opties rond tijdelijke aanduidingen en tekstopmaak, zie Set Prompt Text in Placeholder en Text Formatting.

De Achtergrond Van Een Masterdia Wijzigen

Een masterachtergrond wordt geërfd door lay‑outs en dia’s die deze niet overschrijven. Het volgende voorbeeld stelt een effen achtergrondkleur in voor de eerste masterdia:

$presentation = new Presentation("presentation.pptx");
try {
    $masterSlide = $presentation->getMasters()->get_Item(0);
    $forestGreenColor = new Java("java.awt.Color", 34, 139, 34);

    $background = $masterSlide->getBackground();
    $background->setType(BackgroundType::OwnBackground);
    $fillFormat = $background->getFillFormat();
    $fillFormat->setFillType(FillType::Solid);
    $fillFormat->getSolidFillColor()->setColor($forestGreenColor);

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

Voor gerelateerde onderwerpen, zie Presentation Background en Presentation Theme.

Een Masterdia Kopiëren Naar Een Andere Presentatie

Gebruik addClone van MasterSlideCollection om een masterdia te kopiëren naar een andere presentatie. De gekopieerde master kan vervolgens door lay‑outs en dia’s in de bestemmingspresentatie worden gebruikt.

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

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

Als je normale dia’s samen met hun master wilt klonen, zie Clone Slides.

Meerdere Masterdia’s Toevoegen

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

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

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

$presentation = new Presentation("presentation.pptx");
try {
    $defaultMasterSlide = $presentation->getMasters()->get_Item(0);
    $sectionMasterSlide = $presentation->getMasters()->addClone($defaultMasterSlide);
    $lightSteelBlueColor = new Java("java.awt.Color", 176, 196, 222);

    $background = $sectionMasterSlide->getBackground();
    $background->setType(BackgroundType::OwnBackground);
    $fillFormat = $background->getFillFormat();
    $fillFormat->setFillType(FillType::Solid);
    $fillFormat->getSolidFillColor()->setColor($lightSteelBlueColor);

    $sourceBlankLayout = $defaultMasterSlide->getLayoutSlides()->get_Item(0);
    $sectionBlankLayout = $sectionMasterSlide->getLayoutSlides()->addClone($sourceBlankLayout);

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

Masterdia’s Vergelijken

Masterdia’s kunnen worden vergeleken met de equals‑methode die is geërfd van BaseSlide. De vergelijking controleert structuur en statische inhoud, zoals vormen, tekst, opmaak, animaties en andere dia‑instellingen. Unieke identifiers, zoals dia‑ID’s, of dynamische tijdelijke‑aanduidingswaarden, zoals de huidige datum, worden niet vergeleken.

$firstPresentation = new Presentation("first.pptx");
$secondPresentation = new Presentation("second.pptx");
try {
    $firstPresentationMasterCount = java_values($firstPresentation->getMasters()->size());
    $secondPresentationMasterCount = java_values($secondPresentation->getMasters()->size());

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

            if ($areMasterSlidesEqual) {
                echo "first.pptx master #" . $firstMasterIndex .
                    " equals second.pptx master #" . $secondMasterIndex . PHP_EOL;
            }
        }
    }
} finally {
    $secondPresentation->dispose();
    $firstPresentation->dispose();
}

Voor meer informatie, zie Compare Presentation Slides.

Masterdia‑Weergave Als Standaardweergave Instellen

Gebruik de setLastView‑methode op ViewProperties om de weergave te bepalen die PowerPoint bij het openen eerst laat zien. Het volgende voorbeeld opent de presentatie in masterdia‑weergave:

$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 Save Presentation.

Ongebruikte Masterdia’s Verwijderen

Soms bevatten presentaties masterdia’s die door geen enkele normale dia meer worden gebruikt. Het verwijderen van ongebruikte masters kan de bestandsgrootte verkleinen en het beheer van sjablonen vereenvoudigen.

Gebruik removeUnused van MasterSlideCollection om ongebruikte masters uit de getMasters‑collectie te verwijderen:

$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 removeUnusedMasterSlides van de Compress‑klasse gebruiken:

$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 masterdia en een lay‑outdia?

Een masterdia definieert gedeelde ontwerpinstellingen zoals thema, achtergrond, gemeenschappelijke vormen en tekststijlen. Een lay‑outdia behoort tot een masterdia en definieert een specifieke rangschikking van tijdelijke aanduidingen. Een normale dia gebruikt een lay‑outdia en erft daardoor zowel van de lay‑out als van de master.

Kan een presentatie meerdere masterdia’s bevatten?

Ja. Een presentatie kan meerdere masterdia’s bevatten. Gebruik meerdere masters wanneer verschillende secties andere visuele systemen of branding nodig hebben.

Moet ik tijdelijke aanduidingen toevoegen aan een masterdia of aan een lay‑outdia?

In de meeste gevallen voeg je tijdelijke aanduidingen toe aan lay‑outdia’s. Plaats gedeelde visuele elementen en gedeelde opmaak op de masterdia, en plaats inhoudelijke tijdelijke aanduidingen op de lay‑outs die normale dia’s zullen gebruiken.

Kan ik een masterdia verwijderen die nog in gebruik is?

Nee. Een masterdia met afhankelijke dia’s kan niet veilig direct worden verwijderd. Verplaats die dia’s eerst naar lay‑outs onder een andere master, of gebruik een opschoonmethode die alleen ongebruikte masters verwijdert.