Dia mester kezelése PHP-ben
Áttekintés
A slide master egy csoportra vonatkozó közös tervezési beállításokat határoz meg. Tartalmazhat közös alakzatokat, logókat, háttérképeket, szövegstílusokat, téma beállításokat és lábléc beállításokat. PowerPointban a slide master szerkesztése a szokásos módja annak, hogy a bemutató egységes maradjon anélkül, hogy minden dián megismételnénk a formázást.
Az Aspose.Slides for PHP via Java támogatja ugyanazt a modellt. Egy prezentáció egy vagy több master slide-ot tartalmazhat, és minden master slide több layout slide-ot tartalmazhat. A normál diák általában nem hivatkoznak közvetlenül egy master slide-ra. Ehelyett egy normál dia egy layout slide-ot használ, és ez az layout slide egy master slide-hez tartozik.
A hierarchia:
- Slide master – meghatározza a közös tervezést és a témát.
- Layout slide – meghatároz egy adott elrendezést a helyőrzőkkel és a szintű formázással.
- Normal slide – tartalmazza a tényleges prezentációs tartalmat, és egy layout slide-ot használ.

Az Aspose.Slides-ban egy slide master-t a MasterSlide osztály képviseli. A prezentációban lévő összes mester dia elérhető a Presentation.getMasters metódussal, amely egy MasterSlideCollection objektumot ad vissza.
Inheritance
Ha ugyanaz a tulajdonság több szinten is definiálva van, a specifikusabb szint nyer. Például, ha egy master slide és egy layout slide is meghatároz egy háttérszínt, akkor az arra az elrendezésre épülő diák az elrendezés háttérszínét használják. További információért az elrendezési diákról lásd a Apply or Change Slide Layouts oldalt.Slide Masterok elérése
PowerPointban a Slide Master nézetet a View > Slide Master menüből nyithatod meg.

Az Aspose.Slides-ban a getMasters metódust kell használni a master diák eléréséhez:
$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();
}
A normál dia által használt master diát is lekérheted az elrendezésén keresztül:
$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();
}
A Slide Master tartalma
Az master slide egy diához hasonló objektum. Kiterjeszti a BaseSlide osztályt, így sok olyan diatulajdonságot is elérhetővé tesz, amelyeket a normál és layout diák használnak. A master-specifikus tagok a MasterSlide API oldalon vannak felsorolva.
A gyakran használt master slide tagok közé tartoznak:
| Member | Purpose |
|---|---|
getBackground |
Beállítja a master szintű dia hátterét. |
getShapes |
Tárolja a master-re helyezett alakzatokat, például logókat, képkockákat és közös szöveget. |
getLayoutSlides |
Tárolja a master-hez tartozó elrendezési diákat. |
getThemeManager |
Hozzáférést biztosít a master téma API-khoz. |
getHeaderFooterManager |
Kezeli a fejlécet, láblécet, dátumot és diaszámot a master és gyermek elrendezései számára. |
getDependingSlides |
Visszaadja azokat a normál diákokat, amelyek a master-re hivatkoznak elrendezéseiken keresztül. |
Kép hozzáadása a Slide Masterhez
A master slide-hez kép hozzáadásával az a diákon megjelenik, amely az adott master elrendezéseit használja. Ez hasznos logók, vízjelek, díszszalagok és más ismétlődő vizuális elemek esetén.
A következő példa egy logót ad az első master diához:
$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();
}
További információkért a képkockákról lásd a Picture Frame oldalt.
Helyőrzőkkel való munka
A helyőrzőket általában az elrendezési diák definiálják. A master slide biztosítja a közös stílust és témát, amelyet az elrendezések örökölnek, míg minden elrendezés eldönti, hogy mely helyőrzők állnak rendelkezésre és hol helyezkednek el.
PowerPointban a helyőrző parancsok a Slide Master nézetben érhetők el.

Új helyőrzők hozzáadásához az Aspose.Slides-ban dolgozz a master-hez tartozó layout slide-dal:
$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();
}
Formázhatsz már létező helyőrző alakzatokat is egy master slide-on. A következő példa megtalálja a cím helyőrzőt és lineáris gradienst alkalmaz rá:
$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;
}

