Gérer les étiquettes de sensibilité dans les présentations PowerPoint en PHP
Vue d’ensemble
Microsoft Purview sensitivity labels aident les organisations à classer et gouverner les documents. Lors du traitement automatisé des présentations, une application peut devoir conserver une étiquette existante, appliquer une étiquette sélectionnée par une politique, mettre à jour son état ou migrer les métadonnées d’étiquette écrites par un flux de travail Microsoft Information Protection (MIP) plus ancien.
Aspose.Slides for PHP via Java expose les métadonnées d’étiquettes de sensibilité modernes via Presentation::getSensitivityLabels. Cette méthode renvoie une SensitivityLabelCollection qui peut être inspectée et modifiée avant que la présentation ne soit enregistrée au format PPTX.
Note
Les identifiants d’étiquette de sensibilité et les informations de politique sont définis par votre configuration Microsoft Purview. Validez la disponibilité des étiquettes et les exigences de la politique dans votre environnement avant d’ajouter ou de migrer des métadonnées. Les valeurs de SensitivityLabel::getContentMarkTypes décrivent les marquages de contenu associés à une étiquette ; elles n’ajoutent pas, à elles seules, de texte ou de formes visibles aux diapositives.Comprendre les propriétés des étiquettes de sensibilité
Chaque SensitivityLabel contient les métadonnées suivantes :
| Méthodes | Objectif |
|---|---|
| SensitivityLabel::getId et SensitivityLabel::setId | Obtenir ou définir l’identifiant de l’étiquette de sensibilité dans la politique Purview. |
| SensitivityLabel::getSiteId et SensitivityLabel::setSiteId | Obtenir ou définir le site associé à la politique d’étiquette. |
| SensitivityLabel::isEnabled et SensitivityLabel::setEnabled | Obtenir ou définir si l’étiquette est activée. |
| SensitivityLabel::isRemoved et SensitivityLabel::setRemoved | Obtenir ou définir si l’étiquette a été supprimée. Définissez la valeur sur true lorsque l’état de suppression doit être conservé dans les métadonnées. |
| SensitivityLabel::getAssignmentMethodType et SensitivityLabel::setAssignmentMethodType | Obtenir ou définir si l’étiquette a été appliquée automatiquement ou par une décision utilisateur. |
| SensitivityLabel::getContentMarkTypes | Obtenir les types de marquage de contenu associés à l’étiquette. |
La classe SensitivityLabelAssignmentType définit comment une étiquette a été attribuée :
- SensitivityLabelAssignmentType::Standard représente une étiquette par défaut ou appliquée automatiquement.
- SensitivityLabelAssignmentType::Privileged représente une étiquette appliquée via une décision utilisateur, incluant les étiquettes appliquées manuellement, recommandées et obligatoires.
La classe SensitivityLabelContentType définit le marquage associé à une étiquette :
| Valeur | Signification |
|---|---|
| SensitivityLabelContentType::None | L’étiquette a été appliquée par défaut ou automatiquement. |
| SensitivityLabelContentType::Header | Le marquage de contenu d’en-tête est associé à l’étiquette. |
| SensitivityLabelContentType::Footer | Le marquage de contenu de pied de page est associé à l’étiquette. |
| SensitivityLabelContentType::Watermark | Le marquage de contenu de filigrane est associé à l’étiquette. |
| SensitivityLabelContentType::Encryption | La protection de chiffrement est associée à l’étiquette. |
Plusieurs types de marquage peuvent être associés à une même étiquette.
Lister les étiquettes de sensibilité existantes
Lire la collection d’étiquettes modernes à partir de Presentation::getSensitivityLabels et l’énumérer. L’exemple suivant répertorie chaque propriété et chaque marquage de contenu stockés pour chaque étiquette :
$presentation = new Presentation("presentation.pptx");
try {
$sensitivityLabels = $presentation->getSensitivityLabels();
$sensitivityLabelCount = java_values($sensitivityLabels->getCount());
for ($labelIndex = 0; $labelIndex < $sensitivityLabelCount; $labelIndex++) {
$sensitivityLabel = $sensitivityLabels->get_Item($labelIndex);
echo "Label ID: " . java_values($sensitivityLabel->getId()) . PHP_EOL;
echo "Site ID: " . java_values($sensitivityLabel->getSiteId()->toString()) . PHP_EOL;
echo "Enabled: " . (java_values($sensitivityLabel->isEnabled()) ? "true" : "false") . PHP_EOL;
echo "Removed: " . (java_values($sensitivityLabel->isRemoved()) ? "true" : "false") . PHP_EOL;
echo "Assignment method: " . java_values($sensitivityLabel->getAssignmentMethodType()) . PHP_EOL;
$contentMarkIterator = $sensitivityLabel->getContentMarkTypes()->iterator();
while (java_values($contentMarkIterator->hasNext())) {
$contentMarkType = java_values($contentMarkIterator->next());
echo "Content marking: " . $contentMarkType . PHP_EOL;
}
}
} finally {
$presentation->dispose();
}
Ajouter une étiquette de sensibilité avec marquage de contenu
Utilisez SensitivityLabelCollection::add avec l’identifiant de l’étiquette, l’identifiant du site, l’état activé et la méthode d’attribution. Après que la méthode ait renvoyé le nouveau SensitivityLabel, ajoutez les valeurs de marquage requises via la liste renvoyée par SensitivityLabel::getContentMarkTypes.
L’exemple suivant ajoute une étiquette sélectionnée manuellement associée aux marquages de pied de page et de filigrane, puis enregistre le résultat au format PPTX :
$presentation = new Presentation("presentation.pptx");
try {
$sensitivityLabels = $presentation->getSensitivityLabels();
$labelIdentifier = "{11111111-2222-3333-4444-555555555555}";
$UUID = new JavaClass("java.util.UUID");
$siteIdentifier = $UUID->fromString("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
$isEnabled = true;
$assignmentMethod = SensitivityLabelAssignmentType::Privileged;
$sensitivityLabel = $sensitivityLabels->add(
$labelIdentifier,
$siteIdentifier,
$isEnabled,
$assignmentMethod
);
$contentMarkTypes = $sensitivityLabel->getContentMarkTypes();
$contentMarkTypes->addItem(SensitivityLabelContentType::Footer);
$contentMarkTypes->addItem(SensitivityLabelContentType::Watermark);
$presentation->save("presentation_with_label.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Mettre à jour une étiquette de sensibilité
Les valeurs de SensitivityLabel sont en lecture/écriture, sauf que la liste renvoyée par SensitivityLabel::getContentMarkTypes est modifiée via ses opérations de liste. Après avoir localisé l’étiquette requise, vous pouvez mettre à jour son identifiant, son identifiant de site, son état activé, sa méthode d’attribution, son état de suppression et ses types de marquage de contenu. Enregistrez la présentation pour conserver les modifications.
L’exemple suivant met à jour l’état activé et la méthode d’attribution de la première étiquette :
$presentation = new Presentation("presentation.pptx");
try {
$sensitivityLabels = $presentation->getSensitivityLabels();
$sensitivityLabelCount = java_values($sensitivityLabels->getCount());
if ($sensitivityLabelCount > 0) {
$sensitivityLabel = $sensitivityLabels->get_Item(0);
$sensitivityLabel->setEnabled(true);
$sensitivityLabel->setAssignmentMethodType(SensitivityLabelAssignmentType::Privileged);
}
$presentation->save("presentation_with_updated_label.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Marquer une étiquette de sensibilité comme supprimée
Pour conserver le fait qu’une étiquette a été supprimée, trouvez l’étiquette et appelez SensitivityLabel::setRemoved avec true. Cela conserve l’entrée d’étiquette tout en enregistrant son état de suppression. Si vous devez plutôt supprimer une entrée de la collection moderne, utilisez SensitivityLabelCollection::removeAt ; utilisez SensitivityLabelCollection::clear pour supprimer toutes les entrées.
L’exemple suivant marque une étiquette spécifique comme supprimée et enregistre la présentation mise à jour :
$presentation = new Presentation("presentation.pptx");
try {
$sensitivityLabels = $presentation->getSensitivityLabels();
$targetLabelIdentifier = "{11111111-2222-3333-4444-555555555555}";
$sensitivityLabelCount = java_values($sensitivityLabels->getCount());
for ($labelIndex = 0; $labelIndex < $sensitivityLabelCount; $labelIndex++) {
$sensitivityLabel = $sensitivityLabels->get_Item($labelIndex);
$labelIdentifier = java_values($sensitivityLabel->getId());
$isTargetLabel = strcasecmp($labelIdentifier, $targetLabelIdentifier) === 0;
if ($isTargetLabel) {
$sensitivityLabel->setRemoved(true);
break;
}
}
$presentation->save("presentation_with_removed_label.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Lire et migrer les anciennes étiquettes de sensibilité MIP
Les flux de travail plus anciens basés sur MIP peuvent stocker les métadonnées d’étiquettes de sensibilité dans des propriétés de document personnalisées au lieu de la collection d’étiquettes moderne. Lisez ces métadonnées avec DocumentProperties::getSensitivityLabels. La méthode analyse les propriétés personnalisées héritées et renvoie un tableau Java d’objets SensitivityLabel.
Pour migrer les métadonnées, ajoutez chaque étiquette renvoyée à la SensitivityLabelCollection moderne via SensitivityLabelCollection::add. Étant donné que l’ajout d’un identifiant d’étiquette en double déclenche une exception, l’exemple vérifie la collection de destination avant de copier chaque étiquette. Vous pouvez ajouter une validation supplémentaire pour confirmer que chaque étiquette héritée existe toujours dans la politique Purview actuelle.
$presentation = new Presentation("presentation_with_legacy_labels.pptx");
try {
$legacySensitivityLabels = $presentation->getDocumentProperties()->getSensitivityLabels();
$modernSensitivityLabels = $presentation->getSensitivityLabels();
$Array = new JavaClass("java.lang.reflect.Array");
$legacyLabelCount = java_values($Array->getLength($legacySensitivityLabels));
for ($legacyLabelIndex = 0; $legacyLabelIndex < $legacyLabelCount; $legacyLabelIndex++) {
$legacySensitivityLabel = $legacySensitivityLabels[$legacyLabelIndex];
$legacyLabelIdentifier = java_values($legacySensitivityLabel->getId());
$labelAlreadyExists = false;
$modernLabelCount = java_values($modernSensitivityLabels->getCount());
for ($modernLabelIndex = 0; $modernLabelIndex < $modernLabelCount; $modernLabelIndex++) {
$modernSensitivityLabel = $modernSensitivityLabels->get_Item($modernLabelIndex);
$modernLabelIdentifier = java_values($modernSensitivityLabel->getId());
$labelAlreadyExists = strcasecmp(
$modernLabelIdentifier,
$legacyLabelIdentifier
) === 0;
if ($labelAlreadyExists) {
break;
}
}
if (!$labelAlreadyExists) {
$modernSensitivityLabels->add($legacySensitivityLabel);
}
}
$presentation->save("presentation_with_modern_labels.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
La migration copie les objets d’étiquette analysés dans la collection moderne. Elle ne nécessite pas d’effacer toutes les propriétés de document personnalisées, de sorte que les métadonnées de document non liées restent intactes. Utilisez Presentation::save avec SaveFormat::Pptx pour écrire les métadonnées d’étiquettes modernes dans un fichier PPTX.
FAQ
Est‑ce que l’ajout d’un type de marquage de contenu crée un en‑tête, un pied de page ou un filigrane visible sur les diapositives ?
Non. Les valeurs ajoutées via la liste renvoyée par SensitivityLabel::getContentMarkTypes décrivent les marquages associés à l’étiquette de sensibilité. Elles ne créent pas de texte ou de formes visibles dans la présentation. Ajoutez le contenu de diapositive correspondant séparément si votre flux de travail doit rendre ces marquages.
Quelle est la différence entre marquer une étiquette comme supprimée et la supprimer de la collection ?
Appeler SensitivityLabel::setRemoved avec true conserve l’entrée d’étiquette et enregistre son état de suppression. Appeler SensitivityLabelCollection::removeAt supprime l’entrée de la collection moderne. Choisissez l’opération qui correspond aux exigences de rétention des métadonnées de votre organisation.
Une présentation peut‑elle contenir à la fois des métadonnées MIP héritées et des étiquettes de sensibilité modernes ?
Oui. Les étiquettes héritées peuvent rester dans les propriétés de document personnalisées tandis que les étiquettes modernes sont disponibles via Presentation::getSensitivityLabels. Utilisez DocumentProperties::getSensitivityLabels pour lire les métadonnées héritées et migrer uniquement les étiquettes valides qui ne sont pas déjà présentes dans la collection moderne.
Que se passe‑t‑il lorsqu’une étiquette avec le même identifiant est ajoutée plusieurs fois ?
SensitivityLabelCollection::add lève une exception lorsque la collection contient déjà une étiquette avec le même identifiant. Vérifiez les valeurs existantes renvoyées par SensitivityLabel::getId avant d’ajouter ou de migrer des étiquettes.
Quel format de sortie doit‑il être utilisé pour préserver les étiquettes de sensibilité mises à jour ?
Enregistrez la présentation au format PPTX en appelant Presentation::save avec SaveFormat::Pptx, comme illustré dans les exemples ci‑dessus.