Tillämpa eller ändra bildlayouter i JavaScript

Översikt

En bildlayout definierar positionerna och formateringen av platshållare såsom titlar, text, bilder, diagram och tabeller. Att tillämpa en layout ger bilder en konsekvent struktur samtidigt som varje bild kan innehålla sitt eget innehåll.

De vanligaste layouterna inkluderar:

  • Titelbild: Innehåller platshållare för titel och undertitel.
  • Titel och Innehåll: Innehåller en titelplatshållare och en allmän innehållsplatshållare.
  • Tom: Innehåller inga innehållsplatshållare och är användbar när varje form placeras manuellt.

Förstå Layoutarv

En presentation har tre relaterade nivåer:

  1. En master slide definierar temat, delad formatering, bakgrunder och gemensamma objekt.
  2. En layout slide tillhör en master och definierar en särskild ordning av platshållare.
  3. En normal slide använder en layout och lagrar innehållet som skrivits in 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 skrivits in i dessa platshållare tillhör den normala bilden.

Lägg till erforderliga platshållare i en layout innan du skapar bilder från den. Att lägga till en ny platshållare i en layout senare 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 på 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 först dess beroende bilder till en annan layout, eller ta bara bort oanvända layouter.

För mer information om top‑nivån i denna hierarki, se Slide Master.

För att dölja ärvda logotyper eller dekorativa masterformer på en bild eller via en delad layout, se Control the Visibility of Master Graphics. Exemplet jämför två bilder som använder samma master.

Välj och tillämpa en bildlayout

Använd ett SlideLayoutType‑värde 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 styr källmallen.

Följande exempel söker efter Title and Content på den första masteren. Om den layouten saknas faller den avsiktligt tillbaka till Blank. Den andra null‑kontrollen är nödvändig eftersom en presentation kan innehålla endast anpassade layouter. Den valda layouten appliceras sedan på den första normala bilden via metoden Slide.setLayoutSlide.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