További helyőrző és szövegformázási lehetőségekért lásd a Set Prompt Text in Placeholder és a Text Formatting oldalakat.
Slide Master háttér módosítása
A master háttér öröklődik az elrendezések és diák által, amelyek nem írják felül. A következő példa egy szilárd háttérszínt állít be az első master diára:
$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();
}
Kapcsolódó témákért lásd a Presentation Background és a Presentation Theme oldalakat.
Slide Master klónozása egy másik prezentációba
Használd a addClone metódust a MasterSlideCollection‑ból, hogy egy master slide-ot másik prezentációba másolj. A másolt master ezután használható az elrendezések és diák számára a célprezentációban.
$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();
}
Ha a normál diákot a masterrel együtt kell klónozni, lásd a Clone Slides oldalt.
Több Slide Master hozzáadása
Egy prezentáció több master diát is tartalmazhat. Ez hasznos, ha a különböző szakaszok különböző márkázást, oldalstruktúrát vagy téma beállításokat igényelnek.

A következő példa klónozza az alapértelmezett master-t, más háttérrel látja el a klónt, létrehoz egy elrendezést a klónozott master alatt, és egy új diát ad hozzá az elrendezés alapján:
$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();
}
Slide Masterok összehasonlítása
A master slide-okat össze lehet hasonlítani a BaseSlide‑ből örökölt equals metódussal. Az összehasonlítás ellenőrzi a struktúrát és a statikus tartalmat, mint például az alakzatok, szöveg, formázás, animációk és egyéb dia beállítások. Nem hasonlítja össze az egyedi azonosítókat, mint a dia ID-k, vagy a dinamikus helyőrző értékeket, mint a jelenlegi dátum.
$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();
}
További információért lásd a Compare Presentation Slides oldalt.
Slide Master nézet beállítása alapértelmezett nézetként
Használd a setLastView metódust a ViewProperties‑on, hogy szabályozd, melyik nézetet nyissa meg a PowerPoint először. A következő példa a prezentációt Slide Master nézetben nyitja meg:
$presentation = new Presentation("presentation.pptx");
try {
$presentation->getViewProperties()->setLastView(ViewType::SlideMasterView);
$presentation->save("presentation-master-view.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
További nézetbeállításokért lásd a Save Presentation oldalt.
Használaton kívüli Master diák eltávolítása
Egyes prezentációk tartalmazhatnak olyan master diákokat, amelyeket már egyetlen normál dia sem használ. A használaton kívüli master diák eltávolítása csökkentheti a fájlméretet és egyszerűsítheti a sablon karbantartását.
Használd a removeUnused metódust a MasterSlideCollection‑ból, hogy eltávolítsd a használaton kívüli master‑eket a getMasters gyűjteményből:
$presentation = new Presentation("presentation.pptx");
try {
$presentation->getMasters()->removeUnused(true);
$presentation->save("presentation-clean.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Alacsony kódszintű removeUnusedMasterSlides metódust is használhatsz a Compress osztályból:
$presentation = new Presentation("presentation.pptx");
try {
Compress::removeUnusedMasterSlides($presentation);
$presentation->save("presentation-clean.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
FAQ
Mi a különbség a slide master és a layout slide között?
Az slide master meghatározza a közös tervezési beállításokat, mint például a téma, háttér, közös alakzatok és szövegstílusok. A layout slide egy master slide-hoz tartozik, és egy adott helyőrző elrendezést definiál. A normál dia egy layout slide-ot használ, így mind az elrendezés, mind a master beállításait örökli.
Tartalmazhat egy prezentáció több slide master-t?
Igen. Egy prezentáció több slide master-t is tartalmazhat. Használj több master-t, ha a különböző szakaszoknak eltérő vizuális rendszerekre vagy márkázásra van szükségük.
Helyőrzőket a master slide-hoz vagy a layout slide-hoz kellene hozzáadni?
A legtöbb esetben a helyőrzőket a layout slide-okra kell tenni. A közös vizuális elemeket és a közös formázást a master slide-ra helyezzük, majd a tartalomhelyőrzőket azokra a layout slide-okra, amelyeket a normál diák használnak.
Törölhetek egy még használatban lévő master slide-ot?
Nem. Egy olyan master slide, amelynek függő diái vannak, nem távolítható el biztonságosan közvetlenül. Először mozgasd át ezeket a diát egy másik master alatti elrendezésekbe, vagy használd a használaton kívüli master törlésének módszerét, amely csak a nem használt master diákat távolítja el.