Gestire le etichette di sensibilità nelle presentazioni PowerPoint in .NET

Panoramica

Microsoft Purview sensitivity labels aiutano le organizzazioni a classificare e gestire i documenti. Durante l’elaborazione automatica di una presentazione, un’applicazione potrebbe dover conservare un’etichetta esistente, applicare un’etichetta selezionata da una policy, aggiornarne lo stato o migrare i metadati dell’etichetta scritti da un flusso di lavoro Microsoft Information Protection (MIP) più vecchio.

Aspose.Slides espone i metadati delle etichette di sensibilità moderne tramite Presentation.SensitivityLabels. Questa proprietà restituisce un ISensitivityLabelCollection che può essere ispezionato e modificato prima che la presentazione venga salvata come PPTX.

Comprendere le proprietà delle etichette di sensibilità

Ogni ISensitivityLabel contiene i seguenti metadati:

Proprietà Scopo
ISensitivityLabel.Id Identifica l’etichetta di sensibilità nella policy Purview.
ISensitivityLabel.SiteId Identifica il sito associato alla policy dell’etichetta.
ISensitivityLabel.IsEnabled Indica se l’etichetta è abilitata.
ISensitivityLabel.IsRemoved Indica che l’etichetta è stata rimossa. Imposta questa proprietà su true quando lo stato di rimozione deve essere conservato nei metadati.
ISensitivityLabel.AssignmentMethodType Specifica se l’etichetta è stata applicata automaticamente o mediante una decisione dell’utente.
ISensitivityLabel.ContentMarkTypes Elenca i tipi di marcatura di contenuto associati all’etichetta.

L’enumerazione SensitivityLabelAssignmentType descrive come è stata assegnata un’etichetta:

L’enumerazione SensitivityLabelContentType identifica la marcatura associata a un’etichetta:

Valore Significato
SensitivityLabelContentType.None L’etichetta è stata applicata per impostazione predefinita o automaticamente.
SensitivityLabelContentType.Header Una marcatura di contenuto dell’intestazione è associata all’etichetta.
SensitivityLabelContentType.Footer Una marcatura di contenuto del piè di pagina è associata all’etichetta.
SensitivityLabelContentType.Watermark Una marcatura di contenuto di filigrana è associata all’etichetta.
SensitivityLabelContentType.Encryption Una protezione di crittografia è associata all’etichetta.

Possono essere associate più tipologie di marcatura a una singola etichetta.

Elencare le etichette di sensibilità esistenti

Leggi la raccolta di etichette moderne da Presentation.SensitivityLabels e enumerala. L’esempio seguente elenca ogni proprietà e marcatura di contenuto memorizzata per ciascuna etichetta:

using System;
using Aspose.Slides;

using var presentation = new Presentation("presentation.pptx");
var sensitivityLabels = presentation.SensitivityLabels;

foreach (var sensitivityLabel in sensitivityLabels)
{
    Console.WriteLine("Label ID: " + sensitivityLabel.Id);
    Console.WriteLine("Site ID: " + sensitivityLabel.SiteId);
    Console.WriteLine("Enabled: " + sensitivityLabel.IsEnabled);
    Console.WriteLine("Removed: " + sensitivityLabel.IsRemoved);
    Console.WriteLine("Assignment method: " + sensitivityLabel.AssignmentMethodType);

    foreach (var contentMarkType in sensitivityLabel.ContentMarkTypes)
    {
        Console.WriteLine("Content marking: " + contentMarkType);
    }
}

Aggiungere un’etichetta di sensibilità con marcatura di contenuto

Utilizza ISensitivityLabelCollection.Add fornendo l’identificatore dell’etichetta, l’identificatore del sito, lo stato abilitato e il metodo di assegnazione. Dopo che il metodo restituisce la nuova ISensitivityLabel, aggiungi i valori di marcatura richiesti tramite ISensitivityLabel.ContentMarkTypes.

L’esempio seguente aggiunge un’etichetta selezionata manualmente associata a marcature di piè di pagina e filigrana, quindi salva il risultato come PPTX:

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("presentation.pptx");
var sensitivityLabels = presentation.SensitivityLabels;

var labelIdentifier = "{11111111-2222-3333-4444-555555555555}";
var siteIdentifier = Guid.Parse("{aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}");
var isEnabled = true;
var assignmentMethod = SensitivityLabelAssignmentType.Privileged;

var sensitivityLabel = sensitivityLabels.Add(
    labelIdentifier,
    siteIdentifier,
    isEnabled,
    assignmentMethod);

sensitivityLabel.ContentMarkTypes.Add(SensitivityLabelContentType.Footer);
sensitivityLabel.ContentMarkTypes.Add(SensitivityLabelContentType.Watermark);

presentation.Save("presentation_with_label.pptx", SaveFormat.Pptx);

Aggiornare un’etichetta di sensibilità

Le proprietà di ISensitivityLabel sono in lettura/scrittura, tranne che la raccolta restituita da ISensitivityLabel.ContentMarkTypes viene modificata tramite le sue operazioni di elenco. Dopo aver individuato l’etichetta necessaria, è possibile aggiornare il suo identificatore, l’identificatore del sito, lo stato abilitato, il metodo di assegnazione, lo stato di rimozione e i tipi di marcatura di contenuto. Salva la presentazione per rendere persistenti le modifiche.

L’esempio seguente aggiorna lo stato abilitato e il metodo di assegnazione della prima etichetta:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("presentation.pptx");
var sensitivityLabels = presentation.SensitivityLabels;

