Διαχείριση master διαφανειών παρουσίασης σε Python
Επισκόπηση
Ένας slide master ορίζει κοινές ρυθμίσεις σχεδίασης για μια ομάδα διαφανειών. Μπορεί να περιέχει κοινά σχήματα, λογότυπα, υπόβαθρα, στυλ κειμένου, ρυθμίσεις θέματος και ρυθμίσεις υποσέλιδου. Στο PowerPoint, η επεξεργασία ενός slide master είναι ο συνήθης τρόπος διατήρησης της συνέπειας μιας παρουσίασης χωρίς να επαναλαμβάνεται η ίδια μορφοποίηση σε κάθε διαφάνεια.
Aspose.Slides for Python via .NET υποστηρίζει το ίδιο μοντέλο. Μια παρουσίαση μπορεί να περιέχει μία ή περισσότερες master διαφάνειες, και κάθε master διαφάνεια μπορεί να περιέχει πολλές layout διαφάνειες. Οι κανονικές διαφάνειες συνήθως δεν αναφέρονται άμεσα σε μια master διαφάνεια. Αντίθετα, μια κανονική διαφάνεια χρησιμοποιεί μια layout διαφάνεια, η οποία ανήκει σε μια master διαφάνεια.
Η ιεραρχία είναι:
- Slide master – ορίζει το κοινό σχέδιο και το θέμα.
- Layout slide – ορίζει μια συγκεκριμένη διάταξη placeholders και μορφοποίησης επιπέδου layout.
- Normal slide – περιέχει το πραγματικό περιεχόμενο της παρουσίασης και χρησιμοποιεί μια layout διαφάνεια.

Στο Aspose.Slides, μια slide master αντιπροσωπεύεται από την κλάση MasterSlide. Όλες οι master διαφάνειες σε μια παρουσίαση είναι διαθέσιμες μέσω της συλλογής Presentation.masters.
Inheritance
Όταν η ίδια ιδιότητα ορίζεται σε περισσότερα από ένα επίπεδα, το πιο συγκεκριμένο επίπεδο επικρατεί. Για παράδειγμα, εάν μια master διαφάνεια και μια layout διαφάνεια ορίζουν και οι δύο ένα υπόβαθρο, οι διαφάνειες που βασίζονται σε εκείνο το layout χρησιμοποιούν το υπόβαθρο του layout. Για περισσότερες πληροφορίες σχετικά με τις layout διαφάνειες, δείτε Apply or Change Slide Layouts.Πρόσβαση σε Slide Masters
Στο PowerPoint, μπορείτε να ανοίξετε τη προβολή Slide Master από View > Slide Master.

