Εφαρμογή ή Αλλαγή Διατάξεων Διαφάνειας σε Python μέσω Java

Επισκόπηση

Ένα διάταξη διαφάνειας ορίζει τις θέσεις και τη μορφοποίηση των κράτησης θέσης όπως τίτλοι, κείμενο, εικόνες, διαγράμματα και πίνακες. Η εφαρμογή μιας διάταξης παρέχει στις διαφάνειες μια συνεπή δομή ενώ επιτρέπει σε κάθε διαφάνεια να περιέχει το δικό της περιεχόμενο.

Τα πιο κοινά διατάγματα περιλαμβάνουν:

  • Title Slide: Περιέχει κράτησης θέσης τίτλου και υπότιτλου.
  • Title and Content: Περιέχει κράτηση θέσης τίτλου και μια γενικής χρήσης κράτηση θέσης περιεχομένου.
  • Blank: Δεν περιέχει κράτησης θέσεων περιεχομένου και είναι χρήσιμη όταν κάθε σχήμα θα τοποθετηθεί χειροκίνητα.

Κατανόηση Κληρονομικότητας Διατάξεων

Μια παρουσίαση έχει τρία σχετιζόμενα επίπεδα:

  1. Μια κύρια διαφάνεια ορίζει το θέμα, τη κοινή μορφοποίηση, τα φόντα και τα κοινά αντικείμενα.
  2. Μια διάταξη διαφάνειας ανήκει σε μια κύρια και ορίζει μια συγκεκριμένη διάταξη των κρατήσεων θέσης.
  3. Μια κανονική διαφάνεια χρησιμοποιεί μια διάταξη και αποθηκεύει το περιεχόμενο που εισήχθη για εκείνη τη διαφάνεια.

Μια κανονική διαφάνεια κληρονομεί το θέμα και τη μορφοποίηση από τη διάταξή της, και η διάταξη κληρονομεί από την κύρια. Μια τιμή που ορίζεται άμεσα σε μια κανονική διαφάνεια παρακάμπτει την κληρονομημένη τιμή σε αυτό το επίπεδο. Όταν δημιουργείται μια κανονική διαφάνεια, τα σχήματα κράτησης θέσης δημιουργούνται από την επιλεγμένη διάταξη, ενώ το περιεχόμενο που εισάγεται σε αυτές τις κρατήσεις θέσης ανήκει στη κανονική διαφάνεια.

Προσθέστε τις απαιτούμενες κρατήσεις θέσης σε μια διάταξη πριν δημιουργήσετε διαφάνειες από αυτήν. Η προσθήκη μιας άλλης κράτησης θέσης σε μια διάταξη αργότερα δεν προσθέτει αυτόματα αντίστοιχο σχήμα κράτησης θέσης στις υπάρχουσες κανονικές διαφάνειες.

Αυτή η σχέση έχει δύο σημαντικές συνέπειες:

  • Η αλλαγή της κληρονομημένης μορφοποίησης ή της γεωμετρίας των υπάρχουσων κρατήσεων θέσης σε μια διάταξη μπορεί να ενημερώσει κάθε διαφάνεια που εξαρτάται από αυτήν. Πριν επεξεργαστείτε μια διάταξη που χρησιμοποιείται ήδη, ελέγξτε τις εξαρτημένες διαφάνειες και ανασκοπήστε το αποτέλεσμα.
  • Μια διάταξη που χρησιμοποιείται ακόμα από μια διαφάνεια δεν μπορεί να αφαιρεθεί. Αναθέστε πρώτα τις εξαρτημένες διαφάνειες σε άλλη διάταξη ή αφαιρέστε μόνο τις αχρησιμοποίητες διατάξεις.

Για περισσότερες πληροφορίες σχετικά με το ανώτερο επίπεδο αυτής της ιεραρχίας, δείτε το Κύρια Διαφάνεια.