if (sensitivityLabels.Count > 0)
{
    var sensitivityLabel = sensitivityLabels[0];
    sensitivityLabel.IsEnabled = true;
    sensitivityLabel.AssignmentMethodType = SensitivityLabelAssignmentType.Privileged;
}

presentation.Save("presentation_with_updated_label.pptx", SaveFormat.Pptx);

Contrassegnare un’etichetta di sensibilità come rimossa

Per conservare il fatto che un’etichetta è stata rimossa, trova l’etichetta e imposta ISensitivityLabel.IsRemoved su true. Questo mantiene la voce dell’etichetta registrando il suo stato rimosso. Se invece devi eliminare una voce dalla raccolta moderna, utilizza ISensitivityLabelCollection.RemoveAt; usa ISensitivityLabelCollection.Clear per cancellare tutte le voci.

L’esempio seguente contrassegna un’etichetta specifica come rimossa e salva la presentazione aggiornata:

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("presentation.pptx");
var sensitivityLabels = presentation.SensitivityLabels;
var targetLabelIdentifier = "{11111111-2222-3333-4444-555555555555}";

foreach (var sensitivityLabel in sensitivityLabels)
{
    var isTargetLabel = string.Equals(
        sensitivityLabel.Id,
        targetLabelIdentifier,
        StringComparison.OrdinalIgnoreCase);

    if (isTargetLabel)
    {
        sensitivityLabel.IsRemoved = true;
        break;
    }
}

presentation.Save("presentation_with_removed_label.pptx", SaveFormat.Pptx);

Leggere e migrare le etichette di sensibilità MIP legacy

I flussi di lavoro basati su MIP più vecchi possono memorizzare i metadati delle etichette di sensibilità in proprietà documento personalizzate anziché nella raccolta di etichette moderne. Leggi tali metadati con IDocumentProperties.GetSensitivityLabels. Il metodo analizza le proprietà personalizzate legacy e restituisce un array di oggetti ISensitivityLabel.

Per migrare i metadati, aggiungi ogni etichetta restituita alla moderna ISensitivityLabelCollection tramite ISensitivityLabelCollection.Add. Poiché l’aggiunta di un identificatore di etichetta duplicato genera un’eccezione, l’esempio verifica la raccolta di destinazione prima di copiare ogni etichetta. È possibile aggiungere ulteriori convalide per confermare che ciascuna etichetta legacy esista ancora nella policy Purview corrente.

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("presentation_with_legacy_labels.pptx");
var legacySensitivityLabels = presentation.DocumentProperties.GetSensitivityLabels();
var modernSensitivityLabels = presentation.SensitivityLabels;

foreach (var legacySensitivityLabel in legacySensitivityLabels)
{
    var labelAlreadyExists = false;

    foreach (var modernSensitivityLabel in modernSensitivityLabels)
    {
        labelAlreadyExists = string.Equals(
            modernSensitivityLabel.Id,
            legacySensitivityLabel.Id,
            StringComparison.OrdinalIgnoreCase);

        if (labelAlreadyExists)
        {
            break;
        }
    }

    if (!labelAlreadyExists)
    {
        modernSensitivityLabels.Add(legacySensitivityLabel);
    }
}

presentation.Save("presentation_with_modern_labels.pptx", SaveFormat.Pptx);

La migrazione copia gli oggetti etichetta analizzati nella raccolta moderna. Non è necessario cancellare tutte le proprietà documento personalizzate, quindi i metadati del documento non correlati rimangono intatti. Usa IPresentation.Save con SaveFormat.Pptx per scrivere i metadati delle etichette moderne in un file PPTX.

FAQ

L’aggiunta di un tipo di marcatura di contenuto crea un’intestazione, un piè di pagina o una filigrana visibili sulle diapositive?

No. I valori aggiunti tramite ISensitivityLabel.ContentMarkTypes descrivono le marcature associate all’etichetta di sensibilità. Non creano testo o forme visibili nella presentazione. Aggiungi il contenuto corrispondente alle diapositive separatamente se il tuo flusso di lavoro deve renderizzare tali marcature.

Qual è la differenza tra contrassegnare un’etichetta come rimossa e eliminarla dalla raccolta?

Impostare ISensitivityLabel.IsRemoved su true mantiene la voce dell’etichetta e registra il suo stato rimosso. Chiamare ISensitivityLabelCollection.RemoveAt elimina la voce dalla raccolta moderna. Scegli l’operazione che corrisponde ai requisiti di conservazione dei metadati della tua organizzazione.

Una presentazione può contenere sia metadati MIP legacy sia etichette di sensibilità moderne?

Sì. Le etichette legacy possono rimanere nelle proprietà documento personalizzate mentre le etichette moderne sono disponibili tramite Presentation.SensitivityLabels. Usa IDocumentProperties.GetSensitivityLabels per leggere i metadati legacy e migrare solo le etichette valide che non sono già presenti nella raccolta moderna.

** Cosa succede quando un’etichetta con lo stesso identificatore viene aggiunta più di una volta?**

ISensitivityLabelCollection.Add lancia un'ArgumentException quando la raccolta contiene già un’etichetta con lo stesso identificatore. Controlla i valori di ISensitivityLabel.Id esistenti prima di aggiungere o migrare le etichette.

Quale formato di output dovrebbe essere usato per conservare le etichette di sensibilità aggiornate?

Salva la presentazione come PPTX chiamando IPresentation.Save con SaveFormat.Pptx, come mostrato negli esempi precedenti.