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

Επισκόπηση

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

Οι πιο κοινές διατάξεις περιλαμβάνουν:

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

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

Μια παρουσίαση έχει τρία σχετικούς επίπεδα:

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

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

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

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

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

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

Για να κρύψετε κληρονομικά λογότυπα ή διακοσμητικά σχήματα κύριας σε μία διαφάνεια ή μέσω κοινής διάταξης, δείτε Control the Visibility of Master Graphics. Το παράδειγμα συγκρίνει δύο διαφάνειες που χρησιμοποιούν την ίδια κύρια.

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

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

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

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    IMasterLayoutSlideCollection layoutSlides = presentation.getMasters().get_Item(0).getLayoutSlides();
    ILayoutSlide targetLayout = layoutSlides.getByType(SlideLayoutType.TitleAndObject);

    if (targetLayout == null) {
        targetLayout = layoutSlides.getByType(SlideLayoutType.Blank);
    }

    if (targetLayout == null) {
        throw new IllegalStateException("The first master does not contain a suitable layout slide.");
    }

    presentation.getSlides().get_Item(0).setLayoutSlide(targetLayout);
    presentation.save("output-with-new-layout.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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

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

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

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

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    IMasterSlide masterSlide = presentation.getMasters().get_Item(0);
    ILayoutSlide reportLayout = masterSlide.getLayoutSlides().add(SlideLayoutType.TitleAndObject, "Report Title and Content");
    presentation.getSlides().addEmptySlide(reportLayout);

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

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

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

Η μέθοδος ILayoutSlide.getPlaceholderManager παρέχει ένα ILayoutPlaceholderManager για την προσθήκη σχημάτων δεικτών σε μια διάταξη.

Δείκτης PowerPoint ILayoutPlaceholderManager Μέθοδος
Περιεχόμενο addContentPlaceholder(float x, float y, float width, float height)
Περιεχόμενο (Κατακόρυφο) addVerticalContentPlaceholder(float x, float y, float width, float height)
Κείμενο addTextPlaceholder(float x, float y, float width, float height)
Κείμενο (Κατακόρυφο) addVerticalTextPlaceholder(float x, float y, float width, float height)
Εικόνα addPicturePlaceholder(float x, float y, float width, float height)
Διάγραμμα addChartPlaceholder(float x, float y, float width, float height)
Πίνακας addTablePlaceholder(float x, float y, float width, float height)
SmartArt addSmartArtPlaceholder(float x, float y, float width, float height)
Πολυμέσα addMediaPlaceholder(float x, float y, float width, float height)
Διαδικτυακή Εικόνα addOnlineImagePlaceholder(float x, float y, float width, float height)

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

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ILayoutSlide blankLayout = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank);

    if (blankLayout == null) {
        throw new IllegalStateException("The presentation does not contain a Blank layout slide.");
    }

    ILayoutPlaceholderManager placeholderManager = blankLayout.getPlaceholderManager();
    placeholderManager.addContentPlaceholder(20, 20, 310, 270);
    placeholderManager.addVerticalTextPlaceholder(350, 20, 350, 270);
    placeholderManager.addChartPlaceholder(20, 310, 310, 180);
    placeholderManager.addTablePlaceholder(350, 310, 350, 180);

    presentation.getSlides().addEmptySlide(blankLayout);
    presentation.save("output-with-placeholders.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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

Οι δείκτες θέσης στη διάταξη της διαφάνειας

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

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

import com.aspose.slides.*;

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

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

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

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

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    ILayoutSlide layoutSlide = presentation.getLayoutSlides().getByType(SlideLayoutType.TitleAndObject);

    if (layoutSlide == null) {
        layoutSlide = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank);
    }

    if (layoutSlide == null) {
        throw new IllegalStateException("The presentation does not contain a suitable layout slide.");
    }

    ILayoutSlideHeaderFooterManager headerFooterManager = layoutSlide.getHeaderFooterManager();
    headerFooterManager.setFooterVisibility(true);
    headerFooterManager.setSlideNumberVisibility(true);
    headerFooterManager.setDateTimeVisibility(true);
    headerFooterManager.setFooterText("Footer text");
    headerFooterManager.setDateTimeText("Date and time text");

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

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

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

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    IMasterSlideHeaderFooterManager headerFooterManager = presentation.getMasters().get_Item(0).getHeaderFooterManager();
    headerFooterManager.setFooterAndChildFootersVisibility(true);
    headerFooterManager.setSlideNumberAndChildSlideNumbersVisibility(true);
    headerFooterManager.setDateTimeAndChildDateTimesVisibility(true);
    headerFooterManager.setFooterAndChildFootersText("Footer text");
    headerFooterManager.setDateTimeAndChildDateTimesText("Date and time text");

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

FAQ

Ποια είναι η διαφορά μεταξύ μιας κύριας διαφάνειας και μιας διάταξης διαφάνειας;

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

Μπορώ να αντιγράψω μια διάταξη διαφάνειας από μια παρουσίαση σε μία άλλη;

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

Τι συμβαίνει όταν τροποποιώ μια διάταξη που χρησιμοποιείται ήδη;

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

Τι συμβαίνει αν αφαιρέσω μια διάταξη που χρησιμοποιείται ακόμα;

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