Gestire le etichette di sensibilità nelle presentazioni PowerPoint in JavaScript

Panoramica

Le etichette di sensibilità di Microsoft Purview aiutano le organizzazioni a classificare e gestire i documenti. Durante l’elaborazione automatica di una presentazione, un’applicazione può dover preservare un’etichetta esistente, applicare un’etichetta selezionata da una policy, aggiornare il suo stato o migrare i metadati dell’etichetta scritti da un flusso di lavoro Microsoft Information Protection (MIP) più vecchio.

Aspose.Slides for Node.js via Java espone i metadati delle etichette di sensibilità moderne tramite Presentation.getSensitivityLabels. Questo metodo restituisce una SensitivityLabelCollection che può essere ispezionata e modificata prima che la presentazione venga salvata come PPTX.

Comprendere le proprietà delle etichette di sensibilità

Ogni SensitivityLabel contiene i seguenti metadati:

Metodi Scopo
SensitivityLabel.getId e SensitivityLabel.setId Ottieni o imposta l’identificatore dell’etichetta di sensibilità nella policy di Purview.
SensitivityLabel.getSiteId e SensitivityLabel.setSiteId Ottieni o imposta il sito associato alla policy dell’etichetta.
SensitivityLabel.isEnabled e SensitivityLabel.setEnabled Ottieni o imposta se l’etichetta è abilitata.
SensitivityLabel.isRemoved e SensitivityLabel.setRemoved Ottieni o imposta se l’etichetta è stata rimossa. Imposta il valore su true quando lo stato di rimozione deve essere conservato nei metadati.
SensitivityLabel.getAssignmentMethodType e SensitivityLabel.setAssignmentMethodType Ottieni o imposta se l’etichetta è stata applicata automaticamente o tramite decisione dell’utente.
SensitivityLabel.getContentMarkTypes Ottieni i tipi di marcatura di contenuto associati all’etichetta.

La classe SensitivityLabelAssignmentType definisce come è stata assegnata un’etichetta:

La classe SensitivityLabelContentType definisce la marcatura associata a un’etichetta:

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

È possibile associare più tipi di marcatura a una singola etichetta.

Elencare le etichette di sensibilità esistenti

Leggi la raccolta di etichette moderne da Presentation.getSensitivityLabels ed elencala. L’esempio seguente elenca tutte le proprietà e le marcature di contenuto memorizzate per ciascuna etichetta:

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    const sensitivityLabels = presentation.getSensitivityLabels();
    const labelCount = sensitivityLabels.getCount();

    for (let labelIndex = 0; labelIndex < labelCount; labelIndex++) {
        const sensitivityLabel = sensitivityLabels.get_Item(labelIndex);
        const labelIdentifier = sensitivityLabel.getId();
        const siteIdentifier = sensitivityLabel.getSiteId();
        const isEnabled = sensitivityLabel.isEnabled();
        const isRemoved = sensitivityLabel.isRemoved();
        const assignmentMethod = sensitivityLabel.getAssignmentMethodType();

        console.log("Label ID: " + labelIdentifier);
        console.log("Site ID: " + siteIdentifier);
        console.log("Enabled: " + isEnabled);
        console.log("Removed: " + isRemoved);
        console.log("Assignment method: " + assignmentMethod);

        const contentMarkTypes = sensitivityLabel.getContentMarkTypes();
        const contentMarkCount = contentMarkTypes.size();

        for (let contentMarkIndex = 0; contentMarkIndex < contentMarkCount; contentMarkIndex++) {
            const contentMarkType = contentMarkTypes.get_Item(contentMarkIndex);
            console.log("Content marking: " + contentMarkType);
        }
    }
} finally {
    presentation.dispose();
}

Aggiungere un’etichetta di sensibilità con marcatura del contenuto

Usa SensitivityLabelCollection.add con l’identificatore dell’etichetta, l’identificatore del sito, lo stato abilitato e il metodo di assegnazione. Dopo che il metodo restituisce la nuova SensitivityLabel, aggiungi i valori di marcatura richiesti tramite l’elenco restituito da SensitivityLabel.getContentMarkTypes.

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

const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");

