Beheer dia‑secties in presentaties met JavaScript
Introductie
Secties organiseren opeenvolgende dia’s in benoemde groepen zonder de inhoud van de dia’s te wijzigen. Met Aspose.Slides voor Node.js via Java kun je secties aanmaken, herschikken, hernoemen, inspecteren en verwijderen via de Presentation.getSections‑methode.
Secties zijn vooral nuttig wanneer:
- een grote presentatie moet worden opgesplitst in logische onderwerpen of hoofdstukken;
- verschillende groepen dia’s worden toegewezen aan verschillende medewerkers;
- dia’s als groepen moeten worden verwerkt, verplaatst of samengevoegd.
Kies beknopte sectienaam die het doel van de gegroepeerde dia’s beschrijft. Omdat secties deel uitmaken van de presentatiestructuur, gebruik je de sectie‑API’s om lidmaatschap te bepalen in plaats van dit af te leiden uit de positie van de dia’s.
Secties aanmaken en beheren
Gebruik SectionCollection.addSection om een sectie aan te maken door de naam en de startdia op te geven. Aspose.Slides bepaalt welke dia’s tot de sectie behoren op basis van de huidige sectiestructuur van de presentatie.
Dezelfde SectionCollection biedt tevens de mogelijkheid om:
- een sectie samen met de dia’s te verplaatsen met SectionCollection.reorderSectionWithSlides;
- alleen de sectiedefinitie te verwijderen met SectionCollection.removeSection, waarbij de dia’s behouden blijven;
- een sectie en de bijbehorende dia’s te verwijderen met SectionCollection.removeSectionWithSlides;
- een lege sectie aan het einde toe te voegen met SectionCollection.appendEmptySection.
Het volgende voorbeeld maakt twee secties, verplaatst er één, verwijdert deze samen met de dia’s en voegt een lege sectie toe:
const aspose = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation();
try {
const titleSlide = presentation.getSlides().get_Item(0);
const layoutSlide = presentation.getLayoutSlides().get_Item(0);
presentation.getSlides().addEmptySlide(layoutSlide);
const resultsSlide = presentation.getSlides().addEmptySlide(layoutSlide);
presentation.getSlides().addEmptySlide(layoutSlide);
presentation.getSections().addSection("Introduction", titleSlide);
const resultsSection = presentation.getSections().addSection("Results", resultsSlide);
presentation.getSections().reorderSectionWithSlides(resultsSection, 0);
presentation.getSections().removeSectionWithSlides(resultsSection);
presentation.getSections().appendEmptySection("Appendix");
} finally {
presentation.dispose();
}
Na deze bewerkingen bevat de presentatie de Introduction‑sectie met de bijbehorende dia’s en een lege Appendix‑sectie. De Results‑sectie en de dia’s daarvan zijn verwijderd.
Secties hernoemen
Om een sectie te hernoemen, roep je de Section.setName‑methode aan. De dia’s en de positie van de sectie blijven ongewijzigd.
Het volgende voorbeeld maakt een sectie aan en wijzigt de naam:
const aspose = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const section = presentation.getSections().addSection("Overview", slide);
section.setName("Introduction");
} finally {
presentation.dispose();
}
Dia’s uit secties ophalen
De Presentation.getSections‑methode retourneert een SectionCollection die je kunt benaderen op index. Voor elke Section roep je Section.getSlidesListOfSection aan om de dia’s te verkrijgen die momenteel tot die sectie behoren. De methode retourneert een SectionSlideCollection, die een teller en indextoegang biedt.
Het volgende voorbeeld maakt twee gevulde secties en één lege sectie, en print vervolgens de name, identifier, starting slide, het aantal dia’s en de dia‑nummers van elke sectie. Het gebruikt SectionSlideCollection.get_Item om zowel de eerste dia als elke dia in de collectie te lezen. Voor de lege sectie heeft de geretourneerde collectie een grootte van nul, wordt indextoegang overgeslagen en voert de lus geen bewerkingen uit.
const aspose = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation();
try {
const firstSlide = presentation.getSlides().get_Item(0);
const layoutSlide = presentation.getLayoutSlides().get_Item(0);
presentation.getSlides().addEmptySlide(layoutSlide);
const thirdSlide = presentation.getSlides().addEmptySlide(layoutSlide);
presentation.getSections().addSection("Introduction", firstSlide);
presentation.getSections().addSection("Details", thirdSlide);
presentation.getSections().appendEmptySection("Appendix");
const sections = presentation.getSections();
for (let sectionIndex = 0; sectionIndex < sections.size(); sectionIndex++) {
const section = sections.get_Item(sectionIndex);
const sectionSlides = section.getSlidesListOfSection();
const startingSlideObject = section.getStartedFromSlide();
const startingSlide = startingSlideObject === null ? "none" : startingSlideObject.getSlideNumber().toString();
console.log("Section: " + section.getName());
console.log("ID: " + section.getSectionId().toString());
console.log("Starting slide: " + startingSlide);
console.log("Slide count: " + sectionSlides.size());
if (sectionSlides.size() > 0) {
console.log("First slide via get_Item: " + sectionSlides.get_Item(0).getSlideNumber());
}
let slideNumbers = "Slide numbers:";
for (let slideIndex = 0; slideIndex < sectionSlides.size(); slideIndex++) {
slideNumbers += " " + sectionSlides.get_Item(slideIndex).getSlideNumber();
}
console.log(slideNumbers);
}
} finally {
presentation.dispose();
}
Sectielidmaatschap wordt bepaald door de sectiestructuur van de presentatie. Bereken een sectiebereik niet handmatig op basis van Section.getStartedFromSlide, dia‑indexen en de startdia van de volgende sectie.
Structurele bewerkingen kunnen zowel de dia’s die voor een sectie worden geretourneerd als hun dia‑nummers wijzigen. Dit omvat het herschikken van dia’s, een dia klonen naar een sectie, een sectie verplaatsen samen met de dia’s, dia’s verwijderen en secties verwijderen. Het volgende voorbeeld roept Section.getSlidesListOfSection aan na elke dergelijke wijziging in plaats van aannames te behouden over de vroegere grenzen van de sectie.
const aspose = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation();
try {
const firstSlide = presentation.getSlides().get_Item(0);
const layoutSlide = presentation.getLayoutSlides().get_Item(0);
presentation.getSlides().addEmptySlide(layoutSlide);
const thirdSlide = presentation.getSlides().addEmptySlide(layoutSlide);
presentation.getSlides().addEmptySlide(layoutSlide);
const firstSection = presentation.getSections().addSection("First", firstSlide);
const secondSection = presentation.getSections().addSection("Second", thirdSlide);
const printSectionSlides = (label, section) => {
const sectionSlides = section.getSlidesListOfSection();
let output = label + " (" + sectionSlides.size() + " slides):";
for (let slideIndex = 0; slideIndex < sectionSlides.size(); slideIndex++) {
output += " " + sectionSlides.get_Item(slideIndex).getSlideNumber();
}
console.log(output);
};
printSectionSlides("Initially", firstSection);
const slidesBeforeClone = firstSection.getSlidesListOfSection();
presentation.getSlides().addClone(slidesBeforeClone.get_Item(0), firstSection);
printSectionSlides("After cloning into the section", firstSection);
const slidesBeforeReorder = firstSection.getSlidesListOfSection();
const firstSectionPosition = slidesBeforeReorder.get_Item(0).getSlideNumber() - 1;
const lastSlideInSection = slidesBeforeReorder.get_Item(slidesBeforeReorder.size() - 1);
presentation.getSlides().reorder(firstSectionPosition, lastSlideInSection);
printSectionSlides("After reordering slides", firstSection);
presentation.getSections().reorderSectionWithSlides(firstSection, 1);
printSectionSlides("After moving the section", firstSection);
const slidesBeforeRemoval = firstSection.getSlidesListOfSection();
presentation.getSlides().remove(slidesBeforeRemoval.get_Item(0));
printSectionSlides("After removing a slide", firstSection);
presentation.getSections().removeSectionWithSlides(secondSection);
const remainingSections = presentation.getSections();
for (let sectionIndex = 0; sectionIndex < remainingSections.size(); sectionIndex++) {
printSectionSlides("Remaining section", remainingSections.get_Item(sectionIndex));
}
} finally {
presentation.dispose();
}
Roep Section.getSlidesListOfSection opnieuw aan wanneer dia’s of secties worden herschikt, gekloond, verplaatst of verwijderd. Hierdoor blijft de verdere verwerking in lijn met de actuele presentatiestructuur.
Het PPT‑formaat (PowerPoint 97–2003) behoudt geen sectiemetagegevens. Gebruik deze werkwijze met een formaat dat secties ondersteunt, zoals PPTX; conversie naar PPT verwijdert de sectiestructuur die nodig is voor latere iteratie.
FAQ
Worden secties behouden bij het opslaan naar het PPT‑formaat (PowerPoint 97–2003)?
Nee. Het PPT‑formaat ondersteunt geen sectiemetagegevens, waardoor de sectiegroepering verloren gaat bij het opslaan als .ppt.
Kan een hele sectie “verborgen” worden?
Nee. Een sectie heeft geen zichtbaarheidsstatus. Om de inhoud te verbergen, roep je Slide.setHidden aan voor elke dia in de sectie.
Hoe vind ik de sectie die een bepaalde dia bevat?
Door elke sectie in de collectie die wordt geretourneerd door Presentation.getSections te doorlopen, voor elke sectie Section.getSlidesListOfSection aan te roepen en de geretourneerde dia’s te vergelijken met de doel‑dia. Voor een niet‑lege sectie geeft Section.getStartedFromSlide de eerste dia terug; voor een lege sectie retourneert het null.