Διαχείριση Ιδιοτήτων Παρουσίασης με Python
Εισαγωγή
Το Aspose.Slides for Python via .NET υποστηρίζει ενσωματωμένες και προσαρμοσμένες ιδιότητες εγγράφου. Χρησιμοποιήστε αυτές τις ιδιότητες για να διαβάσετε και να ενημερώσετε τα μεταδεδομένα της παρουσίασης, όπως ο συγγραφέας, ο τίτλος και οι τιμές που ορίζονται από τον χρήστη.
Το Aspose.Slides σας επιτρέπει να εργαστείτε με τις ιδιότητες εγγράφου παρουσίασης μέσω της κλάσης DocumentProperties . Μια παρουσία της κλάσης αυτής επιστρέφεται από το Presentation.document_properties. Τα παρακάτω παραδείγματα δείχνουν πώς να διαβάσετε, να τροποποιήσετε και να διαχειριστείτε αυτές τις ιδιότητες.
Note
Το Aspose.Slides διαχειρίζεται τα μεταδεδομένα της εφαρμογής και του παραγωγού κατά την αποθήκευση παρουσιάσεων· αυτά τα πεδία αναγνωρίζουν το λογισμικό που δημιούργησε το αποτέλεσμα.Διαχείριση Ιδιοτήτων Παρουσίασης
Οι ιδιότητες εγγράφου αποθηκεύουν περιγραφικές πληροφορίες μαζί με το περιεχόμενο της παρουσίασης. Κατατάσσονται σε δύο κατηγορίες:
- Ενσωματωμένες ιδιότητες περιέχουν τυπικά μεταδεδομένα, όπως ο τίτλος, ο συγγραφέας και τα στατιστικά του εγγράφου.
- Προσαρμοσμένες ιδιότητες αποθηκεύουν ζεύγη όνομα/τιμή που ορίζονται από τον χρήστη.
Το Aspose.Slides for Python via .NET παρέχει πρόσβαση και στις δύο κατηγορίες. Στο PowerPoint, επιλέξτε File → Info → Properties → Advanced Properties για να ελέγξετε τα μεταδεδομένα του εγγράφου. Ο διάλογος ομαδοποιεί τις πληροφορίες σε καρτέλες όπως Περίληψη, Στατιστικά, Περιεχόμενα και Custom. Χρησιμοποιήστε την καρτέλα Custom για να διαχειριστείτε τις ιδιότητες που ορίζονται από το χρήστη.
Ανάγνωση Δημόσιων Ιδιοτήτων από Κρυπτογραφημένη Παρουσίαση
Ένας κωδικός πρόσβασης ανοιχτής συνήθως προστατεύει τόσο το περιεχόμενο της παρουσίασης όσο και τις ιδιότητες εγγράφου. Όταν μια παρουσίαση κρυπτογραφείται με το ProtectionManager.encrypt_document_properties ορισμένο σε False, οι ιδιότητες εγγράφου παραμένουν δημόσιες. Μια εφαρμογή μπορεί στη συνέχεια να ορίσει το LoadOptions.only_load_document_properties σε True και να διαβάσει τα δημόσια μεταδεδομένα χωρίς να παρέχει τον κωδικό πρόσβασης.
LoadOptions.only_load_document_properties ελέγχει τι φορτώνει το Aspose.Slides· δεν αποκρυπτογραφεί τίποτα. Εάν οι ιδιότητες περιλαμβάνονταν στην κρυπτογράφηση, η φόρτωσή τους χωρίς κωδικό αποτυγχάνει. Εάν η παρουσίαση δεν είναι κρυπτογραφημένη, η επιλογή αγνοείται και φορτώνεται ολόκληρη η παρουσίαση.
Το παράδειγμα απαιτεί μια κρυπτογραφημένη παρουσίαση της οποίας οι ιδιότητες εγγράφου έχουν παραμείνει δημόσιες. Επαληθεύει τη λειτουργία φόρτωσης μέσω του ProtectionManager.is_only_document_properties_loaded και στη συνέχεια διαβάζει τις ενσωματωμένες ιδιότητες μέσω του Presentation.document_properties:
import aspose.slides as slides
load_options = slides.LoadOptions()
load_options.only_load_document_properties = True
with slides.Presentation("public-properties-encrypted.pptx", load_options) as presentation:
if presentation.protection_manager.is_only_document_properties_loaded:
document_properties = presentation.document_properties
print("Author: " + document_properties.author)
print("Title: " + document_properties.title)
print("Keywords: " + document_properties.keywords)
else:
print("The presentation was not loaded in document-properties-only mode.")
Σε αυτή τη λειτουργία, το περιεχόμενο των διαφάνειων δεν φορτώνεται. Διαφάνειες, master, διατάξεις, σχήματα, μέσα και άλλα αντικείμενα παρουσίασης δεν είναι διαθέσιμα. Οι εφαρμογές πρέπει πάντα να ελέγχουν το ProtectionManager.is_only_document_properties_loaded πριν εκτελέσουν ενέργεια που απαιτεί το πλήρες μοντέλο αντικειμένων της παρουσίασης.
Security
Τα δημόσια μεταδεδομένα ενδέχεται να αποκαλύψουν ονόματα συγγραφέων, τίτλους, θέματα, λέξεις-κλειδιά, πληροφορίες εταιρείας, σχόλια και προσαρμοσμένες τιμές. Κρυπτογραφήστε τις ευαίσθητες ιδιότητες μαζί με την παρουσίαση. Αφήστε τις δημόσιες μόνο όταν συστήματα ευρετηρίασης, ταξινόμησης, αναζήτησης ή διαχείρισης εγγράφων έχουν συγκεκριμένη απαίτηση πρόσβασης χωρίς κωδικό.Ενημέρωση Ιδιοτήτων Κρυπτογραφημένης Παρουσίασης
Για ένα κρυπτογραφημένο αρχείο PPTX, μια παρουσίαση που φορτώνεται με το LoadOptions.only_load_document_properties προορίζεται για ανάγνωση δημόσιων μεταδεδομένων. Το Aspose.Slides δεν μπορεί να αποθηκεύσει τις αλλαγμένες ιδιότητες από αυτό το αντικείμενο μόνο-με-μεταδεδομένα, επειδή οι δημόσιες ιδιότητες πρέπει να παραμείνουν σύμφωνες με τα αντίστοιχα δεδομένα μέσα στην κρυπτογραφημένη παρουσίαση. Η ενημέρωσή τους επομένως απαιτεί τον σωστό κωδικό πρόσβασης ανοίγματος και μια πλήρη φόρτωση.
Το παράδειγμα απαιτεί μια κρυπτογραφημένη παρουσίαση PPTX με δημόσιες ιδιότητες εγγράφου και έναν γνωστό κωδικό πρόσβασης ανοίγματος. Ανοίγει την πλήρη παρουσίαση με το LoadOptions.password, ενημερώνει τις δημόσιες ενσωματωμένες ιδιότητες και αποθηκεύει το αποτέλεσμα. Στη συνέχεια χρησιμοποιεί το PresentationInfo.is_encrypted για να επαληθεύσει ότι η κρυπτογράφηση διατηρείται και ανοίγει ξανά τα δημόσια μεταδεδομένα χωρίς κωδικό για να ελέγξει τις νέες τιμές:
import aspose.slides as slides
input_path = "public-properties-encrypted.pptx"
output_path = "updated-public-properties-encrypted.pptx"
load_options = slides.LoadOptions()
load_options.password = "open_password"
with slides.Presentation(input_path, load_options) as presentation:
document_properties = presentation.document_properties
document_properties.title = "Updated Product Roadmap"
document_properties.keywords = "roadmap, planning, indexed"
presentation.save(output_path, slides.export.SaveFormat.PPTX)
presentation_info = slides.PresentationFactory.instance.get_presentation_info(output_path)
print("The presentation is encrypted: " + str(presentation_info.is_encrypted))
metadata_load_options = slides.LoadOptions()
metadata_load_options.only_load_document_properties = True
with slides.Presentation(output_path, metadata_load_options) as metadata_presentation:
if metadata_presentation.protection_manager.is_only_document_properties_loaded:
print("Title: " + metadata_presentation.document_properties.title)
print("Keywords: " + metadata_presentation.document_properties.keywords)
else:
print("The presentation was not loaded in document-properties-only mode.")
Εάν μια εφαρμογή δεν έχει άδεια να αποκρυπτογραφήσει ή να φορτώσει το περιεχόμενο της παρουσίασης, πρέπει να θεωρεί τις δημόσιες ιδιότητες ενός κρυπτογραφημένου αρχείου PPTX μόνο για ανάγνωση.
Πρόσβαση σε Ενσωματωμένες Ιδιότητες
Η κλάση DocumentProperties εκθέτει ενσωματωμένα μεταδεδομένα μέσω τυποποιημένων ιδιοτήτων, συμπεριλαμβανομένων των DocumentProperties.author, DocumentProperties.title, και DocumentProperties.created_time. Αυτό το παράδειγμα ανοίγει μια υπάρχουσα παρουσίαση και εκτυπώνει τα αποθηκευμένα μεταδεδομένα της στην κονσόλα. Οι τιμές εξαρτώνται από την παρουσίαση εισόδου· ορισμένα πεδία μπορεί να είναι κενά.
import aspose.slides as slides
with slides.Presentation("AccessBuiltInProperties.pptx") as presentation:
document_properties = presentation.document_properties
print("Category:", document_properties.category)
print("Content status:", document_properties.content_status)
print("Creation date:", document_properties.created_time)
print("Author:", document_properties.author)
print("Comments:", document_properties.comments)
print("Keywords:", document_properties.keywords)
print("Last modified by:", document_properties.last_saved_by)
print("Manager:", document_properties.manager)
print("Modified date:", document_properties.last_saved_time)
print("Presentation format:", document_properties.presentation_format)
print("Last print date:", document_properties.last_printed)
print("Is shared between producers:", document_properties.shared_doc)
print("Subject:", document_properties.subject)
print("Title:", document_properties.title)
Τροποποίηση Ενσωματωμένων Ιδιοτήτων
Για να ενημερώσετε τα ενσωματωμένα μεταδεδομένα, εκχωρήστε τιμές στις εγγράψιμες ιδιότητες που εκτίθενται από το Presentation.document_properties. Αυτό το παράδειγμα ανοίγει μια υπάρχουσα παρουσίαση, ορίζει τις DocumentProperties.author, DocumentProperties.title, DocumentProperties.subject, DocumentProperties.comments, και DocumentProperties.manager, έπειτα αποθηκεύει την ενημερωμένη παρουσίαση με το Presentation.save. Το αποθηκευμένο PPTX περιέχει τα νέα μεταδεδομένα.
import aspose.slides as slides
with slides.Presentation("ModifyBuiltInProperties.pptx") as presentation:
document_properties = presentation.document_properties
document_properties.author = "Aspose.Slides for Python via .NET"
document_properties.title = "Manage PowerPoint Presentation Properties"
document_properties.subject = "Modify Built-in Properties"
document_properties.comments = "Aspose description"
document_properties.manager = "Aspose manager"
presentation.save("DocumentProperties_output.pptx", slides.export.SaveFormat.PPTX)
Διαχείριση Βάσης Υπερσυνδέσμου
DocumentProperties.hyperlink_base αποθηκεύει τη βάση επιπέδου εγγράφου για σχετικούς υπερσυνδέσμους. Αυτό είναι χρήσιμο όταν μετακινείται μια παρουσίαση και τα συνδεδεμένα αρχεία της σε άλλη τοποθεσία. Είναι ξεχωριστό από το Hyperlink.external_url ενός μεμονωμένου υπερσυνδέσμου: η αλλαγή της βάσης δεν επανεγγράφει τις αποθηκευμένες διευθύνσεις συνδέσμου ούτε αλλάζει τις απόλυτες προορισμούς.
Το παράδειγμα απαιτεί μια παρουσίαση που περιέχει τόσο έναν σχετικό σύνδεσμο, όπως target.html, όσο και έναν απόλυτο σύνδεσμο προς αρχείο ή ιστοσελίδα. Διαβάζει τη υπάρχουσα βάση, ορίζει μια νέα διεύθυνση βάσης, και αποθηκεύει και ανοίγει ξανά την παρουσίαση για να ελέγξει την τιμή. Στη συνέχεια καθαρίζει τη βάση με "" και επαληθεύει την κενή τιμή σε ξεχωριστό αποθηκευμένο αρχείο. Αντικαταστήστε τη διεύθυνση βάσης του παραδείγματος με τη θέση των συνδεδεμένων αρχείων σας.
import aspose.slides as slides
with slides.Presentation("hyperlinks.pptx") as presentation:
print("Original base:", presentation.document_properties.hyperlink_base)
new_base = "https://example.com/new/"
presentation.document_properties.hyperlink_base = new_base
presentation.save("hyperlinks-updated.pptx", slides.export.SaveFormat.PPTX)
with slides.Presentation("hyperlinks-updated.pptx") as updated_presentation:
print("Base preserved:", updated_presentation.document_properties.hyperlink_base == new_base)
updated_presentation.document_properties.hyperlink_base = ""
updated_presentation.save("hyperlinks-cleared.pptx", slides.export.SaveFormat.PPTX)
with slides.Presentation("hyperlinks-cleared.pptx") as cleared_presentation:
print("Base cleared:", cleared_presentation.document_properties.hyperlink_base == "")
Τα δύο μηνύματα επαλήθευσης πρέπει να εκτυπώσουν True. Η εκκαθάριση της βάσης αφήνει ανέπαφες τις διευθύνσεις των μεμονωμένων υπερσυνδέσμων.
Ένας σχετικός σύνδεσμος προς target.pptx άνοιγε old/target.pptx όταν η βάση έδειχνε στο φάκελο old. Αφού αλλάξετε τη βάση στο φάκελο new, αποθηκεύσετε και ανοίξετε ξανά την παρουσίαση, ο ίδιος σύνδεσμος άνοιξε new/target.pptx. Ένας απόλυτος σύνδεσμος συνέχισε να ανοίγει το ίδιο αρχείο. Δοκιμάστε τους σχετικούς συνδέσμους σας στο PowerPoint πριν και μετά τη μετακίνηση της παρουσίασης ή την αλλαγή της βάσης.
Προσθήκη Προσαρμοσμένων Ιδιοτήτων Παρουσίασης
Οι προσαρμοσμένες ιδιότητες αποθηκεύουν μεταδεδομένα που δεν έχουν αντίστοιχο ενσωματωμένο πεδίο. Η μέθοδος DocumentProperties.set_custom_property_value σας επιτρέπει να εκχωρήσετε μια τιμή με βάση το όνομα της ιδιότητας. Αυτό το παράδειγμα δημιουργεί μια παρουσίαση, προσθέτει δύο τιμές κειμένου και μια ακέραια τιμή έκδοσης, και αποθηκεύει την παρουσίαση με το Presentation.save. Η εκχώρηση τιμής σε υπάρχον όνομα αντικαθιστά την τιμή της ιδιότητας.
import aspose.slides as slides
with slides.Presentation() as presentation:
document_properties = presentation.document_properties
document_properties.set_custom_property_value("Reviewed by", "John Smith")
document_properties.set_custom_property_value("Confidentiality level", "Internal")
document_properties.set_custom_property_value("Document version", 2)
presentation.save("CustomDocumentProperties_output.pptx", slides.export.SaveFormat.PPTX)
Πρόσβαση και Τροποποίηση Προσαρμοσμένων Ιδιοτήτων
Αυτό το παράδειγμα ανοίγει μια παρουσίαση που περιέχει προσαρμοσμένες ιδιότητες και χρησιμοποιεί το DocumentProperties.count_of_custom_properties για να τις επαναλάβει. Το DocumentProperties.get_custom_property_name δέχεται δείκτη μηδενικής βάσης και επιστρέφει το όνομα που χρησιμοποιείται από το DocumentProperties.set_custom_property_value. Το παράδειγμα απαιτεί μια παρουσίαση της οποίας οι προσαρμοσμένες ιδιότητες είναι όλα strings. Εκτυπώνει κάθε αρχικό όνομα και τιμή, αντικαθιστά κάθε τιμή με μια αριθμημένη συμβολοσειρά και αποθηκεύει τις αλλαγές. Εάν δεν υπάρχουν προσαρμοσμένες ιδιότητες, ο βρόχος δεν κάνει αλλαγές.
import aspose.slides as slides
with slides.Presentation("AccessAndModifyProperties.pptx") as presentation:
document_properties = presentation.document_properties
for i in range(document_properties.count_of_custom_properties):
property_name = document_properties.get_custom_property_name(i)
property_value = [""]
document_properties.get_custom_property_value(property_name, property_value)
print("Custom property name:", property_name)
print("Custom property value:", property_value[0])
document_properties.set_custom_property_value(property_name, "New Value " + str(i + 1))
presentation.save("CustomProperties_output.pptx", slides.export.SaveFormat.PPTX)
DocumentProperties.get_custom_property_value επιστρέφει την τιμή μέσω της μονοστοιχειούλας λίστας που περνιέται ως δεύτερη παράμετρος. Η θέση κράτησης πρέπει να ταιριάζει με τον τύπο της αποθηκευμένης ιδιότητας: χρησιμοποιήστε [""] για string ή [0] για ακέραιο. Ένας λανθασμένος τύπος προκαλεί InvalidCastException; επιλέξτε τη θέση κράτησης σύμφωνα με το σχήμα των προσαρμοσμένων ιδιοτήτων σας.
Ζωντανό Παράδειγμα
Δοκιμάστε την εφαρμογή Προβολή & Επεξεργασία Μεταδεδομένων PowerPoint online για να δείτε πώς να εργάζεστε με τις ιδιότητες εγγράφου χρησιμοποιώντας το API του Aspose.Slides:
ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ
Πώς μπορώ να αφαιρέσω μια ενσωματωμένη ιδιότητα από μια παρουσίαση;
Οι ενσωματωμένες ιδιότητες είναι αναπόσπαστο μέρος της παρουσίασης και δεν μπορούν να αφαιρεθούν εντελώς. Ωστόσο, μπορείτε είτε να αλλάξετε τις τιμές τους είτε να τις θέσετε κενές, εφόσον το επιτρέπει η συγκεκριμένη ιδιότητα.
Τι συμβαίνει αν προσθέσω μια προσαρμοσμένη ιδιότητα που ήδη υπάρχει;
Αν προσθέσετε μια προσαρμοσμένη ιδιότητα που ήδη υπάρχει, η υπάρχουσα τιμή της θα αντικατασταθεί με τη νέα. Δεν χρειάζεται να αφαιρέσετε ή να ελέγξετε την ιδιότητα εκ των προτέρων, καθώς το Aspose.Slides ενημερώνει αυτόματα την τιμή της ιδιότητας.
Μπορώ να αποκτήσω πρόσβαση στις ιδιότητες της παρουσίασης χωρίς να φορτώσω πλήρως την παρουσίαση;
Ναι. Χρησιμοποιήστε το PresentationFactory.get_presentation_info και μετά το PresentationInfo.read_document_properties για να διαβάσετε τα αποθηκευμένα μεταδεδομένα εγγράφου χωρίς να δημιουργήσετε μια παρουσίαση Presentation . Δείτε το Δημιουργία Ελαφρού Αποθέματος Παρουσιάσεων για ένα πλήρες παράδειγμα αναφοράς και περιορισμούς ειδικά για μορφές.
Μπορώ να διαβάσω δημόσιες ιδιότητες κρυπτογραφημένης παρουσίασης χωρίς τον κωδικό πρόσβασής της;
Ναι. Η παρουσίαση πρέπει να έχει κρυπτογραφηθεί με το ProtectionManager.encrypt_document_properties ορισμένο σε False, και πρέπει να φορτωθεί με το LoadOptions.only_load_document_properties ορισμένο σε True.
Μπορώ να ενημερώσω ένα κρυπτογραφημένο αρχείο PPTX σε λειτουργία μόνο-ιδιοτήτων-εγγράφου;
Όχι. Τα δημόσια και κρυπτογραφημένα δεδομένα ιδιοτήτων πρέπει να παραμένουν συνεπή, επομένως η ενημέρωση ενός κρυπτογραφημένου αρχείου PPTX απαιτεί τη φόρτωση της πλήρους παρουσίασης με τον σωστό κωδικό πρόσβασης.