let presentation = new aspose.slides.Presentation("input.pptx");
try {
    let layoutSlides = presentation.getMasters().get_Item(0).getLayoutSlides();
    let titleAndObjectLayoutType = java.newByte(aspose.slides.SlideLayoutType.TitleAndObject);
    let blankLayoutType = java.newByte(aspose.slides.SlideLayoutType.Blank);
    let targetLayout = layoutSlides.getByType(titleAndObjectLayoutType);

    if (targetLayout === null) {
        targetLayout = layoutSlides.getByType(blankLayoutType);
    }

    if (targetLayout === null) {
        throw new Error("The first master does not contain a suitable layout slide.");
    }

    presentation.getSlides().get_Item(0).setLayoutSlide(targetLayout);
    presentation.save("output-with-new-layout.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Att ändra en bilds layout tar inte bort vanliga former som lagts till direkt på bilden. Däremot kan platshållarpositioner, ärvd formatering och motsvarande mellan befintliga platshållare och den nya layouten förändras, så inspektera resultatet när du byter mellan väsentligt olika layouter.

Lägg till en layoutbild

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.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

let presentation = new aspose.slides.Presentation("input.pptx");
try {
    let masterSlide = presentation.getMasters().get_Item(0);
    let titleAndObjectLayoutType = java.newByte(aspose.slides.SlideLayoutType.TitleAndObject);
    let reportLayout = masterSlide.getLayoutSlides().add(titleAndObjectLayoutType, "Report Title and Content");
    presentation.getSlides().addEmptySlide(reportLayout);

    presentation.save("output-with-report-layout.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Lägg bara till en layout när mallen verkligen behöver ytterligare en återanvändbar struktur. Om en lämplig layout redan finns, välj och återanvänd den istället för att skapa en dubblett.

Lägg till platshållare i en layoutbild

Metoden LayoutSlide.getPlaceholderManager ger en LayoutPlaceholderManager för att lägga till platshållarformer i en layout.

PowerPoint‑platshållare LayoutPlaceholderManager-metod
Innehåll addContentPlaceholder(x, y, width, height)
Innehåll (Vertikal) addVerticalContentPlaceholder(x, y, width, height)
Text addTextPlaceholder(x, y, width, height)
Text (Vertikal) addVerticalTextPlaceholder(x, y, width, height)
Bild addPicturePlaceholder(x, y, width, height)
Diagram addChartPlaceholder(x, y, width, height)
Tabell addTablePlaceholder(x, y, width, height)
SmartArt addSmartArtPlaceholder(x, y, width, height)
Media addMediaPlaceholder(x, y, width, height)
Onlinebild addOnlineImagePlaceholder(x, y, width, height)

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.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

let presentation = new aspose.slides.Presentation();
try {
    let blankLayoutType = java.newByte(aspose.slides.SlideLayoutType.Blank);
    let blankLayout = presentation.getLayoutSlides().getByType(blankLayoutType);

    if (blankLayout === null) {
        throw new Error("The presentation does not contain a Blank layout slide.");
    }

    let 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", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Resultatet:

Platshållarna på layoutbilden

Ta bort oanvända layoutbilder

Använd metoden Compress.removeUnusedLayoutSlides för att ta bort layouter som ingen normal bild refererar till. Metoden lämnar intakta de layouter som fortfarande är i bruk.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

let presentation = new aspose.slides.Presentation("input.pptx");
try {
    aspose.slides.Compress.removeUnusedLayoutSlides(presentation);
    presentation.save("output-without-unused-layouts.pptx", aspose.slides.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 resulterar i ett PptxEditException.

Styr fotnotssynlighet på en layoutbild

En layout har egna fotnoter, bildnummer‑ och datum‑tid‑platshållare. Använd metoden LayoutSlide.getHeaderFooterManager för att kontrollera dessa platshållare för en specifik layout. Detta är användbart när t.ex. innehållslayouter skall visa fotnoter men titel‑layouter inte.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

let presentation = new aspose.slides.Presentation("input.pptx");
try {
    let titleAndObjectLayoutType = java.newByte(aspose.slides.SlideLayoutType.TitleAndObject);
    let blankLayoutType = java.newByte(aspose.slides.SlideLayoutType.Blank);
    let layoutSlide = presentation.getLayoutSlides().getByType(titleAndObjectLayoutType);

    if (layoutSlide === null) {
        layoutSlide = presentation.getLayoutSlides().getByType(blankLayoutType);
    }

    if (layoutSlide === null) {
        throw new Error("The presentation does not contain a suitable layout slide.");
    }

    let 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", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Styr fotnotssynlighet på en master och dess underliggande layouter

För att tillämpa konsekventa fotnotinställningar över en masterhierarki, använd metoden MasterSlide.getHeaderFooterManager. Spridningsmetoderna i MasterSlideHeaderFooterManager verkar på masteren samt dess beroende layout‑bilder och normala bilder; de riktar sig inte enbart mot en enskild normal bild.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

let presentation = new aspose.slides.Presentation("input.pptx");
try {
    let 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", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Vanliga frågor

Vad är skillnaden mellan en master slide och en layout slide?

En master slide definierar presentationens tema och delade formateringar. En layout slide tillhör en master och definierar en återanvändbar ordning av platshållare. Normala bilder använder dessa layouter och lagrar bildspecifikt innehåll.

Kan jag kopiera en layout slide från en presentation till en annan?

Ja. Lägg till en kopia i destinationssamlingen med metoden addClone. När du kopierar mellan presentationer, verifiera även teckensnitt, teman, bilder och andra resurser som används av käll‑layouten.

Vad händer när jag ändrar en layout som redan används?

Beroende bilder ärver layout‑ändringarna om de inte lokalt åsidosätter den påverkade formateringen eller objekten. Platshållar‑geometri 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 används?

Aspose.Slides kastar ett PptxEditException. Tilldela först de beroende bilderna, eller använd removeUnusedLayoutSlides för att enbart ta bort orefererade layouter.