Για να κρύψετε κληρονομημένα λογότυπα ή διακοσμητικά σχήματα κύριας σε μια διαφάνεια ή μέσω κοινής διάταξης, δείτε το Έλεγχος Ορατότητας Γραφικών Κύριας Διαφάνειας. Το παράδειγμα συγκρίνει δύο διαφάνειες που χρησιμοποιούν την ίδια κύρια.

Επιλογή και Εφαρμογή Διάταξης Διαφάνειας

Χρησιμοποιήστε έναν τύπο διάταξης όταν η παρουσίαση ακολουθεί τις τυπικές ορισμούς διάταξης του PowerPoint. Τα ονόματα των διατάξεων είναι επεξεργάσιμα από τον χρήστη και μπορούν να μεταφραστούν, οπότε η επιλογή με βάση το όνομα είναι λιγότερο αξιόπιστη εκτός εάν ελέγχετε το πρότυπο πηγής.

Το παρακάτω παράδειγμα αναζητά Title and Content στην πρώτη κύρια. Εάν αυτή η διάταξη δεν είναι διαθέσιμη, επαναφέρει σκόπιμα σε Blank. Ο δεύτερος έλεγχος για None είναι αναγκαίος επειδή μια παρουσίαση μπορεί να περιέχει μόνο προσαρμοσμένες διατάξεις. Η επιλεγμένη διάταξη εφαρμόζεται στη πρώτη κανονική διαφάνεια μέσω της μεθόδου Slide.setLayoutSlide.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SlideLayoutType

