Gestire le proprietà della presentazione in Python
Introduzione
Aspose.Slides supporta due tipi di proprietà del documento: Built-in e Custom. Entrambi questi tipi di proprietà possono essere facilmente accessibili e gestiti tramite l’API di Aspose.Slides.
Aspose.Slides consente di lavorare con le proprietà del documento della presentazione attraverso la classe DocumentProperties. Un’istanza di questa classe viene restituita da Presentation.getDocumentProperties. Gli esempi seguenti mostrano come leggere, modificare e gestire queste proprietà.
Nota
Si noti che i campi Application e AppVersion non possono essere modificati. Aspose.Slides li riscrive a ogni salvataggio, quindi una presentazione salvata riporta sempre “Aspose.Slides for Java” e la versione della libreria che l’ha generata. Qualsiasi valore passato a DocumentProperties.setNameOfApplication viene scartato quando la presentazione viene scritta.Proprietà del documento in PowerPoint
Microsoft PowerPoint 2007 consente di gestire le proprietà del documento dei file di presentazione. Fare clic sull’icona Office e selezionare Prepare | Properties | Advanced Properties, come mostrato di seguito:
| Selezione voce di menu Proprietà avanzate |
|---|
![]() |
| Dopo aver selezionato Advanced Properties, appare una finestra di dialogo in cui è possibile gestire le proprietà del documento del file PowerPoint: |
| Finestra Proprietà |
|---|
![]() |
| La Finestra Proprietà contiene schede come General, Summary, Statistics, Contents e Custom. Queste schede consentono di configurare diversi tipi di informazioni sui file PowerPoint. Utilizzare la scheda Custom per gestire le proprietà personalizzate. |
Lavorare con le proprietà del documento usando Aspose.Slides per Python via Java
Come descritto in precedenza, Aspose.Slides per Python via Java supporta sia le proprietà Built-in sia le Custom del documento. La classe DocumentProperties rappresenta le proprietà del documento associate a un file di presentazione.
Utilizzare Presentation.getDocumentProperties per accedere a queste proprietà come descritto di seguito.
Leggere le proprietà pubbliche da una presentazione crittografata
Una password di apertura protegge normalmente sia il contenuto della presentazione sia le proprietà del documento. Quando una presentazione è crittografata passando false a ProtectionManager.setEncryptDocumentProperties, le sue proprietà del documento rimangono pubbliche. Un’applicazione può quindi passare true a LoadOptions.setOnlyLoadDocumentProperties e leggere i metadati pubblici senza fornire la password di apertura.
L’opzione document-properties-only controlla cosa Aspose.Slides carica; non decritta nulla. Se le proprietà fossero incluse nella crittografia, il loro caricamento senza password fallisce. Se la presentazione non è crittografata, l’opzione è ignorata e l’intera presentazione viene caricata.
L’esempio seguente verifica la modalità di caricamento tramite ProtectionManager.isOnlyDocumentPropertiesLoaded e quindi legge le proprietà built-in tramite Presentation.getDocumentProperties:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, LoadOptions
load_options = LoadOptions()
load_options.setOnlyLoadDocumentProperties(True)
presentation = Presentation("public-properties-encrypted.pptx", load_options)
try:
if presentation.getProtectionManager().isOnlyDocumentPropertiesLoaded():
properties = presentation.getDocumentProperties()
print("Author: ", properties.getAuthor())
print("Title: ", properties.getTitle())
print("Keywords: ", properties.getKeywords())
else:
print("The presentation was not loaded in document-properties-only mode.")
finally:
presentation.dispose()
In questa modalità, il contenuto delle diapositive non viene caricato. Diapositive, master, layout, forme, media e altri oggetti della presentazione non sono disponibili. Le applicazioni dovrebbero sempre verificare ProtectionManager.isOnlyDocumentPropertiesLoaded prima di eseguire un’operazione che richiede il modello completo degli oggetti della presentazione.
Attenzione
I metadati pubblici possono esporre nomi degli autori, titoli, argomenti, parole chiave, informazioni aziendali, commenti e valori personalizzati. Crittografare le proprietà sensibili insieme alla presentazione. Lasciarle pubbliche solo quando sistemi di indicizzazione, classificazione, ricerca o gestione documentale hanno requisiti specifici per accedervi senza password.Aggiornare le proprietà di una presentazione crittografata
Per un file PPTX crittografato, una presentazione caricata in modalità document-properties-only è destinata alla lettura dei metadati pubblici. Aspose.Slides non può salvare le proprietà modificate da quell’oggetto “solo metadati” perché le proprietà pubbliche devono rimanere coerenti con i dati corrispondenti all’interno della presentazione crittografata. Pertanto l’aggiornamento richiede la password di apertura corretta e un caricamento completo.
L’esempio seguente apre la presentazione con LoadOptions.setPassword, aggiorna le proprietà built-in pubbliche e salva il risultato. Poi utilizza PresentationInfo.isEncrypted per verificare che la crittografia sia preservata e riapre i metadati pubblici senza password per verificare i nuovi valori:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, LoadOptions, PresentationFactory, SaveFormat
input_path = "public-properties-encrypted.pptx"
output_path = "updated-public-properties-encrypted.pptx"
load_options = LoadOptions()
load_options.setPassword("open_password")
presentation = Presentation(input_path, load_options)
try:
presentation.getDocumentProperties().setTitle("Updated Product Roadmap")
presentation.getDocumentProperties().setKeywords("roadmap, planning, indexed")
presentation.save(output_path, SaveFormat.Pptx)
finally:
presentation.dispose()
presentation_info = PresentationFactory.getInstance().getPresentationInfo(output_path)
print("The presentation is encrypted: ", presentation_info.isEncrypted())
metadata_load_options = LoadOptions()
metadata_load_options.setOnlyLoadDocumentProperties(True)
metadata_presentation = Presentation(output_path, metadata_load_options)
try:
if metadata_presentation.getProtectionManager().isOnlyDocumentPropertiesLoaded():
print("Title: ", metadata_presentation.getDocumentProperties().getTitle())
print("Keywords: ", metadata_presentation.getDocumentProperties().getKeywords())
else:
print("The presentation was not loaded in document-properties-only mode.")
finally:
metadata_presentation.dispose()
Se un’applicazione non è autorizzata a decrittare o caricare il contenuto della presentazione, deve trattare le proprietà pubbliche di un file PPTX crittografato come sola lettura.
Accedere alle proprietà Built-in
Le proprietà built-in esposte da DocumentProperties includono: Creator (Author), Description, Created (Creation Date), Modified (Modification Date), Printed (Last Print Date), LastModifiedBy, Keywords, SharedDoc (Is shared between different producers?), PresentationFormat, Subject e Title.
import jpype
import asposeslides
if not jpile.isJVMStarted():
jpile.startJVM()
from asposeslides.api import Presentation, DocumentProperties
# Istanzia la classe Presentation che rappresenta la presentazione
presentation = Presentation("Presentation.pptx")
try:
# Crea un riferimento all'oggetto DocumentProperties associato alla Presentazione
properties = presentation.getDocumentProperties()
# Visualizza le proprietà integrate
print("Category : ", properties.getCategory())
print("Current Status : ", properties.getContentStatus())
print("Creation Date : ", properties.getCreatedTime())
print("Author : ", properties.getAuthor())
print("Description : ", properties.getComments())
print("KeyWords : ", properties.getKeywords())
print("Last Modified By : ", properties.getLastSavedBy())
print("Supervisor : ", properties.getManager())
print("Modified Date : ", properties.getLastSavedTime())
print("Presentation Format : ", properties.getPresentationFormat())
print("Last Print Date : ", properties.getLastPrinted())
print("Is Shared between producers : ", properties.getSharedDoc())
print("Subject : ", properties.getSubject())
print("Title : ", properties.getTitle())
finally:
presentation.dispose()
Modificare le proprietà Built-in
Modificare le proprietà built-in è semplice come accedervi. Utilizzare il setter corrispondente per assegnare un nuovo valore. L’esempio seguente modifica le proprietà del documento built-in usando Aspose.Slides per Python via Java.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, DocumentProperties
presentation = Presentation("Presentation.pptx")
try:
# Crea un riferimento all'oggetto DocumentProperties associato alla Presentazione
properties = presentation.getDocumentProperties()
# Imposta le proprietà integrate
properties.setAuthor("Aspose.Slides for Python via Java")
properties.setTitle("Modifying Presentation Properties")
properties.setSubject("Aspose Subject")
properties.setComments("Aspose Description")
properties.setManager("Aspose Manager")
# Salva la presentazione in un file
presentation.save("DocProps.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Questo esempio modifica le proprietà built-in della presentazione, come mostrato di seguito:
| Proprietà del documento Built-in dopo la modifica |
|---|
![]() |
Aggiungere proprietà del documento personalizzate
Aspose.Slides per Python via Java consente anche agli sviluppatori di aggiungere proprietà del documento personalizzate alle presentazioni. L’esempio qui sotto aggiunge tre proprietà personalizzate, quindi cerca il nome memorizzato all’indice 2 e rimuove quella proprietà, così la presentazione salvata ne mantiene due. Le proprietà personalizzate sono indicizzate in ordine alfabetico, non nell’ordine di aggiunta.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
# Ottenere le proprietà del documento
properties = presentation.getDocumentProperties()
# Aggiungere proprietà personalizzate
properties.set_Item("New Custom", jpype.JInt(12))
properties.set_Item("My Name", "Mudassir")
properties.set_Item("Custom", jpype.JInt(124))
# Ottenere il nome della proprietà a un indice specifico
property_name = properties.getCustomPropertyName(2)
# Rimuovere la proprietà selezionata
properties.removeCustomProperty(property_name)
# Salvare la presentazione
presentation.save("CustomDemo.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
| Proprietà del documento personalizzate aggiunte |
|---|
![]() |
Accedere e modificare le proprietà personalizzate
Aspose.Slides per Python via Java consente anche agli sviluppatori di accedere ai valori delle proprietà personalizzate. L’esempio seguente mostra come accedere e modificare tutte le proprietà personalizzate in una presentazione.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, DocumentProperties
presentation = Presentation("Presentation.pptx")
try:
# Crea un riferimento all'oggetto DocumentProperties associato alla Presentazione
properties = presentation.getDocumentProperties()
# Accedi e modifica le proprietà personalizzate
for i in range(properties.getCountOfCustomProperties()):
property_name = properties.getCustomPropertyName(i)
# Visualizza nomi e valori delle proprietà personalizzate
print("Custom Property Name : ", property_name)
print("Custom Property Value : ", properties.get_Item(property_name))
# Modifica i valori delle proprietà personalizzate
properties.set_Item(property_name, f"New Value {i + 1}")
# Salva la tua presentazione in un file
presentation.save("CustomDemoModified.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Questo esempio modifica le proprietà personalizzate della presentazione PPTX. Le figure seguenti mostrano le proprietà personalizzate della presentazione prima e dopo la modifica:
| Proprietà personalizzate prima della modifica |
|---|
![]() |
| Proprietà personalizzate dopo la modifica |
|---|
![]() |
Proprietà avanzate del documento
Nota
Sono stati aggiunti i nuovi metodi readDocumentProperties, updateDocumentProperties e writeBindedPresentation alla classe PresentationInfo, e il comportamento del metodo DocumentProperties.setLastSavedTime è cambiato.I due nuovi metodi readDocumentProperties e updateDocumentProperties sono stati aggiunti alla classe PresentationInfo. Forniscono un accesso rapido alle proprietà del documento e consentono di modificare e aggiornare le proprietà senza caricare l’intera presentazione.
Il tipico flusso di lavoro di caricamento delle proprietà, modifica dei loro valori e aggiornamento del documento può essere implementato come segue:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PresentationFactory
# Leggi le informazioni della presentazione
presentation_info = PresentationFactory.getInstance().getPresentationInfo("presentation.pptx")
# Ottieni le proprietà correnti
properties = presentation_info.readDocumentProperties()
# Imposta i nuovi valori dei campi Autore e Titolo
properties.setAuthor("New Author")
properties.setTitle("New Title")
# Aggiorna la presentazione con i nuovi valori
presentation_info.updateDocumentProperties(properties)
presentation_info.writeBindedPresentation("presentation.pptx")
Esiste un altro modo per utilizzare le proprietà di una presentazione specifica come modello per aggiornare le proprietà in altre presentazioni:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PresentationFactory
presentation_info = PresentationFactory.getInstance().getPresentationInfo("template.pptx")
template = presentation_info.readDocumentProperties()
template.setAuthor("Template Author")
template.setTitle("Template Title")
template.setCategory("Template Category")
template.setKeywords("Keyword1, Keyword2, Keyword3")
template.setCompany("Our Company")
template.setComments("Created from template")
template.setContentType("Template Content")
template.setSubject("Template Subject")
for path in ["doc1.pptx", "doc2.odp", "doc3.ppt"]:
presentation_to_update = PresentationFactory.getInstance().getPresentationInfo(path)
presentation_to_update.updateDocumentProperties(template)
presentation_to_update.writeBindedPresentation(path)
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PresentationFactory
def update_by_template(path, template):
presentation_to_update = PresentationFactory.getInstance().getPresentationInfo(path)
presentation_to_update.updateDocumentProperties(template)
presentation_to_update.writeBindedPresentation(path)
È possibile creare un nuovo modello da zero e poi usarlo per aggiornare più presentazioni:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PresentationFactory, DocumentProperties
template = DocumentProperties()
template.setAuthor("Template Author")
template.setTitle("Template Title")
template.setCategory("Template Category")
template.setKeywords("Keyword1, Keyword2, Keyword3")
template.setCompany("Our Company")
template.setComments("Created from template")
template.setContentType("Template Content")
template.setSubject("Template Subject")
for path in ["doc1.pptx", "doc2.odp", "doc3.ppt"]:
presentation_to_update = PresentationFactory.getInstance().getPresentationInfo(path)
presentation_to_update.updateDocumentProperties(template)
presentation_to_update.writeBindedPresentation(path)
Impostare la lingua di correzione
Aspose.Slides fornisce il metodo PortionFormat.setLanguageId per impostare la lingua di correzione per un documento PowerPoint. La lingua di correzione è la lingua per la quale ortografia e grammatica nella presentazione vengono verificate.
Questo codice Python mostra come impostare la lingua di correzione per un PowerPoint:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, Portion, FontData
pptx_file_name = "presentation.pptx"
presentation = Presentation(pptx_file_name)
try:
auto_shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)
paragraph.getPortions().clear()
new_portion = Portion()
font = FontData("SimSun")
portion_format = new_portion.getPortionFormat()
portion_format.setComplexScriptFont(font)
portion_format.setEastAsianFont(font)
portion_format.setLatinFont(font)
portion_format.setLanguageId("zh-CN") # imposta l'Id di una lingua di correzione
new_portion.setText("1。")
paragraph.getPortions().add(new_portion)
finally:
presentation.dispose()
Impostare la lingua predefinita
Questo codice Python mostra come impostare la lingua predefinita per un’intera presentazione PowerPoint:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, LoadOptions, ShapeType
load_options = LoadOptions()
load_options.setDefaultTextLanguage("en-US")
presentation = Presentation(load_options)
try:
# Aggiunge una forma rettangolare con testo
shape = presentation.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 50)
shape.getTextFrame().setText("New Text")
# Controlla la lingua della prima porzione
print(shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat().getLanguageId())
finally:
presentation.dispose()
Esempio live
Prova l’app online Aspose.Slides Metadata per vedere come lavorare con le proprietà del documento tramite l’API di Aspose.Slides:
FAQ
Come posso rimuovere una proprietà Built-in da una presentazione?
Le proprietà built-in sono una parte integrante della presentazione e non possono essere rimosse completamente. Tuttavia, è possibile modificarne i valori o impostarle a vuoto se la proprietà specifica lo consente.
Cosa succede se aggiungo una proprietà personalizzata che esiste già?
Se aggiungi una proprietà personalizzata che esiste già, il suo valore esistente verrà sovrascritto con quello nuovo. Non è necessario rimuovere o verificare la proprietà in anticipo, poiché Aspose.Slides aggiorna automaticamente il valore della proprietà.
Posso accedere alle proprietà della presentazione senza caricare completamente la presentazione?
Sì. Utilizzare PresentationFactory.getPresentationInfo e poi PresentationInfo.readDocumentProperties per leggere i metadati del documento memorizzati senza creare un’istanza di Presentation. Vedi Build a Lightweight Presentation Inventory per un esempio completo di reporting e limitazioni specifiche del formato.
Posso leggere le proprietà pubbliche di una presentazione crittografata senza la password di apertura?
Sì. La crittografia delle proprietà del documento deve essere stata disabilitata prima che la presentazione venisse crittografata, e la presentazione deve essere caricata in modalità document-properties-only.
Posso aggiornare un file PPTX crittografato in modalità document-properties-only?
No. I dati delle proprietà pubbliche e crittografate devono rimanere coerenti, quindi l’aggiornamento di un file PPTX crittografato richiede il caricamento completo della presentazione con la password di apertura corretta.






