Sensitivitätslabels in PowerPoint-Präsentationen in JavaScript verwalten

Übersicht

Microsoft Purview Sensitivitätslabels helfen Organisationen, Dokumente zu klassifizieren und zu verwalten. Während der automatischen Präsentationsverarbeitung kann eine Anwendung ein vorhandenes Label beibehalten, ein durch eine Richtlinie ausgewähltes Label anwenden, dessen Status aktualisieren oder Metadaten eines älteren Microsoft Information Protection (MIP)-Workflows migrieren.

Aspose.Slides für Node.js via Java stellt moderne Sensitivitätslabel‑Metadaten über Presentation.getSensitivityLabels bereit. Diese Methode gibt eine SensitivityLabelCollection zurück, die vor dem Speichern der Präsentation als PPTX eingesehen und geändert werden kann.

Sensitivitäts‑Label‑Eigenschaften verstehen

Jedes SensitivityLabel enthält die folgenden Metadaten:

Methoden Zweck
SensitivityLabel.getId und SensitivityLabel.setId Lesen oder Festlegen der Sensitivitätslabel‑Kennung in der Purview‑Richtlinie.
SensitivityLabel.getSiteId und SensitivityLabel.setSiteId Lesen oder Festlegen der Site, die mit der Label‑Richtlinie verknüpft ist.
SensitivityLabel.isEnabled und SensitivityLabel.setEnabled Lesen oder Festlegen, ob das Label aktiviert ist.
SensitivityLabel.isRemoved und SensitivityLabel.setRemoved Lesen oder Festlegen, ob das Label entfernt wurde. Setzen Sie den Wert auf true, wenn der Entfernungsstatus in den Metadaten erhalten bleiben muss.
SensitivityLabel.getAssignmentMethodType und SensitivityLabel.setAssignmentMethodType Lesen oder Festlegen, ob das Label automatisch oder durch eine Benutzerentscheidung angewendet wurde.
SensitivityLabel.getContentMarkTypes Lesen der Inhaltsmarkierungstypen, die dem Label zugeordnet sind.

Die Klasse SensitivityLabelAssignmentType definiert, wie ein Label zugewiesen wurde:

Die Klasse SensitivityLabelContentType definiert die mit einem Label verbundene Markierung:

Wert Bedeutung
SensitivityLabelContentType.None Das Label wurde standardmäßig oder automatisch angewendet.
SensitivityLabelContentType.Header Eine Kopfzeilen‑Inhaltsmarkierung ist dem Label zugeordnet.
SensitivityLabelContentType.Footer Eine Fußzeilen‑Inhaltsmarkierung ist dem Label zugeordnet.
SensitivityLabelContentType.Watermark Eine Wasserzeichen‑Inhaltsmarkierung ist dem Label zugeordnet.
SensitivityLabelContentType.Encryption Eine Verschlüsselungsschutz ist dem Label zugeordnet.

Mehrere Markierungstypen können einem einzigen Label zugeordnet werden.

Vorhandene Sensitivitätslabels auflisten

Lesen Sie die moderne Label‑Sammlung über Presentation.getSensitivityLabels und iterieren Sie darüber. Das folgende Beispiel listet jede Eigenschaft und jede Inhaltsmarkierung auf, die für jedes Label gespeichert ist:

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();
}

Ein Sensitivitätslabel mit Inhaltsmarkierung hinzufügen

Verwenden Sie SensitivityLabelCollection.add mit Label‑Kennung, Site‑Kennung, aktivem Zustand und Zuweisungsmethode. Nachdem die Methode das neue SensitivityLabel zurückgegeben hat, fügen Sie die erforderlichen Markierungswerte über die Liste hinzu, die von SensitivityLabel.getContentMarkTypes zurückgegeben wird.

Das folgende Beispiel fügt ein manuell ausgewähltes Label hinzu, das mit Fußzeilen‑ und Wasserzeichen‑Markierungen verknüpft ist, und speichert das Ergebnis anschließend als 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();
}

Ein Sensitivitätslabel aktualisieren

Die Werte des SensitivityLabel sind les‑ und schreibbar, außer dass die über SensitivityLabel.getContentMarkTypes zurückgegebene Liste über ihre Listoperationen geändert wird. Nachdem Sie das gewünschte Label gefunden haben, können Sie Kennung, Site‑Kennung, Aktivitätsstatus, Zuweisungsmethode, Entfernungsstatus und Inhaltsmarkierungstypen aktualisieren. Speichern Sie die Präsentation, um die Änderungen zu übernehmen.

