Διαχείριση ενοτήτων διαφανειών σε παρουσιάσεις με Python μέσω Java
Εισαγωγή
Οι ενότητες οργανώνουν διαδοχικές διαφάνειες σε ονομαστικές ομάδες χωρίς να αλλάζουν το περιεχόμενο της διαφάνειας. Με το Aspose.Slides for Python via Java, μπορείτε να δημιουργείτε, αναδιατάξετε, μετονομάσετε, επιθεωρήσετε και να αφαιρείτε ενότητες μέσω της μεθόδου Presentation.getSections .
Οι ενότητες είναι ιδιαίτερα χρήσιμες όταν:
- μια μεγάλη παρουσίαση χρειάζεται να χωριστεί σε λογικά θέματα ή κεφάλαια·
- διαφορετικές ομάδες διαφανειών εκχωρούνται σε διαφορετικούς συνεργάτες·
- απαιτείται επεξεργασία, μετακίνηση ή συγχώνευση των διαφανειών ως ομάδες.
Επιλέξτε σύντομα ονόματα ενοτήτων που περιγράφουν τον σκοπό των ομαδοποιημένων διαφανειών. Επειδή οι ενότητες αποτελούν μέρος της δομής της παρουσίασης, χρησιμοποιήστε τα API ενοτήτων για να καθορίσετε την ιδιότητα μέλους αντί να την προκύψετε από τις θέσεις των διαφανειών.
Δημιουργία και Διαχείριση Ενοτήτων
Χρησιμοποιήστε το SectionCollection.addSection για να δημιουργήσετε μια ενότητα καθορίζοντας το όνομά της και τη διαφάνεια εκκίνησης. Το Aspose.Slides καθορίζει ποιες διαφάνειες ανήκουν στην ενότητα με βάση την τρέχουσα δομή ενοτήτων της παρουσίασης.
Η ίδια SectionCollection σας επιτρέπει επίσης:
- να μετακινήσετε μια ενότητα μαζί με τις διαφάνειές της χρησιμοποιώντας το reorderSectionWithSlides;
- να αφαιρέσετε μόνο τον ορισμό της ενότητας με το removeSection, το οποίο διατηρεί τις διαφάνειές της;
- να αφαιρέσετε μια ενότητα και τις διαφάνειές της με το removeSectionWithSlides;
- να προσθέσετε μια κενή ενότητα στο τέλος με το appendEmptySection.
Το παρακάτω παράδειγμα δημιουργεί δύο ενότητες, μετακινεί μία από αυτές, την αφαιρεί μαζί με τις διαφάνειες της και προσθέτει μια κενή ενότητα:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation()
try:
title_slide = presentation.getSlides().get_Item(0)
layout_slide = presentation.getLayoutSlides().get_Item(0)
presentation.getSlides().addEmptySlide(layout_slide)
results_slide = presentation.getSlides().addEmptySlide(layout_slide)
presentation.getSlides().addEmptySlide(layout_slide)
presentation.getSections().addSection("Introduction", title_slide)
results_section = presentation.getSections().addSection("Results", results_slide)
presentation.getSections().reorderSectionWithSlides(results_section, 0)
presentation.getSections().removeSectionWithSlides(results_section)
presentation.getSections().appendEmptySection("Appendix")
finally:
presentation.dispose()
Μετά από αυτές τις ενέργειες, η παρουσίαση περιέχει την ενότητα Εισαγωγή με τις διαφάνειές της και μια κενή ενότητα Παράρτημα. Η ενότητα Αποτελέσματα και οι διαφάνειες της έχουν αφαιρεθεί.
Μετονομασία Ενοτήτων
Για να μετονομάσετε μια ενότητα, καλέστε τη μέθοδο Section.setName. Οι διαφάνειες και η θέση της ενότητας παραμένουν αμετάβλητες.
Το παρακάτω παράδειγμα δημιουργεί μια ενότητα και αλλάζει το όνομά της:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
section = presentation.getSections().addSection("Overview", slide)
section.setName("Introduction")
finally:
presentation.dispose()
Ανάκτηση Διαφανειών από Ενότητες
Η μέθοδος Presentation.getSections επιστρέφει μια SectionCollection την οποία μπορείτε να διατρέξετε. Για κάθε Section, καλέστε το Section.getSlidesListOfSection για να λάβετε τις διαφάνειες που ανήκουν αυτή τη στιγμή σε αυτήν. Η μέθοδος επιστρέφει μια SectionSlideCollection, η οποία παρέχει μέτρηση, πρόσβαση με δείκτη και επανάληψη.
Το παρακάτω παράδειγμα δημιουργεί δύο γεμάτες ενότητες και μία κενή ενότητα, στη συνέχεια εκτυπώνει το name, το identifier, τη starting slide, τον αριθμό διαφανειών και τους αριθμούς διαφανειών της κάθε ενότητας. Χρησιμοποιεί το SectionSlideCollection.get_Item για να διαβάσει την πρώτη διαφάνεια και μια δήλωση for για να επεξεργαστεί κάθε διαφάνεια. Για την κενή ενότητα, η επιστρεφόμενη συλλογή έχει μέγεθος μηδέν, η μέθοδος δεν καλείται και η επανάληψη δεν εκτελεί καμία ενέργεια.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation()
try:
first_slide = presentation.getSlides().get_Item(0)
layout_slide = presentation.getLayoutSlides().get_Item(0)
presentation.getSlides().addEmptySlide(layout_slide)
third_slide = presentation.getSlides().addEmptySlide(layout_slide)
presentation.getSections().addSection("Introduction", first_slide)
presentation.getSections().addSection("Details", third_slide)
presentation.getSections().appendEmptySection("Appendix")
for section in presentation.getSections():
section_slides = section.getSlidesListOfSection()
starting_slide = "none" if section.getStartedFromSlide() is None else str(section.getStartedFromSlide().getSlideNumber())
print("Section: ", section.getName(), sep="")
print("ID: ", section.getSectionId(), sep="")
print("Starting slide: ", starting_slide, sep="")
print("Slide count: ", section_slides.size(), sep="")
if section_slides.size() > 0:
print("First slide via get_Item: ", section_slides.get_Item(0).getSlideNumber(), sep="")
print("Slide numbers:", end="")
for slide in section_slides:
print(" ", slide.getSlideNumber(), sep="", end="")
print()
finally:
presentation.dispose()
Η συμμετοχή σε ενότητα καθορίζεται από τη δομή ενοτήτων της παρουσίασης. Μη υπολογίζετε μη αυτόματα την εμβέλεια μιας ενότητας από το Section.getStartedFromSlide, τους δείκτες διαφανειών και τη διαφάνεια έναρξης της επόμενης ενότητας.
Δομικές επεμβάσεις μπορούν να αλλάξουν τόσο τις διαφάνειες που επιστρέφονται για μια ενότητα όσο και τους αριθμούς τους. Αυτό περιλαμβάνει την αναδιάταξη διαφανειών, την κλωνοποίηση μιας διαφάνειας σε ενότητα, τη μετακίνηση μιας ενότητας μαζί με τις διαφάνειές της, την αφαίρεση διαφανειών και την αφαίρεση ενοτήτων. Το επόμενο παράδειγμα καλεί το Section.getSlidesListOfSection μετά από κάθε τέτοια αλλαγή αντί να διατηρεί υποθέσεις για τα πρώην όρια της ενότητας.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation()
try:
first_slide = presentation.getSlides().get_Item(0)
layout_slide = presentation.getLayoutSlides().get_Item(0)
presentation.getSlides().addEmptySlide(layout_slide)
third_slide = presentation.getSlides().addEmptySlide(layout_slide)
presentation.getSlides().addEmptySlide(layout_slide)
first_section = presentation.getSections().addSection("First", first_slide)
second_section = presentation.getSections().addSection("Second", third_slide)
def print_section_slides(label, section):
section_slides = section.getSlidesListOfSection()
print(f"{label} ({section_slides.size()} slides):", end="")
for slide in section_slides:
print(" ", slide.getSlideNumber(), sep="", end="")
print()
print_section_slides("Initially", first_section)
slides_before_clone = first_section.getSlidesListOfSection()
presentation.getSlides().addClone(slides_before_clone.get_Item(0), first_section)
print_section_slides("After cloning into the section", first_section)
slides_before_reorder = first_section.getSlidesListOfSection()
first_section_position = slides_before_reorder.get_Item(0).getSlideNumber() - 1
presentation.getSlides().reorder(first_section_position, slides_before_reorder.get_Item(slides_before_reorder.size() - 1))
print_section_slides("After reordering slides", first_section)
presentation.getSections().reorderSectionWithSlides(first_section, 1)
print_section_slides("After moving the section", first_section)
slides_before_removal = first_section.getSlidesListOfSection()
presentation.getSlides().remove(slides_before_removal.get_Item(0))
print_section_slides("After removing a slide", first_section)
presentation.getSections().removeSectionWithSlides(second_section)
for section in presentation.getSections():
print_section_slides("Remaining section", section)
finally:
presentation.dispose()
Καλέστε ξανά το Section.getSlidesListOfSection όποτε οι διαφάνειες ή οι ενότητες αναδιατάσσονται, κλωνοποιούνται, μετακινούνται ή αφαιρούνται. Αυτό διατηρεί την επερχόμενη επεξεργασία σύμφωνη με την τρέχουσα δομή της παρουσίασης.
Η μορφή PPT (PowerPoint 97–2003) δεν διατηρεί τα μεταδεδομένα ενοτήτων. Χρησιμοποιήστε αυτή τη ροή εργασίας με μια μορφή που υποστηρίζει ενότητες, όπως η PPTX· η μετατροπή σε PPT αφαιρεί τη δομή ενοτήτων που απαιτείται για επόμενη επανάληψη.
Συχνές Ερωτήσεις
Διατηρούνται οι ενότητες κατά την αποθήκευση σε μορφή PPT (PowerPoint 97–2003);
Όχι. Η μορφή PPT δεν υποστηρίζει μεταδεδομένα ενοτήτων, έτσι η ομαδοποίηση ενοτήτων χάνονται όταν αποθηκεύεται σε .ppt.
Μπορεί μια ολόκληρη ενότητα να “κρυφτεί”;
Όχι. Μια ενότητα δεν έχει κατάσταση ορατότητας. Για να κρύψετε το περιεχόμενό της, καλέστε το Slide.setHidden για κάθε διαφάνεια στην ενότητα.
Πώς μπορώ να βρω την ενότητα που περιέχει μια διαφάνεια;
Διατρέξτε τη συλλογή που επιστρέφεται από το Presentation.getSections, καλέστε το Section.getSlidesListOfSection για κάθε ενότητα και συγκρίνετε τις επιστρεφόμενες διαφάνειες με τη διαφάνεια‑στόχο. Για μια μη κενή ενότητα, το Section.getStartedFromSlide επιστρέφει την πρώτη της διαφάνεια· για μια κενή ενότητα, επιστρέφει None.