Στο Aspose.Slides, χρησιμοποιήστε τη συλλογή masters για να αποκτήσετε πρόσβαση στις master διαφάνειες:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
first_master_slide = presentation.masters[0]
master_slide_count = len(presentation.masters)
first_master_layout_slide_count = len(first_master_slide.layout_slides)
print("Master slides: " + str(master_slide_count))
print("Layouts in the first master: " + str(first_master_layout_slide_count))
Μπορείτε επίσης να λάβετε τη master διαφάνεια που χρησιμοποιείται από μια κανονική διαφάνεια μέσω του layout της:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
slide = presentation.slides[0]
layout_slide = slide.layout_slide
master_slide = layout_slide.master_slide
master_slide_name = master_slide.name
print(master_slide_name)
Τι Περιέχει μια Slide Master
Μια master διαφάνεια είναι ένα αντικείμενο παρόμοιο με διαφάνεια. Κληρονομεί κοινή συμπεριφορά διαφάνειας από την κλάση BaseSlide, έτσι ώστε να εκτίθεται σε πολλές από τις ίδιες ιδιότητες διαφάνειας που χρησιμοποιούνται από κανονικές και layout διαφάνειες. Τα ειδικά για master μέλη παρατίθενται στη σελίδα API MasterSlide.
Συχνά χρησιμοποιούμενα μέλη master διαφάνειας περιλαμβάνουν:
| Μέλος | Σκοπός |
|---|---|
background |
Ορίζει το υπόβαθρο επιπέδου master. |
shapes |
Αποθηκεύει σχήματα τοποθετημένα στη master, όπως λογότυπα, πλαίσια εικόνας και κοινό κείμενο. |
layout_slides |
Αποθηκεύει τις layout διαφάνειες που ανήκουν στη master. |
theme_manager |
Παρέχει πρόσβαση στα API θέματος της master. |
header_footer_manager |
Ελέγχει κεφαλίδες, υποσέλιδα, ημερομηνίες και αριθμούς διαφανειών για τη master και τα θυγατρικά της layout. |
get_depending_slides |
Επιστρέφει τις κανονικές διαφάνειες που εξαρτώνται από τη master μέσω των layout τους. |
Προσθήκη Εικόνας σε Slide Master
Όταν προσθέτετε μια εικόνα σε μια master διαφάνεια, αυτή εμφανίζεται στις διαφάνειες που χρησιμοποιούν layout από αυτήν τη master. Είναι χρήσιμο για λογότυπα, υδατοπιστώματα, διακοσμητικές λωρίδες και άλλα επαναλαμβανόμενα οπτικά στοιχεία.
Το παρακάτω παράδειγμα προσθέτει ένα λογότυπο στην πρώτη master διαφάνεια:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
master_slide = presentation.masters[0]
with open("logo.png", "rb") as logo_stream:
logo_bytes = logo_stream.read()
logo_image = presentation.images.add_image(logo_bytes)
master_slide.shapes.add_picture_frame(
slides.ShapeType.RECTANGLE,
20,
20,
80,
80,
logo_image)
presentation.save("presentation-with-logo.pptx", slides.export.SaveFormat.PPTX)
Για περισσότερες πληροφορίες σχετικά με τα πλαίσια εικόνας, δείτε Picture Frame.
Εργασία με Placeholders
Τα placeholders ορίζονται συνήθως σε layout διαφάνειες. Η master διαφάνεια παρέχει το κοινό στυλ και θέμα που κληρονομούν αυτά τα layout, ενώ κάθε layout αποφασίζει ποια placeholders είναι διαθέσιμα και πού τοποθετούνται.
Στο PowerPoint, οι εντολές placeholder είναι διαθέσιμες στην προβολή Slide Master.

Για να προσθέσετε νέα placeholders με το Aspose.Slides, εργαστείτε με τη layout διαφάνεια που ανήκει στη master:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
master_slide = presentation.masters[0]
blank_layout_slide = master_slide.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
if blank_layout_slide is None:
blank_layout_slide = presentation.layout_slides.add(
master_slide,
slides.SlideLayoutType.BLANK,
"Blank")
blank_layout_slide.placeholder_manager.add_text_placeholder(60, 120, 600, 80)
presentation.slides.add_empty_slide(blank_layout_slide)
presentation.save("presentation-with-placeholder.pptx", slides.export.SaveFormat.PPTX)
Μπορείτε επίσης να μορφοποιήσετε σχήματα placeholder που υπάρχουν ήδη σε μια master διαφάνεια. Το παρακάτω παράδειγμα βρίσκει το placeholder τίτλου και εφαρμόζει γραμμική γεμιστική κλίση:
import aspose.pydrawing as draw
import aspose.slides as slides
def find_placeholder(master_slide, placeholder_type):
for shape in master_slide.shapes:
if isinstance(shape, slides.AutoShape) and shape.placeholder is not None:
if shape.placeholder.type == placeholder_type:
return shape
return None
with slides.Presentation("presentation.pptx") as presentation:
master_slide = presentation.masters[0]
title_placeholder = find_placeholder(master_slide, slides.PlaceholderType.TITLE)
if title_placeholder is not None:
red_gradient_color = draw.Color.from_argb(255, 0, 0)
purple_gradient_color = draw.Color.from_argb(128, 0, 128)
title_placeholder.fill_format.fill_type = slides.FillType.GRADIENT
title_placeholder.fill_format.gradient_format.gradient_shape = slides.GradientShape.LINEAR
title_placeholder.fill_format.gradient_format.gradient_stops.add(0, red_gradient_color)
title_placeholder.fill_format.gradient_format.gradient_stops.add(1, purple_gradient_color)
presentation.save("presentation-title-style.pptx", slides.export.SaveFormat.PPTX)