Das folgende Beispiel aktualisiert den Aktivitätsstatus und die Zuweisungsmethode des ersten Labels:

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();
}

Ein Sensitivitätslabel als entfernt markieren

Um festzuhalten, dass ein Label entfernt wurde, finden Sie das Label und rufen Sie SensitivityLabel.setRemoved mit true auf. Dadurch bleibt der Label‑Eintrag erhalten, während sein Entfernungsstatus protokolliert wird. Wenn Sie stattdessen einen Eintrag aus der modernen Sammlung löschen möchten, verwenden Sie SensitivityLabelCollection.removeAt; mit SensitivityLabelCollection.clear entfernen Sie sämtliche Einträge.

Das folgende Beispiel markiert ein bestimmtes Label als entfernt und speichert die aktualisierte Präsentation:

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();
}

Legacy‑MIP‑Sensitivitätslabels lesen und migrieren

Ältere MIP‑basierte Workflows können Sensitivitätslabel‑Metadaten in benutzerdefinierten Dokumenteigenschaften statt in der modernen Label‑Sammlung speichern. Lesen Sie diese Metadaten mit DocumentProperties.getSensitivityLabels. Die Methode parsed die Legacy‑Benutzerdefiniert‑Eigenschaften und gibt ein Array von SensitivityLabel‑Objekten zurück.

Um die Metadaten zu migrieren, fügen Sie jedes zurückgegebene Label über SensitivityLabelCollection.add zur modernen SensitivityLabelCollection hinzu. Da das Hinzufügen einer doppelten Label‑Kennung eine Ausnahme auslöst, prüft das Beispiel die Ziel‑Sammlung, bevor es jedes Label kopiert. Sie können zusätzliche Validierungen einbauen, um sicherzustellen, dass jedes Legacy‑Label noch in der aktuellen Purview‑Richtlinie existiert.

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();
}

Die Migration kopiert die geparsten Label‑Objekte in die moderne Sammlung. Sie erfordert kein Löschen aller benutzerdefinierten Dokumenteigenschaften, sodass unverwandte Dokumentmetadaten erhalten bleiben. Verwenden Sie Presentation.save mit SaveFormat.Pptx, um die modernen Label‑Metadaten in eine PPTX‑Datei zu schreiben.

FAQ

Erzeugt das Hinzufügen eines Inhaltsmarkierungstyps eine sichtbare Kopf‑, Fußzeile oder ein Wasserzeichen auf den Folien?

Nein. Werte, die über die von SensitivityLabel.getContentMarkTypes zurückgegebene Liste hinzugefügt werden, beschreiben die Markierungen, die dem Sensitivitätslabel zugeordnet sind. Sie erzeugen keinen sichtbaren Text oder Formen in der Präsentation. Fügen Sie den entsprechenden Folieninhalt separat hinzu, falls Ihr Workflow diese Markierungen rendern muss.

Was ist der Unterschied zwischen dem Markieren eines Labels als entfernt und dem Löschen aus der Sammlung?

Ein Aufruf von SensitivityLabel.setRemoved mit true behält den Label‑Eintrag bei und protokolliert dessen Entfernungsstatus. Ein Aufruf von SensitivityLabelCollection.removeAt entfernt den Eintrag aus der modernen Sammlung. Wählen Sie die Operation, die den Aufbewahrungsanforderungen Ihrer Organisation entspricht.

Kann eine Präsentation sowohl Legacy‑MIP‑Metadaten als auch moderne Sensitivitätslabels enthalten?

Ja. Legacy‑Labels können in benutzerdefinierten Dokumenteigenschaften verbleiben, während moderne Labels über Presentation.getSensitivityLabels verfügbar sind. Verwenden Sie DocumentProperties.getSensitivityLabels, um die Legacy‑Metadaten zu lesen und nur die gültigen Labels zu migrieren, die noch nicht in der modernen Sammlung vorhanden sind.

Was passiert, wenn ein Label mit derselben Kennung mehrmals hinzugefügt wird?

SensitivityLabelCollection.add löst eine Ausnahme aus, wenn die Sammlung bereits ein Label mit derselben Kennung enthält. Prüfen Sie vor dem Hinzufügen oder Migrieren die vorhandenen Werte, die von SensitivityLabel.getId zurückgegeben werden.

Welches Ausgabeformat sollte verwendet werden, um aktualisierte Sensitivitätslabels zu erhalten?

Speichern Sie die Präsentation als PPTX, indem Sie Presentation.save mit SaveFormat.Pptx aufrufen, wie in den obigen Beispielen gezeigt.