Kelola Bagian Slide dalam Presentasi dengan JavaScript

Pendahuluan

Bagian mengorganisir slide berurutan menjadi grup bernama tanpa mengubah konten slide. Dengan Aspose.Slides untuk Node.js via Java, Anda dapat membuat, menyusun ulang, mengganti nama, memeriksa, dan menghapus bagian melalui metode Presentation.getSections.

Bagian sangat berguna ketika:

  • presentasi besar perlu dibagi menjadi topik atau bab logis;
  • kelompok slide yang berbeda ditugaskan kepada kolaborator yang berbeda;
  • slide perlu diproses, dipindahkan, atau digabungkan sebagai grup.

Pilih nama bagian yang singkat dan menggambarkan tujuan slide yang dikelompokkan. Karena bagian merupakan bagian dari struktur presentasi, gunakan API bagian untuk menentukan keanggotaan alih-alih menurunkannya dari posisi slide.

Buat dan Kelola Bagian

Gunakan SectionCollection.addSection untuk membuat sebuah bagian dengan menentukan namanya dan slide awal. Aspose.Slides menentukan slide mana yang termasuk dalam bagian tersebut dari struktur bagian presentasi saat ini.

SectionCollection yang sama juga memungkinkan Anda:

Contoh berikut membuat dua bagian, memindahkan salah satunya, menghapusnya bersama dengan slide-nya, dan menambahkan sebuah bagian kosong:

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

Setelah operasi ini, presentasi berisi bagian Introduction dengan slide-nya dan sebuah bagian Appendix yang kosong. Bagian Results dan slide-nya telah dihapus.

Ganti Nama Bagian

Untuk mengganti nama sebuah bagian, panggil metode Section.setName. Slide dan posisi bagian tetap tidak berubah.

Contoh berikut membuat sebuah bagian dan mengubah namanya:

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

Ambil Slide dari Bagian

Metode Presentation.getSections mengembalikan sebuah SectionCollection yang dapat Anda akses berdasarkan indeks. Untuk setiap Section, panggil Section.getSlidesListOfSection untuk memperoleh slide yang saat ini termasuk di dalamnya. Metode tersebut mengembalikan sebuah SectionSlideCollection, yang menyediakan jumlah dan akses berindeks.

Contoh berikut membuat dua bagian terisi dan satu bagian kosong, lalu mencetak nama, identifier, slide mulai, jumlah slide, dan nomor slide setiap bagian. Ia menggunakan SectionSlideCollection.get_Item untuk membaca slide pertama dan setiap slide dalam koleksi. Untuk bagian kosong, koleksi yang dikembalikan berukuran nol, akses berindeks dilewati, dan loop tidak melakukan operasi apa pun.

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

Keanggotaan bagian ditentukan oleh struktur bagian presentasi. Jangan menghitung rentang sebuah bagian secara manual dari Section.getStartedFromSlide, indeks slide, dan slide mulai bagian berikutnya.

Suntingan struktural dapat mengubah baik slide yang dikembalikan untuk sebuah bagian maupun nomor slide mereka. Ini termasuk menyusun ulang slide, menggandakan slide ke dalam sebuah bagian, memindahkan sebuah bagian bersama dengan slide-nya, menghapus slide, dan menghapus bagian. Contoh berikut memanggil Section.getSlidesListOfSection setelah setiap perubahan semacam itu alih-alih mempertahankan asumsi tentang batas sebelumnya.

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

Panggil Section.getSlidesListOfSection lagi setiap kali slide atau bagian disusun ulang, digandakan, dipindahkan, atau dihapus. Ini menjaga pemrosesan selanjutnya tetap selaras dengan struktur presentasi saat ini.

Format PPT (PowerPoint 97–2003) tidak menyimpan metadata bagian. Gunakan alur kerja ini dengan format yang mendukung bagian, seperti PPTX; mengonversi ke PPT menghapus struktur bagian yang diperlukan untuk iterasi selanjutnya.

FAQ

Apakah bagian tetap dipertahankan saat menyimpan ke format PPT (PowerPoint 97–2003)?

Tidak. Format PPT tidak mendukung metadata bagian, sehingga pengelompokan bagian hilang saat disimpan ke .ppt.

Apakah seluruh bagian dapat “disembunyikan”?

Tidak. Sebuah bagian tidak memiliki status visibilitas. Untuk menyembunyikan isinya, panggil Slide.setHidden untuk setiap slide dalam bagian tersebut.

Bagaimana saya dapat menemukan bagian yang berisi sebuah slide?

Akses setiap bagian dalam koleksi yang dikembalikan oleh Presentation.getSections, panggil Section.getSlidesListOfSection untuk setiap bagian, dan bandingkan slide yang dikembalikan dengan slide target. Untuk bagian yang tidak kosong, Section.getStartedFromSlide mengembalikan slide pertamanya; untuk bagian kosong, ia mengembalikan null.