Kelola Bagian Slide dalam Presentasi di Android
Pendahuluan
Bagian mengatur slide berurutan menjadi grup bernama tanpa mengubah konten slide. Dengan Aspose.Slides untuk Android via Java, Anda dapat membuat, mengubah urutan, mengganti nama, memeriksa, dan menghapus bagian melalui metode Presentation.getSections .
Bagian sangat berguna ketika:
- sebuah presentasi besar perlu dibagi menjadi topik atau bab logis;
- grup slide yang berbeda ditugaskan kepada kolaborator yang berbeda;
- slide perlu diproses, dipindahkan, atau digabungkan sebagai grup.
Pilih nama bagian yang singkat yang 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 ISectionCollection.addSection untuk membuat bagian dengan menentukan namanya dan slide awal. Aspose.Slides menentukan slide mana yang termasuk dalam bagian berdasarkan struktur bagian presentasi saat ini.
ISectionCollection yang sama juga memungkinkan Anda:
- memindahkan sebuah bagian beserta slide-nya dengan menggunakan ISectionCollection.reorderSectionWithSlides;
- menghapus hanya definisi bagian dengan ISectionCollection.removeSection, yang mempertahankan slide-nya;
- menghapus sebuah bagian beserta slide-nya dengan ISectionCollection.removeSectionWithSlides;
- menambahkan bagian kosong di akhir dengan ISectionCollection.appendEmptySection.
Contoh berikut membuat dua bagian, memindahkan salah satunya, menghapusnya bersama slide-nya, dan menambahkan sebuah bagian kosong:
import com.aspose.slides.ILayoutSlide;
import com.aspose.slides.ISection;
import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation();
try {
ISlide titleSlide = presentation.getSlides().get_Item(0);
ILayoutSlide layoutSlide = presentation.getLayoutSlides().get_Item(0);
presentation.getSlides().addEmptySlide(layoutSlide);
ISlide resultsSlide = presentation.getSlides().addEmptySlide(layoutSlide);
presentation.getSlides().addEmptySlide(layoutSlide);
presentation.getSections().addSection("Introduction", titleSlide);
ISection 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 bagian Appendix kosong. Bagian Results dan slide-nya telah dihapus.
Ganti Nama Bagian
Untuk mengganti nama sebuah bagian, panggil metode ISection.setName . Slide dan posisi bagian tetap tidak berubah.
Contoh berikut membuat sebuah bagian dan mengubah namanya:
import com.aspose.slides.ISection;
import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISection section = presentation.getSections().addSection("Overview", slide);
section.setName("Introduction");
} finally {
presentation.dispose();
}
Ambil Slide dari Bagian
Metode Presentation.getSections mengembalikan sebuah ISectionCollection yang dapat Anda iterasi. Untuk setiap ISection, panggil ISection.getSlidesListOfSection untuk memperoleh slide yang saat ini termasuk di dalamnya. Metode ini mengembalikan sebuah ISectionSlideCollection, yang menyediakan jumlah, akses berindeks, dan iterasi.
Contoh berikut membuat dua bagian yang berisi slide dan satu bagian kosong, kemudian mencetak setiap nama, identifier, slide awal, jumlah slide, dan nomor slide dari setiap bagian. Ia menggunakan ISectionSlideCollection.get_Item untuk membaca slide pertama dan pernyataan for yang ditingkatkan untuk memproses setiap slide. Untuk bagian kosong, koleksi yang dikembalikan berukuran nol, metode tidak dipanggil, dan iterasi tidak melakukan apa‑apa.
import com.aspose.slides.ILayoutSlide;
import com.aspose.slides.ISection;
import com.aspose.slides.ISectionSlideCollection;
import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation();
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
ILayoutSlide layoutSlide = presentation.getLayoutSlides().get_Item(0);
presentation.getSlides().addEmptySlide(layoutSlide);
ISlide thirdSlide = presentation.getSlides().addEmptySlide(layoutSlide);
presentation.getSections().addSection("Introduction", firstSlide);
presentation.getSections().addSection("Details", thirdSlide);
presentation.getSections().appendEmptySection("Appendix");
for (ISection section : presentation.getSections()) {
ISectionSlideCollection sectionSlides = section.getSlidesListOfSection();
String startingSlide = section.getStartedFromSlide() == null ? "none" : Integer.toString(section.getStartedFromSlide().getSlideNumber());
System.out.println("Section: " + section.getName());
System.out.println("ID: " + section.getSectionId());
System.out.println("Starting slide: " + startingSlide);
System.out.println("Slide count: " + sectionSlides.size());
if (sectionSlides.size() > 0) {
System.out.println("First slide via get_Item: " + sectionSlides.get_Item(0).getSlideNumber());
}
System.out.print("Slide numbers:");
for (ISlide slide : sectionSlides) {
System.out.print(" " + slide.getSlideNumber());
}
System.out.println();
}
} finally {
presentation.dispose();
}
Keanggotaan bagian ditentukan oleh struktur bagian presentasi. Jangan menghitung rentang bagian secara manual dari ISection.getStartedFromSlide, indeks slide, dan slide awal bagian berikutnya.
Suntingan struktural dapat mengubah baik slide yang dikembalikan untuk sebuah bagian maupun nomor slide mereka. Ini termasuk mengubah urutan slide, mengkloning slide ke dalam sebuah bagian, memindahkan bagian bersama slide-nya, menghapus slide, dan menghapus bagian. Contoh berikut memanggil ISection.getSlidesListOfSection setelah setiap perubahan semacam itu alih-alih mempertahankan asumsi tentang batas sebelumnya.
import com.aspose.slides.ILayoutSlide;
import com.aspose.slides.ISection;
import com.aspose.slides.ISectionSlideCollection;
import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
import java.util.function.BiConsumer;
Presentation presentation = new Presentation();
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
ILayoutSlide layoutSlide = presentation.getLayoutSlides().get_Item(0);
presentation.getSlides().addEmptySlide(layoutSlide);
ISlide thirdSlide = presentation.getSlides().addEmptySlide(layoutSlide);
presentation.getSlides().addEmptySlide(layoutSlide);
ISection firstSection = presentation.getSections().addSection("First", firstSlide);
ISection secondSection = presentation.getSections().addSection("Second", thirdSlide);
BiConsumer<String, ISection> printSectionSlides = (label, section) -> {
ISectionSlideCollection sectionSlides = section.getSlidesListOfSection();
System.out.printf("%s (%d slides):", label, sectionSlides.size());
for (ISlide slide : sectionSlides) {
System.out.print(" " + slide.getSlideNumber());
}
System.out.println();
};
printSectionSlides.accept("Initially", firstSection);
ISectionSlideCollection slidesBeforeClone = firstSection.getSlidesListOfSection();
presentation.getSlides().addClone(slidesBeforeClone.get_Item(0), firstSection);
printSectionSlides.accept("After cloning into the section", firstSection);
ISectionSlideCollection slidesBeforeReorder = firstSection.getSlidesListOfSection();
int firstSectionPosition = slidesBeforeReorder.get_Item(0).getSlideNumber() - 1;
presentation.getSlides().reorder(firstSectionPosition, slidesBeforeReorder.get_Item(slidesBeforeReorder.size() - 1));
printSectionSlides.accept("After reordering slides", firstSection);
presentation.getSections().reorderSectionWithSlides(firstSection, 1);
printSectionSlides.accept("After moving the section", firstSection);
ISectionSlideCollection slidesBeforeRemoval = firstSection.getSlidesListOfSection();
presentation.getSlides().remove(slidesBeforeRemoval.get_Item(0));
printSectionSlides.accept("After removing a slide", firstSection);
presentation.getSections().removeSectionWithSlides(secondSection);
for (ISection section : presentation.getSections()) {
printSectionSlides.accept("Remaining section", section);
}
} finally {
presentation.dispose();
}
Panggil ISection.getSlidesListOfSection lagi setiap kali slide atau bagian diubah urutannya, dikloning, 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 menyimpan ke .ppt.
Apakah seluruh bagian dapat “disembunyikan”?
Tidak. Sebuah bagian tidak memiliki status visibilitas. Untuk menyembunyikan isinya, panggil ISlide.setHidden untuk setiap slide dalam bagian tersebut.
Bagaimana saya dapat menemukan bagian yang berisi sebuah slide?
Iterasi koleksi yang dikembalikan oleh Presentation.getSections, panggil ISection.getSlidesListOfSection untuk setiap bagian, dan bandingkan slide yang dikembalikan dengan slide target. Untuk bagian yang tidak kosong, ISection.getStartedFromSlide mengembalikan slide pertamanya; untuk bagian kosong, ia mengembalikan null.