Διαχειριστείτε τις Ενότητες Διαφανειών σε Παρουσιάσεις με Java
Εισαγωγή
Οι ενότητες οργανώνουν διαδοχικές διαφάνειες σε ονομαστικές ομάδες χωρίς να αλλάζουν το περιεχόμενο της διαφάνειας. Με το Aspose.Slides for Java, μπορείτε να δημιουργείτε, να αναδιατάξετε, να μετονομάσετε, να εξετάζετε και να αφαιρείτε ενότητες μέσω της Presentation.getSections μεθόδου.
Οι ενότητες είναι ιδιαίτερα χρήσιμες όταν:
- μια μεγάλη παρουσίαση χρειάζεται να χωριστεί σε λογικά θέματα ή κεφάλαια·
- διαφορετικές ομάδες διαφανειών ανατίθενται σε διαφορετικούς συνεργάτες·
- οι διαφάνειες χρειάζεται να υποβληθούν σε επεξεργασία, να μετακινηθούν ή να συγχωνευτούν ως ομάδες.
Επιλέξτε σύντομα ονόματα ενοτήτων που περιγράφουν τον σκοπό των ομαδοποιημένων διαφανειών. Επειδή οι ενότητες αποτελούν μέρος της δομής της παρουσίασης, χρησιμοποιήστε τα API ενοτήτων για να καθορίσετε την ιδιότητα μέλους αντί να την υπολογίζετε από τη θέση των διαφανειών.
Δημιουργία και Διαχείριση Ενοτήτων
Χρησιμοποιήστε το ISectionCollection.addSection για να δημιουργήσετε μια ενότητα καθορίζοντας το όνομά της και τη διαφάνεια εκκίνησης. Το Aspose.Slides καθορίζει ποιες διαφάνειες ανήκουν στην ενότητα από τη τρέχουσα δομή ενοτήτων της παρουσίασης.
Η ίδια ISectionCollection επίσης σας επιτρέπει να:
- μετακινήσετε μια ενότητα μαζί με τις διαφάνειές της χρησιμοποιώντας το ISectionCollection.reorderSectionWithSlides;
- αφαιρέσετε μόνο τον ορισμό της ενότητας με το ISectionCollection.removeSection, που διατηρεί τις διαφάνειές της·
- αφαιρέσετε μια ενότητα και τις διαφάνειές της με το ISectionCollection.removeSectionWithSlides;
- προσθέσετε μια κενή ενότητα στο τέλος με το ISectionCollection.appendEmptySection.
Το παρακάτω παράδειγμα δημιουργεί δύο ενότητες, μετακινεί τη μία, την αφαιρεί μαζί με τις διαφάνειές της και προσθέτει μια κενή ενότητα:
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();
}
Μετά από αυτές τις λειτουργίες, η παρουσίαση περιέχει την ενότητα Introduction με τις διαφάνειές της και μια κενή ενότητα Appendix. Η ενότητα Results και οι διαφάνειές της έχουν αφαιρεθεί.
Μετονομασία Ενοτήτων
Για να μετονομάσετε μια ενότητα, καλέστε τη μέθοδο ISection.setName. Οι διαφάνειες και η θέση της ενότητας παραμένουν αμετάβλητες.
Το παρακάτω παράδειγμα δημιουργεί μια ενότητα και αλλάζει το όνομά της:
import com.aspose.slides.ISection;
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();
}
Ανάκτηση Διαφανειών από Ενότητες
Η μέθοδος Presentation.getSections επιστρέφει ένα ISectionCollection το οποίο μπορείτε να διατρέξετε. Για κάθε ISection, καλέστε το ISection.getSlidesListOfSection για να λάβετε τις διαφάνειες που ανήκουν αυτή τη στιγμή σε αυτήν. Η μέθοδος επιστρέφει ένα ISectionSlideCollection, το οποίο παρέχει αριθμό, πρόσβαση κατά δείκτη και επανάληψη.
Το παρακάτω παράδειγμα δημιουργεί δύο γεμάτες ενότητες και μία κενή ενότητα, στη συνέχεια εκτυπώνει το name, το identifier, τη starting slide, τον αριθμό διαφανειών και τους αριθμούς διαφανειών για κάθε ενότητα. Χρησιμοποιεί το ISectionSlideCollection.get_Item για να διαβάσει την πρώτη διαφάνεια και μια βελτιωμένη εντολή for για να επεξεργαστεί κάθε διαφάνεια. Για την κενή ενότητα, η επιστρεφόμενη συλλογή έχει μέγεθος μηδέν, η μέθοδος δεν καλείται και η επανάληψη δεν εκτελεί καμία ενέργεια.
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();
}
Η συμμετοχή σε ενότητα καθορίζεται από τη δομή ενοτήτων της παρουσίασης. Μην υπολογίζετε το εύρος μιας ενότητας χειροκίνητα από το ISection.getStartedFromSlide, τους δείκτες διαφανειών και τη διαφάνεια εκκίνησης της επόμενης ενότητας.
Οι δομικές επεμβάσεις μπορούν να αλλάξουν τόσο τις διαφάνειες που επιστρέφονται για μια ενότητα όσο και τους αριθμούς τους. Αυτό περιλαμβάνει την αναδιάταξη διαφανειών, την κλωνοποίηση μιας διαφάνειας σε ενότητα, τη μετακίνηση μιας ενότητας μαζί με τις διαφάνειές της, την αφαίρεση διαφανειών και την αφαίρεση ενοτήτων. Το επόμενο παράδειγμα καλεί το ISection.getSlidesListOfSection μετά από κάθε τέτοια αλλαγή αντί να διατηρεί υποθέσεις για τα προηγούμενα όρια της ενότητας.
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();
}
Καλέστε το ISection.getSlidesListOfSection ξανά όποτε διαφάνειες ή ενότητες αναδιατάσσονται, κλωνοποιούνται, μετακινούνται ή αφαιρούνται. Αυτό διασφαλίζει ότι η επόμενη επεξεργασία ευθυγραμμίζεται με τη τρέχουσα δομή της παρουσίασης.
Η μορφή PPT (PowerPoint 97–2003) δεν διατηρεί μεταδεδομένα ενοτήτων. Χρησιμοποιήστε αυτή τη ροή εργασίας με μορφή που υποστηρίζει ενότητες, όπως η PPTX· η μετατροπή σε PPT αφαιρεί τη δομή ενοτήτων που απαιτείται για μεταγενέστερη επανάληψη.
Συχνές Ερωτήσεις
Διατηρούνται οι ενότητες κατά την αποθήκευση σε μορφή PPT (PowerPoint 97–2003);
Όχι. Η μορφή PPT δεν υποστηρίζει μεταδεδομένα ενοτήτων, οπότε η ομαδοποίηση ενοτήτων χάνεται κατά την αποθήκευση σε .ppt.
Μπορεί μια ολόκληρη ενότητα να «κρυφτεί»;
Όχι. Μια ενότητα δεν διαθέτει κατάσταση ορατότητας. Για να κρύψετε τα περιεχόμενα της, καλέστε το ISlide.setHidden για κάθε διαφάνεια στην ενότητα.
Πώς μπορώ να βρω την ενότητα που περιέχει μια διαφάνεια;
Διατρέξτε τη συλλογή που επιστρέφει η Presentation.getSections, καλέστε το ISection.getSlidesListOfSection για κάθε ενότητα και συγκρίνετε τις επιστρεφόμενες διαφάνειες με τη διαφάνεια-στόχο. Για μια μη‑κενή ενότητα, το ISection.getStartedFromSlide επιστρέφει τη πρώτη της διαφάνεια· για μια κενή ενότητα, επιστρέφει null.