Gérer les propriétés de présentation en Java
Introduction
Aspose.Slides for Java prend en charge les propriétés de document intégrées et personnalisées. Utilisez ces propriétés pour lire et mettre à jour les métadonnées de la présentation, telles que l’auteur, le titre et les valeurs définies par l’utilisateur.
Aspose.Slides vous permet de travailler avec les propriétés de document de la présentation via l’interface IDocumentProperties. Une instance de cette interface est renvoyée par IPresentation.getDocumentProperties. Les exemples suivants montrent comment lire, modifier et gérer ces propriétés.
Note
Aspose.Slides gère les métadonnées d’application et du producteur lors de l’enregistrement des présentations ; ces champs identifient le logiciel qui a créé le résultat.Gérer les propriétés de la présentation
Les propriétés de document stockent des informations descriptives à côté du contenu de la présentation. Elles se répartissent en deux catégories :
- Propriétés intégrées contiennent des métadonnées standard, telles que le titre, l’auteur et les statistiques du document.
- Propriétés personnalisées stockent des paires nom/valeur définies par l’utilisateur.
Aspose.Slides for Java fournit l’accès aux deux catégories. Dans PowerPoint, choisissez Fichier → Info → Propriétés → Propriétés avancées pour inspecter les métadonnées du document. La boîte de dialogue regroupe les informations en onglets tels que Résumé, Statistiques, Contenu et Personnalisé. Utilisez l’onglet Personnalisé pour gérer les propriétés définies par l’utilisateur.
Lire les propriétés publiques d’une présentation chiffrée
Un mot de passe d’ouverture protège normalement à la fois le contenu de la présentation et les propriétés du document. Lorsqu’une présentation est chiffrée après avoir appelé IProtectionManager.setEncryptDocumentProperties avec false, ses propriétés de document restent publiques. Une application peut alors appeler LoadOptions.setOnlyLoadDocumentProperties avec true et lire les métadonnées publiques sans fournir le mot de passe d’ouverture.
LoadOptions.setOnlyLoadDocumentProperties contrôle ce qu’Aspose.Slides charge ; il ne déchiffre rien. Si les propriétés ont été incluses dans le chiffrement, les charger sans le mot de passe échoue. Si la présentation n’est pas chiffrée, l’option est ignorée et la présentation complète est chargée.
L’exemple nécessite une présentation chiffrée dont les propriétés de document ont été laissées publiques. Il vérifie le mode de chargement via IProtectionManager.isOnlyDocumentPropertiesLoaded puis lit les propriétés intégrées via IPresentation.getDocumentProperties :
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
LoadOptions loadOptions = new LoadOptions();
loadOptions.setOnlyLoadDocumentProperties(true);
Presentation presentation = new Presentation("public-properties-encrypted.pptx", loadOptions);
try {
if (presentation.getProtectionManager().isOnlyDocumentPropertiesLoaded()) {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
System.out.println("Author: " + documentProperties.getAuthor());
System.out.println("Title: " + documentProperties.getTitle());
System.out.println("Keywords: " + documentProperties.getKeywords());
} else {
System.out.println("The presentation was not loaded in document-properties-only mode.");
}
} finally {
presentation.dispose();
}
Dans ce mode, le contenu des diapositives n’est pas chargé. Les diapositives, les maîtres, les mises en page, les formes, les médias et les autres objets de la présentation ne sont pas disponibles. Les applications doivent toujours vérifier IProtectionManager.isOnlyDocumentPropertiesLoaded avant d’effectuer une opération nécessitant le modèle complet d’objet de la présentation.
Warning
Les métadonnées publiques peuvent révéler les noms d’auteur, les titres, les sujets, les mots‑clés, les informations d’entreprise, les commentaires et les valeurs personnalisées. Chiffrez les propriétés sensibles avec la présentation. Ne les laissez publiques que lorsqu’un système d’indexation, de classification, de recherche ou de gestion de documents a besoin d’y accéder sans mot de passe.Mettre à jour les propriétés d’une présentation chiffrée
Pour un fichier PPTX chiffré, une présentation chargée après avoir appelé LoadOptions.setOnlyLoadDocumentProperties avec true est destinée à la lecture des métadonnées publiques. Aspose.Slides ne peut pas enregistrer les propriétés modifiées à partir de cet objet contenant uniquement les métadonnées, car les propriétés publiques doivent rester cohérentes avec les données correspondantes à l’intérieur de la présentation chiffrée. Leur mise à jour nécessite donc le mot de passe d’ouverture correct et un chargement complet.
L’exemple nécessite une présentation PPTX chiffrée avec des propriétés de document publiques et un mot de passe d’ouverture connu. Il ouvre la présentation complète avec LoadOptions.setPassword, met à jour les propriétés intégrées publiques, puis enregistre le résultat. Il utilise ensuite IPresentationInfo.isEncrypted pour vérifier que le chiffrement est conservé et rouvre les métadonnées publiques sans mot de passe afin de vérifier les nouvelles valeurs :
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.PresentationFactory;
import com.aspose.slides.SaveFormat;
final String inputPath = "public-properties-encrypted.pptx";
final String outputPath = "updated-public-properties-encrypted.pptx";
LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");
Presentation presentation = new Presentation(inputPath, loadOptions);
try {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
documentProperties.setTitle("Updated Product Roadmap");
documentProperties.setKeywords("roadmap, planning, indexed");
presentation.save(outputPath, SaveFormat.Pptx);
} finally {
presentation.dispose();
}
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(outputPath);
System.out.println("The presentation is encrypted: " + presentationInfo.isEncrypted());
LoadOptions metadataLoadOptions = new LoadOptions();
metadataLoadOptions.setOnlyLoadDocumentProperties(true);
Presentation metadataPresentation = new Presentation(outputPath, metadataLoadOptions);
try {
if (metadataPresentation.getProtectionManager().isOnlyDocumentPropertiesLoaded()) {
System.out.println("Title: " + metadataPresentation.getDocumentProperties().getTitle());
System.out.println("Keywords: " + metadataPresentation.getDocumentProperties().getKeywords());
} else {
System.out.println("The presentation was not loaded in document-properties-only mode.");
}
} finally {
metadataPresentation.dispose();
}
Si une application n’est pas autorisée à déchiffrer ou à charger le contenu de la présentation, elle doit considérer les propriétés publiques d’un fichier PPTX chiffré comme en lecture seule.
Accéder aux propriétés intégrées
L’interface IDocumentProperties expose les métadonnées intégrées via des méthodes d’accès, notamment getAuthor, getTitle et getCreatedTime. Cet exemple ouvre une présentation existante et affiche ses métadonnées stockées dans la console. Les valeurs dépendent de la présentation d’entrée ; certains champs peuvent être vides.
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation("AccessBuiltInProperties.pptx");
try {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
System.out.println("Category: " + documentProperties.getCategory());
System.out.println("Content status: " + documentProperties.getContentStatus());
System.out.println("Creation date: " + documentProperties.getCreatedTime());
System.out.println("Author: " + documentProperties.getAuthor());
System.out.println("Comments: " + documentProperties.getComments());
System.out.println("Keywords: " + documentProperties.getKeywords());
System.out.println("Last modified by: " + documentProperties.getLastSavedBy());
System.out.println("Manager: " + documentProperties.getManager());
System.out.println("Modified date: " + documentProperties.getLastSavedTime());
System.out.println("Presentation format: " + documentProperties.getPresentationFormat());
System.out.println("Last print date: " + documentProperties.getLastPrinted());
System.out.println("Is shared between producers: " + documentProperties.getSharedDoc());
System.out.println("Subject: " + documentProperties.getSubject());
System.out.println("Title: " + documentProperties.getTitle());
} finally {
presentation.dispose();
}
Modifier les propriétés intégrées
Pour mettre à jour les métadonnées intégrées, utilisez les méthodes de définition sur l’objet renvoyé par IPresentation.getDocumentProperties. Cet exemple ouvre une présentation existante, appelle setAuthor, setTitle, setSubject, setComments et setManager, puis enregistre la présentation mise à jour avec Presentation.save. Le PPTX enregistré contient les nouvelles métadonnées.
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
Presentation presentation = new Presentation("ModifyBuiltInProperties.pptx");
try {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
documentProperties.setAuthor("Aspose.Slides for Java");
documentProperties.setTitle("Manage PowerPoint Presentation Properties");
documentProperties.setSubject("Modify Built-in Properties");
documentProperties.setComments("Aspose description");
documentProperties.setManager("Aspose manager");
presentation.save("DocumentProperties_output.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Gérer la base des hyperliens
IDocumentProperties.getHyperlinkBase renvoie la base au niveau du document pour les hyperliens relatifs. Utilisez IDocumentProperties.setHyperlinkBase pour la modifier ou la supprimer. Cela est utile lors du déplacement d’une présentation et de ses fichiers liés vers un autre emplacement. Elle est distincte de IHyperlink.getExternalUrl d’un hyperlien individuel : modifier la base ne réécrit pas les adresses de lien stockées ni ne change les destinations absolues.
L’exemple nécessite une présentation contenant à la fois un lien relatif, comme target.html, et un lien absolu, comme https://example.org/absolute.html. Il lit la base existante, attribue une nouvelle adresse de base, puis enregistre et rouvre la présentation pour vérifier la valeur. Il supprime ensuite la base avec une chaîne vide et vérifie la valeur vide dans un fichier enregistré séparé. Remplacez l’adresse de base d’exemple par l’emplacement de vos fichiers liés.
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
Presentation presentation = new Presentation("hyperlinks.pptx");
try {
System.out.println("Original base: " + presentation.getDocumentProperties().getHyperlinkBase());
final String newBase = "https://example.com/new/";
presentation.getDocumentProperties().setHyperlinkBase(newBase);
presentation.save("hyperlinks-updated.pptx", SaveFormat.Pptx);
Presentation updatedPresentation = new Presentation("hyperlinks-updated.pptx");
try {
System.out.println("Base preserved: " + newBase.equals(updatedPresentation.getDocumentProperties().getHyperlinkBase()));
updatedPresentation.getDocumentProperties().setHyperlinkBase("");
updatedPresentation.save("hyperlinks-cleared.pptx", SaveFormat.Pptx);
Presentation clearedPresentation = new Presentation("hyperlinks-cleared.pptx");
try {
System.out.println("Base cleared: " + "".equals(clearedPresentation.getDocumentProperties().getHyperlinkBase()));
} finally {
clearedPresentation.dispose();
}
} finally {
updatedPresentation.dispose();
}
} finally {
presentation.dispose();
}
Les deux messages de vérification devraient afficher true. Supprimer la base laisse les adresses des hyperliens individuels intactes.
Un lien relatif vers target.pptx ouvrait old/target.pptx lorsque la base pointait vers le dossier old. Après avoir changé la base vers le dossier new, enregistré et rouvert la présentation, le même lien a ouvert new/target.pptx. Un lien absolu a continué d’ouvrir le même fichier. Testez vos liens relatifs dans PowerPoint avant et après avoir déplacé la présentation ou modifié sa base.
Ajouter des propriétés personnalisées à la présentation
Les propriétés personnalisées stockent des métadonnées qui n’ont pas de champ intégré correspondant. La méthode IDocumentProperties.set_Item vous permet d’assigner une valeur par le nom de la propriété. Cet exemple crée une présentation, ajoute deux valeurs textuelles et une valeur de version entière, puis enregistre la présentation avec Presentation.save. Attribuer une valeur à un nom existant remplace la valeur de cette propriété.
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
Presentation presentation = new Presentation();
try {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
documentProperties.set_Item("Reviewed by", "John Smith");
documentProperties.set_Item("Confidentiality level", "Internal");
documentProperties.set_Item("Document version", 2);
presentation.save("CustomDocumentProperties_output.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Accéder et modifier les propriétés personnalisées
Cet exemple ouvre une présentation contenant des propriétés personnalisées et utilise getCountOfCustomProperties pour les parcourir. getCustomPropertyName accepte un indice basé sur zéro et renvoie le nom utilisé par IDocumentProperties.set_Item. L’exemple affiche chaque nom et valeur d’origine, remplace chaque valeur par une chaîne numérotée quel que soit son type d’origine, et enregistre les modifications. S’il n’y a aucune propriété personnalisée, la boucle ne fait aucune modification.
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
Presentation presentation = new Presentation("AccessAndModifyProperties.pptx");
try {
IDocumentProperties documentProperties = presentation.getDocumentProperties();
for (int i = 0; i < documentProperties.getCountOfCustomProperties(); i++) {
String propertyName = documentProperties.getCustomPropertyName(i);
Object propertyValue = documentProperties.get_Item(propertyName);
System.out.println("Custom property name: " + propertyName);
System.out.println("Custom property value: " + propertyValue);
documentProperties.set_Item(propertyName, "New Value " + (i + 1));
}
presentation.save("CustomProperties_output.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Exemple en direct
Essayez l’application en ligne View & Edit PowerPoint Metadata pour voir comment travailler avec les propriétés de document à l’aide de l’API Aspose.Slides :
FAQ
Comment puis‑je supprimer une propriété intégrée d’une présentation ?
Les propriétés intégrées font partie intégrante de la présentation et ne peuvent pas être supprimées complètement. Cependant, vous pouvez soit modifier leurs valeurs, soit les définir comme vides si la propriété le permet.
Que se passe‑t‑il si j’ajoute une propriété personnalisée qui existe déjà ?
Si vous ajoutez une propriété personnalisée qui existe déjà, sa valeur existante sera écrasée par la nouvelle. Vous n’avez pas besoin de supprimer ou de vérifier la propriété au préalable, car Aspose.Slides met automatiquement à jour la valeur de la propriété.
Puis‑je accéder aux propriétés d’une présentation sans la charger entièrement ?
Oui. Utilisez PresentationFactory.getPresentationInfo puis IPresentationInfo.readDocumentProperties pour lire les métadonnées du document stockées sans créer d’instance Presentation. Consultez Build a Lightweight Presentation Inventory pour un exemple complet de rapport et les limitations propres aux formats.
Puis‑je lire les propriétés publiques d’une présentation chiffrée sans son mot de passe d’ouverture ?
Oui. La présentation doit avoir été chiffrée après avoir appelé IProtectionManager.setEncryptDocumentProperties avec false, et elle doit être chargée après avoir appelé LoadOptions.setOnlyLoadDocumentProperties avec true.
Puis‑je mettre à jour un fichier PPTX chiffré en mode uniquement propriétés du document ?
Non. Les données des propriétés publiques et chiffrées doivent rester cohérentes, ainsi la mise à jour d’un fichier PPTX chiffré nécessite de charger la présentation complète avec le mot de passe d’ouverture correct.