presentation = Presentation("input.pptx")
try:
    layout_slides = presentation.getMasters().get_Item(0).getLayoutSlides()
    target_layout = layout_slides.getByType(SlideLayoutType.TitleAndObject)

    if target_layout is None:
        target_layout = layout_slides.getByType(SlideLayoutType.Blank)

    if target_layout is None:
        print("The first master does not contain a suitable layout slide.")
    else:
        presentation.getSlides().get_Item(0).setLayoutSlide(target_layout)
        presentation.save("output-with-new-layout.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Η αλλαγή της διάταξης μιας διαφάνειας δεν αφαιρεί τα κανονικά σχήματα που προστέθηκαν απευθείας στη διαφάνεια. Ωστόσο, οι θέσεις των κρατήσεων θέσης, η κληρονομημένη μορφοποίηση και η αντιστοιχία μεταξύ των υπαρχουσών κρατήσεων θέσης και της νέας διάταξης μπορεί να αλλάξει, επομένως ελέγξτε το αποτέλεσμα όταν εναλλάσσετε μεταξύ σημαντικά διαφορετικών διατάξεων.

Προσθήκη Διάταξης Διαφάνειας

Η επιλογή και η δημιουργία είναι ξεχωριστές ενέργειες. Το προηγούμενο παράδειγμα επιλέγει μια υπάρχουσα διάταξη· δεν δημιουργεί μια. Για να δημιουργήσετε μια διάταξη, καλέστε τη μέθοδο MasterLayoutSlideCollection.add στη συλλογή διατάξεων του στοχευόμενου master.

Το παρακάτω παράδειγμα προσθέτει πάντα μια νέα διάταξη Title and Content με όνομα Report Title and Content, έπειτα προσθέτει μια κανονική διαφάνεια βασισμένη σε αυτήν. Τα ονόματα των διατάξεων πρέπει να είναι μοναδικά μέσα στη συλλογή.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SlideLayoutType

presentation = Presentation("input.pptx")
try:
    master_slide = presentation.getMasters().get_Item(0)
    report_layout = master_slide.getLayoutSlides().add(SlideLayoutType.TitleAndObject, "Report Title and Content")
    presentation.getSlides().addEmptySlide(report_layout)

    presentation.save("output-with-report-layout.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Προσθέτετε μια διάταξη μόνο όταν το πρότυπο χρειάζεται πραγματικά μια ακόμη επαναχρησιμοποιήσιμη δομή. Εάν υπάρχει ήδη μια κατάλληλη διάταξη, επιλέξτε και επαναχρησιμοποιήστε την αντί να δημιουργήσετε αντίγραφο.

Προσθήκη Κρατήσεων Θέσης σε Διάταξη Διαφάνειας

Η μέθοδος LayoutSlide.getPlaceholderManager παρέχει έναν LayoutPlaceholderManager για την προσθήκη σ shapes κράτησης θέσης σε μια διάταξη.

PowerPoint Placeholder LayoutPlaceholderManager Method
Content addContentPlaceholder
Content (Vertical) addVerticalContentPlaceholder
Text addTextPlaceholder
Text (Vertical) addVerticalTextPlaceholder
Picture addPicturePlaceholder
Chart addChartPlaceholder
Table addTablePlaceholder
SmartArt addSmartArtPlaceholder
Media addMediaPlaceholder
Online Image addOnlineImagePlaceholder

Το παρακάτω παράδειγμα επαληθεύει ότι η διάταξη Blank υπάρχει, προσθέτει τέσσερις κρατήσεις θέσης σε αυτήν, και έπειτα δημιουργεί μια κανονική διαφάνεια που χρησιμοποιεί τη τροποποιημένη διάταξη. Η σειρά είναι σκόπιμη: οι κρατήσεις θέσης προστίθενται πριν δημιουργηθεί η κανονική διαφάνεια, ώστε το Aspose.Slides να μπορεί να δημιουργήσει τα αντίστοιχα σ shapes κράτησης θέσης σε αυτή τη διαφάνεια.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SlideLayoutType

presentation = Presentation()
try:
    blank_layout = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank)

    if blank_layout is None:
        print("The presentation does not contain a Blank layout slide.")
    else:
        placeholder_manager = blank_layout.getPlaceholderManager()
        placeholder_manager.addContentPlaceholder(20, 20, 310, 270)
        placeholder_manager.addVerticalTextPlaceholder(350, 20, 350, 270)
        placeholder_manager.addChartPlaceholder(20, 310, 310, 180)
        placeholder_manager.addTablePlaceholder(350, 310, 350, 180)

        presentation.getSlides().addEmptySlide(blank_layout)
        presentation.save("output-with-placeholders.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Το αποτέλεσμα:

The placeholders on the layout slide

Αφαίρεση Αχρησιμοποίητων Διατάξεων Διαφάνειας

Χρησιμοποιήστε τη μέθοδο Compress.removeUnusedLayoutSlides για να αφαιρέσετε διατάξεις που δεν αναφέρονται από καμία κανονική διαφάνεια. Η μέθοδος αφήνει αμετάβλητες τις διατάξεις που εξακολουθούν να χρησιμοποιούνται.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Compress, Presentation, SaveFormat

presentation = Presentation("input.pptx")
try:
    Compress.removeUnusedLayoutSlides(presentation)
    presentation.save("output-without-unused-layouts.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Για να αφαιρέσετε μια συγκεκριμένη διάταξη, χρησιμοποιήστε πρώτα τη μέθοδο hasDependingSlides ή getDependingSlides. Αναθέστε τυχόν εξαρτημένες διαφάνειες πριν καλέσετε τη LayoutSlide.remove. Η προσπάθεια αφαίρεσης μιας χρησιμοποιούμενης διάταξης προκαλεί μια PptxEditException.

Έλεγχος Ορατότητας Υποσέλιδου σε Διάταξη Διαφάνειας

Μια διάταξη έχει το δικό της υποσέλιδο, αριθμό διαφάνειας και κρατήσεις θέσης ημερομηνίας-ώρας. Χρησιμοποιήστε τη μέθοδο LayoutSlide.getHeaderFooterManager για να ελέγξετε αυτές τις κρατήσεις θέσης για μία διάταξη. Αυτό είναι χρήσιμο όταν, για παράδειγμα, οι διατάξεις περιεχομένου πρέπει να εμφανίζουν υποσέλιδα ενώ οι διατάξεις τίτλου όχι.

Το παρακάτω παράδειγμα επιλέγει με ασφάλεια μια διάταξη και κάνει τα στοιχεία υποσέλιδου της ορατά:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SlideLayoutType

presentation = Presentation("input.pptx")
try:
    layout_slide = presentation.getLayoutSlides().getByType(SlideLayoutType.TitleAndObject)

    if layout_slide is None:
        layout_slide = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank)

    if layout_slide is None:
        print("The presentation does not contain a suitable layout slide.")
    else:
        header_footer_manager = layout_slide.getHeaderFooterManager()
        header_footer_manager.setFooterVisibility(True)
        header_footer_manager.setSlideNumberVisibility(True)
        header_footer_manager.setDateTimeVisibility(True)
        header_footer_manager.setFooterText("Footer text")
        header_footer_manager.setDateTimeText("Date and time text")

        presentation.save("output-with-layout-footers.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Έλεγχος Ορατότητας Υποσέλιδου σε Κύρια και τις Παράγοντες Διατάξεις της

Για να εφαρμόσετε συνεπείς ρυθμίσεις υποσέλιδου σε όλη την ιεραρχία μιας κύριας, χρησιμοποιήστε τη μέθοδο MasterSlide.getHeaderFooterManager. Οι μέθοδοι διάδοσης του MasterSlideHeaderFooterManager λειτουργούν στην κύρια και στις εξαρτημένες διατάξεις διαφάνειας και στις κανονικές διαφάνειες· δεν στοχεύουν μόνο μία κανονική διαφάνεια.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("input.pptx")
try:
    header_footer_manager = presentation.getMasters().get_Item(0).getHeaderFooterManager()
    header_footer_manager.setFooterAndChildFootersVisibility(True)
    header_footer_manager.setSlideNumberAndChildSlideNumbersVisibility(True)
    header_footer_manager.setDateTimeAndChildDateTimesVisibility(True)
    header_footer_manager.setFooterAndChildFootersText("Footer text")
    header_footer_manager.setDateTimeAndChildDateTimesText("Date and time text")

    presentation.save("output-with-master-footers.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Συχνές Ερωτήσεις

Τι Διαφορά Υπάρχει Μεταξύ Κύριας Διαφάνειας και Διάταξης Διαφάνειας;

Μια κύρια διαφάνεια ορίζει το θέμα και τη κοινή μορφοποίηση της παρουσίασης. Μια διάταξη διαφάνειας ανήκει σε μια κύρια και ορίζει μία επαναχρησιμοποιήσιμη διάταξη κρατήσεων θέσης. Οι κανονικές διαφάνειες χρησιμοποιούν αυτές τις διατάξεις και αποθηκεύουν το περιεχόμενο της διαφάνειας.

Μπορώ Να Αντιγράψω Μια Διάταξη Διαφάνειας Από Μια Παρουσίαση Σε Άλλη;

Ναι. Προσθέστε ένα αντίγραφο στη συλλογή προορισμού με τη μέθοδο addClone. Όταν αντιγράφετε μεταξύ παρουσιάσεων, επαληθεύστε επίσης γραμματοσειρές, θέματα, εικόνες και άλλους πόρους που χρησιμοποιεί η πηγή διάταξης.

Τι Συμβαίνει Όταν Τροποποιήσω Μια Διάταξη Που Χρησιμοποιείται Ήδη;

Οι εξαρτημένες διαφάνειες κληρονομούν τις αλλαγές διάταξης εκτός εάν παρακάμψουν τη μορφοποίηση ή τα αντικείμενα τοπικά. Η γεωμετρία των κρατήσεων θέσης και η κληρονομημένη μορφή μπορούν έτσι να αλλάξουν σε πολλές διαφάνειες ταυτόχρονα. Χρησιμοποιήστε τη getDependingSlides για να εντοπίσετε τις επηρεαζόμενες διαφάνειες πριν επεξεργαστείτε τη διάταξη.

Τι Συμβαίνει Αν Αφαιρέσω Μια Διάταξη Που Είναι Ακόμη Σε Χρήση;

Το Aspose.Slides προκαλεί μια PptxEditException. Αναθέστε πρώτα τις εξαρτημένες διαφάνειες ή χρησιμοποιήστε τη removeUnusedLayoutSlides για να αφαιρέσετε μόνο τις αχρησιμοποίητες διατάξεις.