Dia szekciók kezelése bemutatókban JavaScript‑tel

Bevezetés

A szekciók a soron következő diákot névvel ellátott csoportokba szervezik anélkül, hogy megváltoztatnák a diákat. Az Aspose.Slides for Node.js via Java segítségével létrehozhat, átrendezhet, átnevezhet, ellenőrizhet és eltávolíthat szekciókat a Presentation.getSections metódussal.

A szekciók különösen hasznosak, ha:

  • egy nagy bemutatót logikai témákra vagy fejezetekre kell felosztani;
  • a diák különböző csoportjait különböző közreműködőknek kell hozzárendelni;
  • a diákat csoportként kell feldolgozni, áthelyezni vagy egyesíteni.

Válasszon tömör szekcióneveket, amelyek leírják a csoportosított diák célját. Mivel a szekciók a bemutató struktúrájának részei, használja a szekció API-kat a tagság meghatározásához a diák pozíciója helyett.

Szekciók létrehozása és kezelése

Használja a SectionCollection.addSection metódust egy szekció létrehozásához, amelynek megadja a nevét és a kezdő diát. Az Aspose.Slides a bemutató aktuális szekciós struktúrája alapján határozza meg, hogy mely diák tartoznak a szekcióhoz.

A ugyanazon SectionCollection lehetővé teszi továbbá, hogy:

A következő példa két szekciót hoz létre, az egyiket áthelyezi, eltávolítja a diáiával együtt, és egy üres szekciót fűz hozzá:

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();
}

Ezek után a bemutató tartalmazza a Introduction szekciót a diáival, valamint egy üres Appendix szekciót. A Results szekció és a diái el lettek távolítva.

Szekciók átnevezése

Egy szekció átnevezéséhez hívja meg a Section.setName metódust. A szekció diái és pozíciója változatlan marad.

A következő példa egy szekciót hoz létre és megváltoztatja a nevét:

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();
}

Diák lekérdezése szekciókból

A Presentation.getSections metódus egy SectionCollection objektumot ad vissza, amelyet index alapján érhet el. Minden Section esetén hívja meg a Section.getSlidesListOfSection metódust, hogy megkapja a jelenleg hozzá tartozó diák listáját. A metódus egy SectionSlideCollection objektumot ad vissza, amely számlálót és indexelt hozzáférést biztosít.

A következő példa két feltöltött szekciót és egy üres szekciót hoz létre, majd kiírja minden szekció nevét, azonosítóját, kezdő diáját, a diák számát és a dia sorszámokat. A SectionSlideCollection.get_Item metódust használja az első dia és a kollekció minden egyes diájának olvasásához. Az üres szekció esetén a visszaadott kollekció mérete nulla, az indexelt hozzáférés kihagyásra kerül, és a ciklus nem hajt végre műveletet.

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();
}

A szekció tagságát a bemutató szekciós struktúrája határozza meg. Ne számolja ki kézzel egy szekció tartományát a Section.getStartedFromSlide, dia indexek és a következő szekció kezdő diája alapján.

A struktúrapróbálások megváltoztathatják egy szekcióhoz tartozó diák listáját és azok sorszámait is. Ez magában foglalja a diák átrendezését, egy dia klónozását egy szekcióba, egy szekció és diái áthelyezését, diák eltávolítását és szekciók törlését. A következő példa minden ilyen változtatás után meghívja a Section.getSlidesListOfSection metódust, ahelyett, hogy a szekció korábbi határait feltételezné.

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();
}

Hívja meg újra a Section.getSlidesListOfSection metódust, amikor diákat vagy szekciókat átrendeznek, klónoznak, áthelyeznek vagy eltávolítanak. Ez biztosítja, hogy a további feldolgozás a jelenlegi bemutató struktúrához igazodjon.

A PPT (PowerPoint 97–2003) formátum nem őrzi meg a szekció metaadatokat. Használja ezt a munkafolyamatot olyan formátummal, amely támogatja a szekciókat, például PPTX; a PPT formátumba konvertálás eltávolítja a későbbi iterációhoz szükséges szekciós struktúrát.

GYIK

Megmaradnak a szekciók, ha PPT (PowerPoint 97–2003) formátumba mentjük?

Nem. A PPT formátum nem támogatja a szekció metaadatokat, ezért a szekciócsoportosítás elveszik, ha .ppt formátumba ment.

Lehet egy egész szekciót „elrejteni”?

Nem. A szekciónak nincs láthatósági állapota. A tartalmának elrejtéséhez hívja meg a Slide.setHidden metódust a szekció minden egyes diájára.

Hogyan találhatom meg azt a szekciót, amelyik egy adott diát tartalmaz?

A Presentation.getSections által visszaadott kollekció minden szekciójához férjen hozzá, hívja meg a Section.getSlidesListOfSection metódust az egyes szekciókon, és hasonlítsa össze a visszaadott diák listáját a keresett diával. Nem üres szekció esetén a Section.getStartedFromSlide visszaadja az első diát; üres szekció esetén null-t ad vissza.