Για περισσότερες επιλογές μορφοποίησης placeholders και κειμένου, δείτε Set Prompt Text in Placeholder και Text Formatting.
Αλλαγή Υποβάθρου Slide Master
Ένα master υπόβαθρο κληρονομείται από τα layout και τις διαφάνειες που δεν το αντικαθιστούν. Το παρακάτω παράδειγμα ορίζει ένα στερεό χρώμα υποβάθρου για την πρώτη master διαφάνεια:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
master_slide = presentation.masters[0]
master_slide.background.type = slides.BackgroundType.OWN_BACKGROUND
master_slide.background.fill_format.fill_type = slides.FillType.SOLID
master_slide.background.fill_format.solid_fill_color.color = draw.Color.forest_green
presentation.save("presentation-master-background.pptx", slides.export.SaveFormat.PPTX)
Για συναφή θέματα, δείτε Presentation Background και Presentation Theme.
Κλωνοποίηση Slide Master σε Άλλη Παρουσίαση
Χρησιμοποιήστε τη μέθοδο add_clone στην κλάση MasterSlideCollection για να αντιγράψετε μια master διαφάνεια σε άλλη παρουσίαση. Η αντίγραφο master μπορεί στη συνέχεια να χρησιμοποιηθεί από layout και διαφάνειες στην προορισμένη παρουσίαση.
import aspose.slides as slides
with slides.Presentation("source.pptx") as source_presentation:
with slides.Presentation("destination.pptx") as destination_presentation:
source_master_slide = source_presentation.masters[0]
cloned_master_slide = destination_presentation.masters.add_clone(source_master_slide)
destination_presentation.save("destination-with-master.pptx", slides.export.SaveFormat.PPTX)
Αν χρειάζεστε κλωνοποίηση κανονικών διαφανειών μαζί με τη master τους, δείτε Clone Slides.
Προσθήκη Πολλών Slide Masters
Μια παρουσίαση μπορεί να περιέχει πολλαπλές master διαφάνειες. Αυτό είναι χρήσιμο όταν διαφορετικές ενότητες απαιτούν διαφορετική επωνυμία, δομή σελίδας ή ρυθμίσεις θέματος.

