Tillämpa eller ändra bildlayouter i PHP
Översikt
En bildlayout definierar positionerna och formateringen av platshållare såsom titlar, text, bilder, diagram och tabeller. Genom att använda en layout får bilder en konsekvent struktur samtidigt som varje bild kan innehålla sitt eget innehåll.
De vanligaste layouterna är:
- Title Slide: Innehåller platshållare för titel och undertitel.
- Title and Content: Innehåller en platshållare för titel och en allmän innehållsplats.
- Blank: Innehåller inga innehållsplatshållare och är användbar när varje form placeras manuellt.
Förstå ärvning av layout
En presentation har tre relaterade nivåer:
- En master‑bild definierar tema, delad formatering, bakgrunder och gemensamma objekt.
- En layout‑bild tillhör en master och definierar en specifik placering av platshållare.
- En normal‑bild använder en layout och lagrar innehållet som anges för den bilden.
En normal‑bild ärver tema och formatering från sin layout, och layouten ärver från sin master. Ett värde som sätts direkt på en normal‑bild åsidosätter det ärvda värdet på den nivån. När en normal‑bild skapas genereras dess platshållarformer från den valda layouten, medan innehållet som skrivs in i dessa platshållare tillhör den normala bilden.
Lägg till nödvändiga platshållare i en layout innan du skapar bilder från den. Att senare lägga till en ny platshållare i en layout lägger inte automatiskt till motsvarande platshållarform i befintliga normala bilder.
Detta förhållande har två viktiga konsekvenser:
- Att ändra ärvd formatering eller befintlig platshållargeometri i en layout kan uppdatera varje bild som beror på den. Innan du redigerar en layout som redan används, inspektera dess beroende bilder och granska den resulterande presentationen.
- En layout som fortfarande används av en bild kan inte tas bort. Tilldela dess beroende bilder till en annan layout först, eller ta bara bort oanvända layouter.
För mer information om den översta nivån i hierarkin, se Bildmaster.
Välj och tillämpa en bildlayout
Använd en layouttyp när presentationen följer standarddefinitioner för PowerPoint‑layouter. Layoutnamn kan redigeras av användaren och kan lokalanpassas, så namnbaserad urval är mindre pålitligt om du inte kontrollerar källmallen.
Följande exempel letar efter Title and Content på den första master‑bilden. Om den layouten inte finns, faller den medvetet tillbaka till Blank. Den andra null‑kontrollen är nödvändig eftersom en presentation kan innehålla endast anpassade layouter. Den valda layouten tillämpas sedan på den första normala bilden via metoden Slide.setLayoutSlide.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SlideLayoutType;
$presentation = new Presentation("input.pptx");
try {
$layoutSlides = $presentation->getMasters()->get_Item(0)->getLayoutSlides();
$targetLayout = $layoutSlides->getByType(SlideLayoutType::TitleAndObject);
if (java_is_null($targetLayout)) {
$targetLayout = $layoutSlides->getByType(SlideLayoutType::Blank);
}
if (java_is_null($targetLayout)) {
throw new \RuntimeException("The first master does not contain a suitable layout slide.");
}
$presentation->getSlides()->get_Item(0)->setLayoutSlide($targetLayout);
$presentation->save("output-with-new-layout.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Att ändra en bilds layout tar inte bort vanliga former som lagts till direkt på bilden. Dock kan platshållarpositioner, ärvd formatering och motsvarigheten mellan befintliga platshållare och den nya layouten ändras, så inspektera resultatet när du byter mellan väsentligt olika layouter.
Lägg till en layout‑bild
Urval och skapande är separata operationer. Det föregående exemplet väljer en befintlig layout; det skapar ingen ny. För att skapa en layout, anropa metoden MasterLayoutSlideCollection.add på mål‑masterens layoutsamling.
Följande exempel lägger alltid till en ny Title and Content‑layout med namnet Report Title and Content, och lägger sedan till en normal bild baserad på den. Layoutnamn måste vara unika inom samlingen.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SlideLayoutType;
$presentation = new Presentation("input.pptx");
try {
$masterSlide = $presentation->getMasters()->get_Item(0);
$reportLayout = $masterSlide->getLayoutSlides()->add(SlideLayoutType::TitleAndObject, "Report Title and Content");
$presentation->getSlides()->addEmptySlide($reportLayout);
$presentation->save("output-with-report-layout.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Lägg bara till en layout när mallen verkligen behöver en ytterligare återanvändbar struktur. Om en lämplig layout redan finns, välj och återanvänd den i stället för att skapa en duplikat.
Lägg till platshållare i en layout‑bild
Metoden LayoutSlide.getPlaceholderManager tillhandahåller en LayoutPlaceholderManager för att lägga till platshållarformer i en layout.
Följande exempel verifierar att Blank‑layouten finns, lägger till fyra platshållare i den och skapar sedan en normal bild som använder den modifierade layouten. Ordningen är avsiktlig: platshållarna läggs till innan den normala bilden skapas, så att Aspose.Slides kan generera motsvarande platshållarformer på den bilden.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SlideLayoutType;
$presentation = new Presentation();
try {
$blankLayout = $presentation->getLayoutSlides()->getByType(SlideLayoutType::Blank);
if (java_is_null($blankLayout)) {
throw new \RuntimeException("The presentation does not contain a Blank layout slide.");
}
$placeholderManager = $blankLayout->getPlaceholderManager();
$placeholderManager->addContentPlaceholder(20, 20, 310, 270);
$placeholderManager->addVerticalTextPlaceholder(350, 20, 350, 270);
$placeholderManager->addChartPlaceholder(20, 310, 310, 180);
$placeholderManager->addTablePlaceholder(350, 310, 350, 180);
$presentation->getSlides()->addEmptySlide($blankLayout);
$presentation->save("output-with-placeholders.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Resultatet:

Varning
Att ändra ärvd formatering eller geometrin för befintliga layout‑platshållare kan påverka beroende bilder. En nyligen tillagd layout‑platshållare fylls inte retroaktivt i befintliga normala bilder. Testa layout‑ändringar på en kopia av presentationen och inspektera varje beroende bild.Ta bort oanvända layout‑bilder
Använd metoden Compress.removeUnusedLayoutSlides för att ta bort layouter som ingen normal bild refererar till. Metoden låter intakta de layouter som fortfarande är i bruk.
use aspose\slides\Compress;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("input.pptx");
try {
Compress::removeUnusedLayoutSlides($presentation);
$presentation->save("output-without-unused-layouts.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
För att ta bort en specifik layout, använd först dess hasDependingSlides eller getDependingSlides‑metod. Tilldela eventuella beroende bilder innan du anropar LayoutSlide.remove. Att försöka ta bort en layout som används kastar en PptxEditException.
Styr synlighet för sidfot på en layout‑bild
En layout har egna sidfot-, bildnummer‑ och datum‑tid‑platshållare. Använd metoden LayoutSlide.getHeaderFooterManager för att kontrollera dessa platshållare för en layout. Detta är användbart när till exempel innehållslayouter ska visa sidfot men titel‑layouter inte ska göra det.
Följande exempel väljer en layout på ett säkert sätt och gör dess sidfotelement synliga:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SlideLayoutType;
$presentation = new Presentation("input.pptx");
try {
$layoutSlide = $presentation->getLayoutSlides()->getByType(SlideLayoutType::TitleAndObject);
if (java_is_null($layoutSlide)) {
$layoutSlide = $presentation->getLayoutSlides()->getByType(SlideLayoutType::Blank);
}
if (java_is_null($layoutSlide)) {
throw new \RuntimeException("The presentation does not contain a suitable layout slide.");
}
$headerFooterManager = $layoutSlide->getHeaderFooterManager();
$headerFooterManager->setFooterVisibility(true);
$headerFooterManager->setSlideNumberVisibility(true);
$headerFooterManager->setDateTimeVisibility(true);
$headerFooterManager->setFooterText("Footer text");
$headerFooterManager->setDateTimeText("Date and time text");
$presentation->save("output-with-layout-footers.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Styr synlighet för sidfot på en master och dess underliggande layouter
För att tillämpa enhetliga sidfotinställningar över en master‑hierarki, använd metoden MasterSlide.getHeaderFooterManager. Spridningsmetoderna i MasterSlideHeaderFooterManager verkar på master‑bilden samt dess beroende layout‑bilder och normala bilder; de riktar sig inte bara mot en enskild normal bild.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("input.pptx");
try {
$headerFooterManager = $presentation->getMasters()->get_Item(0)->getHeaderFooterManager();
$headerFooterManager->setFooterAndChildFootersVisibility(true);
$headerFooterManager->setSlideNumberAndChildSlideNumbersVisibility(true);
$headerFooterManager->setDateTimeAndChildDateTimesVisibility(true);
$headerFooterManager->setFooterAndChildFootersText("Footer text");
$headerFooterManager->setDateTimeAndChildDateTimesText("Date and time text");
$presentation->save("output-with-master-footers.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
FAQ
Vad är skillnaden mellan en master‑bild och en layout‑bild?
En master‑bild definierar presentationens tema och delad formatering. En layout‑bild tillhör en master och definierar en återanvändbar placering av platshållare. Normala bilder använder dessa layouter och lagrar bildspecifikt innehåll.
Kan jag kopiera en layout‑bild från en presentation till en annan?
Ja. Lägg till en kopia i destinationssamlingen med metoden addClone. Vid kopiering mellan presentationer, verifiera också teckensnitt, teman, bilder och andra resurser som används av käll‑layouten.
Vad händer när jag modifierar en layout som redan används?
Beroende bilder ärver layout‑ändringarna såvida de inte har åsidosatt den påverkade formateringen eller objekten lokalt. Platshållargeometri och ärvd stil kan därför förändras på många bilder samtidigt. Använd getDependingSlides för att identifiera de påverkade bilderna innan du redigerar layouten.
Vad händer om jag tar bort en layout som fortfarande är i bruk?
Aspose.Slides kastar en PptxEditException. Tilldela de beroende bilderna först, eller använd removeUnusedLayoutSlides för att enbart ta bort referenslösa layouter.









