Python segítségével diák szakaszainak kezelése előadásokban

Bevezetés

A szakaszok egymás után következő diákat nevezett csoportokba szerveznek a diatartalom módosítása nélkül. Az Aspose.Slides for Python via .NET segítségével szakaszokat hozhat létre, átrendezhet, átnevezhet, ellenőrizhet és eltávolíthat a Presentation.sections tulajdonságon keresztül.

A szakaszok különösen akkor hasznosak, ha:

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

Válasszon tömör szakaszneveket, amelyek leírják a csoportosított diák célját. Mivel a szakaszok a prezentáció struktúrájának részei, a szekció API-kat használja a tagság meghatározásához, a diák pozíciójából történő levezetés helyett.

Szakaszok létrehozása és kezelése

Használja a SectionCollection.add_section metódust szakasz létrehozásához a neve és a kezdő dia megadásával. Az Aspose.Slides a prezentáció aktuális szakaszstruktúrájából határozza meg, mely diák tartoznak a szakaszhoz.

Ugyanaz a SectionCollection lehetővé teszi továbbá:

A következő példa két szakaszt hoz létre, egyikét áthelyezi, eltávolítja a diáival együtt, majd egy üres szakaszt fűz hozzá:

import aspose.slides as slides

with slides.Presentation() as presentation:
    title_slide = presentation.slides[0]
    presentation.slides.add_empty_slide(presentation.layout_slides[0])
    results_slide = presentation.slides.add_empty_slide(presentation.layout_slides[0])
    presentation.slides.add_empty_slide(presentation.layout_slides[0])

    presentation.sections.add_section("Introduction", title_slide)
    results_section = presentation.sections.add_section("Results", results_slide)

    presentation.sections.reorder_section_with_slides(results_section, 0)
    presentation.sections.remove_section_with_slides(results_section)
    presentation.sections.append_empty_section("Appendix")

Ezek után a prezentáció a Introduction szakaszt tartalmazza a diáival, valamint egy üres Appendix szakaszt. A Results szakasz és annak diái eltávolításra kerültek.

Szakaszok átnevezése

Egy szakasz átnevezéséhez állítsa be a Section.name tulajdonságot. A szakasz diái és pozíciója változatlan marad.

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

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    section = presentation.sections.add_section("Overview", slide)
    section.name = "Introduction"

Diák lekérése a szakaszokból

A Presentation.sections tulajdonság egy SectionCollection‑t ad vissza, amelyen iterálhat. Minden egyes Section esetén hívja meg a Section.get_slides_list_of_section metódust, hogy megkapja a jelenleg hozzá tartozó diák listáját. A metódus egy SectionSlideCollection‑t ad vissza, amely számlálót, indexelt hozzáférést és iterálást biztosít.

A következő példa két feltöltött szakaszt és egy üres szakaszt hoz létre, majd kiírja minden szakasz name, identifier, starting slide, diaszámát és a diák sorszámait. Indexelt hozzáférést használ az első dia beolvasásához, és egy for ciklust a minden dia feldolgozásához. Az üres szakasz esetén a visszaadott gyűjtemény száma nulla, az indexet nem használják, és az iterálás nem hajt végre lépéseket.

import aspose.slides as slides

with slides.Presentation() as presentation:
    first_slide = presentation.slides[0]
    presentation.slides.add_empty_slide(presentation.layout_slides[0])
    third_slide = presentation.slides.add_empty_slide(presentation.layout_slides[0])

    presentation.sections.add_section("Introduction", first_slide)
    presentation.sections.add_section("Details", third_slide)
    presentation.sections.append_empty_section("Appendix")

    for section in presentation.sections:
        section_slides = section.get_slides_list_of_section()
        starting_slide = "none" if section.started_from_slide is None else str(section.started_from_slide.slide_number)

        print(f"Section: {section.name}")
        print(f"ID: {section.section_id}")
        print(f"Starting slide: {starting_slide}")
        print(f"Slide count: {section_slides.count}")

        if section_slides.count > 0:
            print(f"First slide via index: {section_slides[0].slide_number}")

        print("Slide numbers:", end="")
        for slide in section_slides:
            print(f" {slide.slide_number}", end="")
        print()

A szakaszhovatartozás a prezentáció szakaszstruktúráján alapul. Ne számolja ki manuálisan egy szakasz tartományát a Section.started_from_slide, diaindexek és a következő szakasz kezdődiája alapján.

A struktúrális módosítások megváltoztathatják egy szakaszhoz visszaadott diák listáját és a diák számát is. Ide tartozik a diák átrendezése, egy dia klónozása egy szakaszba, egy szakasz és diáinak áthelyezése, diák eltávolítása és szakaszok törlése. A következő példa minden ilyen változás után meghívja a Section.get_slides_list_of_section metódust, ahelyett, hogy a szakasz korábbi határaira vonatkozó feltételezéseket megtartaná.

import aspose.slides as slides


def print_section_slides(label, section):
    section_slides = section.get_slides_list_of_section()
    print(f"{label} ({section_slides.count} slides):", end="")
    for slide in section_slides:
        print(f" {slide.slide_number}", end="")
    print()


with slides.Presentation() as presentation:
    first_slide = presentation.slides[0]
    presentation.slides.add_empty_slide(presentation.layout_slides[0])
    third_slide = presentation.slides.add_empty_slide(presentation.layout_slides[0])
    presentation.slides.add_empty_slide(presentation.layout_slides[0])
    first_section = presentation.sections.add_section("First", first_slide)
    second_section = presentation.sections.add_section("Second", third_slide)

    print_section_slides("Initially", first_section)

    slides_before_clone = first_section.get_slides_list_of_section()
    presentation.slides.add_clone(slides_before_clone[0], first_section)
    print_section_slides("After cloning into the section", first_section)

    slides_before_reorder = first_section.get_slides_list_of_section()
    first_section_position = slides_before_reorder[0].slide_number - 1
    presentation.slides.reorder(first_section_position, slides_before_reorder[slides_before_reorder.count - 1])
    print_section_slides("After reordering slides", first_section)

    presentation.sections.reorder_section_with_slides(first_section, 1)
    print_section_slides("After moving the section", first_section)

    slides_before_removal = first_section.get_slides_list_of_section()
    presentation.slides.remove(slides_before_removal[0])
    print_section_slides("After removing a slide", first_section)

    presentation.sections.remove_section_with_slides(second_section)
    for section in presentation.sections:
        print_section_slides("Remaining section", section)

Hívja újra a Section.get_slides_list_of_section metódust, amikor csak diák vagy szakaszok átrendezésre, klónozásra, áthelyezésre vagy eltávolításra kerülnek. Ez biztosítja, hogy a további feldolgozás a jelenlegi prezentációs struktúrához legyen igazítva.

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

GYIK

Megmaradnak a szakaszok a PPT (PowerPoint 97–2003) formátumba mentéskor?

Nem. A PPT formátum nem támogatja a szakaszmetaadatokat, ezért a szakaszcsoportosítás elveszik, amikor .ppt‑ként menti a fájlt.

Lehet egy egész szakaszt „elrejteni”?

Nem. A szakasznak nincs láthatósági állapota. A tartalom elrejtéséhez állítsa be a Slide.hidden tulajdonságot minden egyes diánál a szakaszon belül.

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

Iteráljon a Presentation.sections kollekción, hívja meg a Section.get_slides_list_of_section metódust minden szakaszra, és hasonlítsa össze a visszaadott diák listáját a keresett diával. Egy nem üres szakasz esetén a Section.started_from_slide az első diát adja vissza; egy üres szakasz esetén None‑t ad.