Το παρακάτω παράδειγμα κλωνοποιεί την προεπιλεγμένη master, δίνει στο κλώνο διαφορετικό υπόβαθρο, παίρνει ένα κενό layout κάτω από αυτήν τη κλωνοποιημένη master, και προσθέτει μια νέα διαφάνεια βασισμένη σε εκείνο το layout:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
default_master_slide = presentation.masters[0]
section_master_slide = presentation.masters.add_clone(default_master_slide)
section_master_slide.background.type = slides.BackgroundType.OWN_BACKGROUND
section_master_slide.background.fill_format.fill_type = slides.FillType.SOLID
section_master_slide.background.fill_format.solid_fill_color.color = draw.Color.light_steel_blue
section_blank_layout = section_master_slide.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
if section_blank_layout is None:
section_blank_layout = presentation.layout_slides.add(
section_master_slide,
slides.SlideLayoutType.BLANK,
"Section Blank")
presentation.slides.add_empty_slide(section_blank_layout)
presentation.save("presentation-with-multiple-masters.pptx", slides.export.SaveFormat.PPTX)
Σύγκριση Slide Masters
Οι master διαφάνειες μπορούν να συγκριθούν με τη μέθοδο equals που κληρονομείται από την κλάση BaseSlide. Η σύγκριση ελέγχει τη δομή και το στατικό περιεχόμενο, όπως σχήματα, κείμενο, μορφοποίηση, animations και άλλες ρυθμίσεις διαφάνειας. Δεν συγκρίνει μοναδικά αναγνωριστικά, όπως τα slide IDs, ή δυναμικές τιμές placeholders, όπως η τρέχουσα ημερομηνία.
import aspose.slides as slides
with slides.Presentation("first.pptx") as first_presentation:
with slides.Presentation("second.pptx") as second_presentation:
first_presentation_master_count = len(first_presentation.masters)
second_presentation_master_count = len(second_presentation.masters)
for first_master_index in range(first_presentation_master_count):
for second_master_index in range(second_presentation_master_count):
first_master_slide = first_presentation.masters[first_master_index]
second_master_slide = second_presentation.masters[second_master_index]
are_master_slides_equal = first_master_slide.equals(second_master_slide)
if are_master_slides_equal:
print(
"first.pptx master #{} equals second.pptx master #{}".format(
first_master_index,
second_master_index))
Για περισσότερες πληροφορίες, δείτε Compare Presentation Slides.
Ορισμός Slide Master View ως Προεπιλεγμένη Προβολή
Χρησιμοποιήστε την ιδιότητα last_view στην παρουσίαση ViewProperties για να ελέγξετε την προβολή που ανοίγει πρώτο το PowerPoint. Το παρακάτω παράδειγμα ανοίγει την παρουσίαση σε προβολή Slide Master:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
presentation.view_properties.last_view = slides.ViewType.SLIDE_MASTER_VIEW
presentation.save("presentation-master-view.pptx", slides.export.SaveFormat.PPTX)
Για περισσότερες ρυθμίσεις προβολής, δείτε Save Presentation.
Αφαίρεση Αχρησιμοποίητων Master Slides
Μερικές φορές οι παρουσιάσεις περιέχουν master διαφάνειες που δεν χρησιμοποιούνται πλέον από καμία κανονική διαφάνεια. Η αφαίρεση των αχρησιμοποίητων master μπορεί να μειώσει το μέγεθος του αρχείου και να απλοποιήσει τη συντήρηση του προτύπου.
Χρησιμοποιήστε remove_unused για να αφαιρέσετε τις αχρησιμοποίητες master από τη συλλογή masters:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
presentation.masters.remove_unused(True)
presentation.save("presentation-clean.pptx", slides.export.SaveFormat.PPTX)
Μπορείτε επίσης να χρησιμοποιήσετε τη low-code μέθοδο remove_unused_master_slides από την κλάση Compress:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
slides.lowcode.Compress.remove_unused_master_slides(presentation)
presentation.save("presentation-clean.pptx", slides.export.SaveFormat.PPTX)
Συχνές Ερωτήσεις
Ποια είναι η διαφορά μεταξύ slide master και layout slide;
Μια slide master ορίζει κοινές ρυθμίσεις σχεδίασης όπως θέμα, υπόβαθρο, κοινά σχήματα και στυλ κειμένου. Μια layout slide ανήκει σε μια master slide και ορίζει μια συγκεκριμένη διάταξη placeholders. Μια κανονική διαφάνεια χρησιμοποιεί μια layout slide, επομένως κληρονομεί τόσο από το layout όσο και από τη master.
Μπορεί μια παρουσίαση να περιέχει πολλές slide masters;
Ναι. Μια παρουσίαση μπορεί να περιέχει πολλές slide masters. Χρησιμοποιήστε πολλαπλές master όταν διαφορετικές ενότητες χρειάζονται διαφορετικά οπτικά συστήματα ή επωνυμίες.
Πρέπει να προσθέσω placeholders σε μια master slide ή σε μια layout slide;
Στις περισσότερες περιπτώσεις, προσθέτετε placeholders σε layout slides. Τοποθετήστε τα κοινά οπτικά στοιχεία και τη κοινή μορφοποίηση στη master slide, και τοποθετήστε τα placeholders περιεχομένου στα layout που θα χρησιμοποιούν οι κανονικές διαφάνειες.
Μπορώ να διαγράψω μια master slide που χρησιμοποιείται ακόμα;
Όχι. Μια master slide που έχει εξαρτημένες διαφάνειες δεν μπορεί να αφαιρεθεί με ασφάλεια. Πρώτα μετακινήστε αυτές τις διαφάνειες σε layout κάτω από άλλη master, ή χρησιμοποιήστε μια μέθοδο καθαρισμού αχρησιμοποίητων master που αφαιρεί μόνο τις master που δεν χρησιμοποιούνται.