Gérer les étiquettes de sensibilité dans les présentations PowerPoint sur Android

Vue d’ensemble

Les étiquettes de sensibilité Microsoft Purview aident les organisations à classer et à gouverner les documents. Lors du traitement automatisé d’une présentation, une application peut devoir préserver une étiquette existante, appliquer une étiquette sélectionnée par une stratégie, mettre à jour son état ou migrer les métadonnées d’étiquette écrites par un ancien flux de travail Microsoft Information Protection (MIP).

Aspose.Slides for Android via Java expose les métadonnées modernes d’étiquettes de sensibilité via IPresentation.getSensitivityLabels. Cette méthode renvoie une ISensitivityLabelCollection qui peut être inspectée et modifiée avant que la présentation ne soit enregistrée au format PPTX.

Comprendre les propriétés des étiquettes de sensibilité

Chaque ISensitivityLabel contient les métadonnées suivantes :

Méthodes Objectif
ISensitivityLabel.getId et ISensitivityLabel.setId Obtient ou définit l’identifiant de l’étiquette de sensibilité dans la stratégie Purview.
ISensitivityLabel.getSiteId et ISensitivityLabel.setSiteId Obtient ou définit le site associé à la stratégie d’étiquette.
ISensitivityLabel.isEnabled et ISensitivityLabel.setEnabled Obtient ou définit si l’étiquette est activée.
ISensitivityLabel.isRemoved et ISensitivityLabel.setRemoved Obtient ou définit 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.
ISensitivityLabel.getAssignmentMethodType et ISensitivityLabel.setAssignmentMethodType Obtient ou définit si l’étiquette a été appliquée automatiquement ou par une décision utilisateur.
ISensitivityLabel.getContentMarkTypes Obtient les types de marquage de contenu associés à l’étiquette.

La classe SensitivityLabelAssignmentType définit comment une étiquette a été assignée :

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 Un marquage de contenu d’en‑tête est associé à l’étiquette.
SensitivityLabelContentType.Footer Un marquage de contenu de pied‑de‑page est associé à l’étiquette.
SensitivityLabelContentType.Watermark Un marquage de contenu de filigrane est associé à l’étiquette.
SensitivityLabelContentType.Encryption Une 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

Lisez la collection d’étiquettes modernes via IPresentation.getSensitivityLabels et parcourez‑la. L’exemple suivant répertorie chaque propriété et chaque marquage de contenu stockés pour chaque étiquette :

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();

    for (ISensitivityLabel sensitivityLabel : sensitivityLabels) {
        System.out.println("Label ID: " + sensitivityLabel.getId());
        System.out.println("Site ID: " + sensitivityLabel.getSiteId());
        System.out.println("Enabled: " + sensitivityLabel.isEnabled());
        System.out.println("Removed: " + sensitivityLabel.isRemoved());
        System.out.println("Assignment method: " + sensitivityLabel.getAssignmentMethodType());

        for (Integer contentMarkType : sensitivityLabel.getContentMarkTypes()) {
            System.out.println("Content marking: " + contentMarkType);
        }
    }
} finally {
    presentation.dispose();
}

Ajouter une étiquette de sensibilité avec marquage de contenu

Utilisez ISensitivityLabelCollection.add avec l’identifiant de l’étiquette, l’identifiant du site, l’état activé et la méthode d’attribution. Après le retour de la nouvelle ISensitivityLabel, ajoutez les valeurs de marquage requises via la liste renvoyée par ISensitivityLabel.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 :

import com.aspose.slides.*;
import java.util.UUID;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();

    String labelIdentifier = "{11111111-2222-3333-4444-555555555555}";
    UUID siteIdentifier = UUID.fromString("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
    boolean isEnabled = true;
    int assignmentMethod = SensitivityLabelAssignmentType.Privileged;

    ISensitivityLabel sensitivityLabel = sensitivityLabels.add(
            labelIdentifier,
            siteIdentifier,
            isEnabled,
            assignmentMethod);

    sensitivityLabel.getContentMarkTypes().addItem(SensitivityLabelContentType.Footer);
    sensitivityLabel.getContentMarkTypes().addItem(SensitivityLabelContentType.Watermark);

    presentation.save("presentation_with_label.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Mettre à jour une étiquette de sensibilité

Les valeurs de ISensitivityLabel sont en lecture‑écriture, sauf que la liste renvoyée par ISensitivityLabel.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 persister les modifications.

L’exemple suivant met à jour l’état activé et la méthode d’attribution de la première étiquette :

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();

    if (sensitivityLabels.getCount() > 0) {
        ISensitivityLabel 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 ISensitivityLabel.setRemoved avec true. Cette opération conserve l’entrée de l’étiquette tout en enregistrant son état de suppression. Si vous devez plutôt supprimer une entrée de la collection moderne, utilisez ISensitivityLabelCollection.removeAt; utilisez ISensitivityLabelCollection.clear pour effacer toutes les entrées.

L’exemple suivant marque une étiquette spécifique comme supprimée et enregistre la présentation mise à jour :

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();
    String targetLabelIdentifier = "{11111111-2222-3333-4444-555555555555}";

    for (ISensitivityLabel sensitivityLabel : sensitivityLabels) {
        boolean isTargetLabel = sensitivityLabel.getId().equalsIgnoreCase(targetLabelIdentifier);

        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 basés sur MIP plus anciens peuvent stocker les métadonnées d’étiquette de sensibilité dans les propriétés de document personnalisées au lieu de la collection d’étiquettes moderne. Lisez ces métadonnées avec IDocumentProperties.getSensitivityLabels. La méthode analyse les propriétés personnalisées héritées et renvoie un tableau d’objets ISensitivityLabel.

Pour migrer les métadonnées, ajoutez chaque étiquette renvoyée à la ISensitivityLabelCollection moderne via ISensitivityLabelCollection.add. Comme l’ajout d’un identifiant d’étiquette en double lève 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 stratégie Purview actuelle.

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation_with_legacy_labels.pptx");
try {
    ISensitivityLabel[] legacySensitivityLabels = presentation.getDocumentProperties().getSensitivityLabels();
    ISensitivityLabelCollection modernSensitivityLabels = presentation.getSensitivityLabels();

    for (ISensitivityLabel legacySensitivityLabel : legacySensitivityLabels) {
        boolean labelAlreadyExists = false;

        for (ISensitivityLabel modernSensitivityLabel : modernSensitivityLabels) {
            labelAlreadyExists = modernSensitivityLabel.getId().equalsIgnoreCase(
                    legacySensitivityLabel.getId());

            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 IPresentation.save avec SaveFormat.Pptx pour écrire les métadonnées d’étiquette modernes dans un fichier PPTX.

FAQ

L’ajout d’un type de marquage de contenu crée‑t‑il 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 ISensitivityLabel.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 ISensitivityLabel.setRemoved avec true conserve l’entrée de l’étiquette et enregistre son état de suppression. Appeler ISensitivityLabelCollection.removeAt supprime l’entrée de la collection moderne. Choisissez l’opération qui correspond aux exigences de conservation 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 accessibles via IPresentation.getSensitivityLabels. Utilisez IDocumentProperties.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 ?

ISensitivityLabelCollection.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 ISensitivityLabel.getId avant d’ajouter ou de migrer des étiquettes.

Quel format de sortie faut‑il utiliser pour préserver les étiquettes de sensibilité mises à jour ?

Enregistrez la présentation au format PPTX en appelant IPresentation.save avec SaveFormat.Pptx, comme illustré dans les exemples ci‑dessus.