const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    const sensitivityLabels = presentation.getSensitivityLabels();

    const labelIdentifier = "{11111111-2222-3333-4444-555555555555}";
    const siteIdentifier = java.callStaticMethodSync(
        "java.util.UUID",
        "fromString",
        "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
    const isEnabled = true;
    const assignmentMethod = aspose.slides.SensitivityLabelAssignmentType.Privileged;

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

    const contentMarkTypes = sensitivityLabel.getContentMarkTypes();
    contentMarkTypes.addItem(aspose.slides.SensitivityLabelContentType.Footer);
    contentMarkTypes.addItem(aspose.slides.SensitivityLabelContentType.Watermark);

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

Aggiornare un’etichetta di sensibilità

I valori di SensitivityLabel sono leggibili/scrivibili, eccetto l’elenco restituito da SensitivityLabel.getContentMarkTypes che viene modificato tramite le sue operazioni di lista. 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 del contenuto. Salva la presentazione per rendere persistenti le modifiche.

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

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    const sensitivityLabels = presentation.getSensitivityLabels();
    const labelCount = sensitivityLabels.getCount();

    if (labelCount > 0) {
        const sensitivityLabel = sensitivityLabels.get_Item(0);
        sensitivityLabel.setEnabled(true);
        sensitivityLabel.setAssignmentMethodType(
            aspose.slides.SensitivityLabelAssignmentType.Privileged);
    }

    presentation.save("presentation_with_updated_label.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Contrassegnare un’etichetta di sensibilità come rimossa

Per conservare il fatto che un’etichetta è stata rimossa, individua l’etichetta e chiama SensitivityLabel.setRemoved con true. Questo mantiene la voce dell’etichetta registrando il suo stato di rimozione. Se invece è necessario eliminare una voce dalla raccolta moderna, usa SensitivityLabelCollection.removeAt; usa SensitivityLabelCollection.clear per eliminare tutte le voci.

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

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    const sensitivityLabels = presentation.getSensitivityLabels();
    const targetLabelIdentifier = "{11111111-2222-3333-4444-555555555555}";
    const labelCount = sensitivityLabels.getCount();

    for (let labelIndex = 0; labelIndex < labelCount; labelIndex++) {
        const sensitivityLabel = sensitivityLabels.get_Item(labelIndex);
        const labelIdentifier = sensitivityLabel.getId();
        const isTargetLabel = labelIdentifier.toLowerCase() === targetLabelIdentifier.toLowerCase();

        if (isTargetLabel) {
            sensitivityLabel.setRemoved(true);
            break;
        }
    }

    presentation.save("presentation_with_removed_label.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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 quei metadati con DocumentProperties.getSensitivityLabels. Il metodo analizza le proprietà personalizzate legacy e restituisce un array di oggetti SensitivityLabel.

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

const aspose = { slides: require("aspose.slides.via.java") };

const presentation = new aspose.slides.Presentation("presentation_with_legacy_labels.pptx");
try {
    const legacySensitivityLabels = presentation.getDocumentProperties().getSensitivityLabels();
    const modernSensitivityLabels = presentation.getSensitivityLabels();

    for (let legacyLabelIndex = 0; legacyLabelIndex < legacySensitivityLabels.length; legacyLabelIndex++) {
        const legacySensitivityLabel = legacySensitivityLabels[legacyLabelIndex];
        const legacyLabelIdentifier = legacySensitivityLabel.getId();
        const modernLabelCount = modernSensitivityLabels.getCount();
        let labelAlreadyExists = false;

        for (let modernLabelIndex = 0; modernLabelIndex < modernLabelCount; modernLabelIndex++) {
            const modernSensitivityLabel = modernSensitivityLabels.get_Item(modernLabelIndex);
            const modernLabelIdentifier = modernSensitivityLabel.getId();

            labelAlreadyExists =
                modernLabelIdentifier.toLowerCase() === legacyLabelIdentifier.toLowerCase();

            if (labelAlreadyExists) {
                break;
            }
        }

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

    presentation.save("presentation_with_modern_labels.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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 Presentation.save con SaveFormat.Pptx per scrivere i metadati delle etichette moderne in un file PPTX.

FAQ

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

No. I valori aggiunti tramite l’elenco restituito da SensitivityLabel.getContentMarkTypes descrivono le marcature associate all’etichetta di sensibilità. Non creano testo o forme visibili nella presentazione. Aggiungi separatamente il contenuto della diapositiva corrispondente se il tuo flusso di lavoro deve renderizzare tali marcature.

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

Chiamare SensitivityLabel.setRemoved con true mantiene la voce dell’etichetta e registra il suo stato di rimozione. Chiamare SensitivityLabelCollection.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.getSensitivityLabels. Usa DocumentProperties.getSensitivityLabels per leggere i metadati legacy e migrare solo le etichette valide che non sono già presenti nella raccolta moderna.

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

SensitivityLabelCollection.add genera un’eccezione quando la raccolta contiene già un’etichetta con lo stesso identificatore. Controlla i valori esistenti restituiti da SensitivityLabel.getId prima di aggiungere o migrare le etichette.

Quale formato di output dovrebbe essere utilizzato per preservare le etichette di sensibilità aggiornate?

Salva la presentazione come PPTX chiamando Presentation.save con SaveFormat.Pptx, come mostrato negli esempi precedenti.