Beheer gevoeligheidslabels in PowerPoint-presentaties in C++

Overzicht

Microsoft Purview‑gevoeligheidslabels helpen organisaties documenten te classificeren en te beheren. Tijdens geautomatiseerde presentatieverwerking kan een applicatie een bestaand label moeten behouden, een label toepassen dat door een beleid is geselecteerd, de status bijwerken of label‑metadata migreren die door een oudere Microsoft Information Protection (MIP)‑workflow is geschreven.

Aspose.Slides maakt moderne gevoeligheidslabel‑metadata beschikbaar via IPresentation::get_SensitivityLabels. Deze methode retourneert een ISensitivityLabelCollection die kan worden geïnspecteerd en aangepast voordat de presentatie wordt opgeslagen als PPTX.

Begrijp de eigenschappen van gevoeligheidslabels

Elke ISensitivityLabel bevat de volgende metadata:

Accessors Doel
ISensitivityLabel::get_Id, ISensitivityLabel::set_Id Identificeer het gevoeligheidslabel in het Purview‑beleid.
ISensitivityLabel::get_SiteId, ISensitivityLabel::set_SiteId Identificeer de site die bij het label‑beleid hoort.
ISensitivityLabel::get_IsEnabled, ISensitivityLabel::set_IsEnabled Geef aan of het label is ingeschakeld.
ISensitivityLabel::get_IsRemoved, ISensitivityLabel::set_IsRemoved Geef aan dat het label is verwijderd. Stel de waarde in op true wanneer de verwijderingsstatus in de metadata moet worden bewaard.
ISensitivityLabel::get_AssignmentMethodType, ISensitivityLabel::set_AssignmentMethodType Specificeer of het label automatisch of via een gebruikersbeslissing is toegepast.
ISensitivityLabel::get_ContentMarkTypes Sommeer de type inhoudsmarkeringen die aan het label zijn gekoppeld.

De enumeratie SensitivityLabelAssignmentType beschrijft hoe een label is toegewezen:

De enumeratie SensitivityLabelContentType identificeert de markering die aan een label is gekoppeld:

Waarde Betekenis
SensitivityLabelContentType::None Het label is standaard of automatisch toegepast.
SensitivityLabelContentType::Header Koptekst‑markering is aan het label gekoppeld.
SensitivityLabelContentType::Footer Voettekst‑markering is aan het label gekoppeld.
SensitivityLabelContentType::Watermark Watermerk‑markering is aan het label gekoppeld.
SensitivityLabelContentType::Encryption Encryptiebescherming is aan het label gekoppeld.

Meerdere markeringstypen kunnen aan één label worden gekoppeld.

Lijst bestaande gevoeligheidslabels

Lees de moderne labelcollectie via IPresentation::get_SensitivityLabels en doorloop deze. Het volgende voorbeeld somt elke eigenschap en inhoudsmarkering op die voor elk label is opgeslagen:

#include <DOM/Presentation.h>
#include <DOM/ISensitivityLabel.h>
#include <DOM/ISensitivityLabelCollection.h>
#include <DOM/SensitivityLabelAssignmentType.h>
#include <DOM/SensitivityLabelContentType.h>
#include <system/collections/ilist.h>
#include <system/console.h>
#include <system/guid.h>
#include <system/shared_ptr.h>
#include <system/string.h>

using Aspose::Slides::Presentation;
using System::Console;
using System::MakeObject;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto sensitivityLabels = presentation->get_SensitivityLabels();

for (auto&& sensitivityLabel : sensitivityLabels)
{
    auto labelIdentifier = sensitivityLabel->get_Id();
    auto siteIdentifier = sensitivityLabel->get_SiteId();
    auto isEnabled = sensitivityLabel->get_IsEnabled();
    auto isRemoved = sensitivityLabel->get_IsRemoved();
    auto assignmentMethod = sensitivityLabel->get_AssignmentMethodType();

    Console::WriteLine(u"Label ID: {0}", labelIdentifier);
    Console::WriteLine(u"Site ID: {0}", siteIdentifier);
    Console::WriteLine(u"Enabled: {0}", isEnabled);
    Console::WriteLine(u"Removed: {0}", isRemoved);
    Console::WriteLine(u"Assignment method: {0}", assignmentMethod);

    for (auto contentMarkType : sensitivityLabel->get_ContentMarkTypes())
    {
        Console::WriteLine(u"Content marking: {0}", contentMarkType);
    }
}

presentation->Dispose();

Voeg een gevoeligheidslabel toe met inhoudsmarkering

Gebruik ISensitivityLabelCollection::Add met de label‑identifier, site‑identifier, ingeschakelde status en toewijzingsmethode. Nadat de methode het nieuwe ISensitivityLabel heeft geretourneerd, voegt u de vereiste markeringstypen toe via ISensitivityLabel::get_ContentMarkTypes.

Het volgende voorbeeld voegt een handmatig geselecteerd label toe dat is gekoppeld aan voettekst‑ en watermerk‑markeringen, en slaat vervolgens het resultaat op als PPTX:

#include <DOM/Presentation.h>
#include <DOM/ISensitivityLabel.h>
#include <DOM/ISensitivityLabelCollection.h>
#include <DOM/SensitivityLabelAssignmentType.h>
#include <DOM/SensitivityLabelContentType.h>
#include <Export/SaveFormat.h>
#include <system/collections/ilist.h>
#include <system/guid.h>
#include <system/shared_ptr.h>

using Aspose::Slides::Presentation;
using Aspose::Slides::SensitivityLabelAssignmentType;
using Aspose::Slides::SensitivityLabelContentType;
using Aspose::Slides::Export::SaveFormat;
using System::Guid;
using System::MakeObject;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto sensitivityLabels = presentation->get_SensitivityLabels();

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

auto sensitivityLabel = sensitivityLabels->Add(
    labelIdentifier,
    siteIdentifier,
    isEnabled,
    assignmentMethod);

sensitivityLabel->get_ContentMarkTypes()->Add(SensitivityLabelContentType::Footer);
sensitivityLabel->get_ContentMarkTypes()->Add(SensitivityLabelContentType::Watermark);

presentation->Save(u"presentation_with_label.pptx", SaveFormat::Pptx);
presentation->Dispose();

Werk een gevoeligheidslabel bij

De waarden van ISensitivityLabel zijn lees‑/schrijfbaar via hun getter‑ en setter‑methoden, behalve dat de collectie die wordt geretourneerd door ISensitivityLabel::get_ContentMarkTypes wordt aangepast via de lijstbewerkingen. Nadat u het gewenste label hebt gevonden, kunt u de identifier, site‑identifier, ingeschakelde status, toewijzingsmethode, verwijderingsstatus en inhoudsmarkeringstypen bijwerken. Sla de presentatie vervolgens op om de wijzigingen te bewaren.

Het volgende voorbeeld werkt de ingeschakelde status en de toewijzingsmethode van het eerste label bij:

#include <DOM/Presentation.h>
#include <DOM/ISensitivityLabel.h>
#include <DOM/ISensitivityLabelCollection.h>
#include <DOM/SensitivityLabelAssignmentType.h>
#include <Export/SaveFormat.h>
#include <system/shared_ptr.h>

using Aspose::Slides::Presentation;
using Aspose::Slides::SensitivityLabelAssignmentType;
using Aspose::Slides::Export::SaveFormat;
using System::MakeObject;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto sensitivityLabels = presentation->get_SensitivityLabels();
int labelCount = sensitivityLabels->get_Count();

if (labelCount > 0)
{
    auto sensitivityLabel = sensitivityLabels->idx_get(0);
    sensitivityLabel->set_IsEnabled(true);
    sensitivityLabel->set_AssignmentMethodType(SensitivityLabelAssignmentType::Privileged);
}

presentation->Save(u"presentation_with_updated_label.pptx", SaveFormat::Pptx);
presentation->Dispose();

Markeer een gevoeligheidslabel als verwijderd

Om het feit te behouden dat een label is verwijderd, vindt u het label en roept u ISensitivityLabel::set_IsRemoved aan met true. Hierdoor blijft de label‑invoer behouden terwijl de verwijderingsstatus wordt geregistreerd. Als u in plaats daarvan een invoer uit de moderne collectie wilt verwijderen, gebruikt u ISensitivityLabelCollection::RemoveAt; gebruik ISensitivityLabelCollection::Clear om alle invoeren te verwijderen.

Het volgende voorbeeld markeert een specifiek label als verwijderd en slaat de bijgewerkte presentatie op:

#include <DOM/Presentation.h>
#include <DOM/ISensitivityLabel.h>
#include <DOM/ISensitivityLabelCollection.h>
#include <Export/SaveFormat.h>
#include <system/shared_ptr.h>
#include <system/string.h>
#include <system/string_comparison.h>

using Aspose::Slides::Presentation;
using Aspose::Slides::Export::SaveFormat;
using System::MakeObject;
using System::String;
using System::StringComparison;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto sensitivityLabels = presentation->get_SensitivityLabels();
auto targetLabelIdentifier = u"{11111111-2222-3333-4444-555555555555}";

for (auto&& sensitivityLabel : sensitivityLabels)
{
    auto labelIdentifier = sensitivityLabel->get_Id();
    bool isTargetLabel = String::Equals(
        labelIdentifier,
        targetLabelIdentifier,
        StringComparison::OrdinalIgnoreCase);

    if (isTargetLabel)
    {
        sensitivityLabel->set_IsRemoved(true);
        break;
    }
}

presentation->Save(u"presentation_with_removed_label.pptx", SaveFormat::Pptx);
presentation->Dispose();

Lees en migreer legacy MIP‑gevoeligheidslabels

Oudere MIP‑gebaseerde workflows kunnen gevoeligheidslabel‑metadata opslaan in aangepaste documenteigenschappen in plaats van in de moderne labelcollectie. Lees die metadata met IDocumentProperties::GetSensitivityLabels. De methode ontleedt de legacy‑aangepaste eigenschappen en retourneert een array van ISensitivityLabel objecten.

Om de metadata te migreren, voegt u elk geretourneerd label toe aan de moderne ISensitivityLabelCollection via ISensitivityLabelCollection::Add. Omdat het toevoegen van een dubbele label‑identifier een uitzondering oplevert, controleert het voorbeeld de doelcollectie voordat elk label wordt gekopieerd. U kunt extra validatie toevoegen om te bevestigen dat elk legacy‑label nog steeds bestaat in het huidige Purview‑beleid.

#include <DOM/Presentation.h>
#include <DOM/IDocumentProperties.h>
#include <DOM/ISensitivityLabel.h>
#include <DOM/ISensitivityLabelCollection.h>
#include <Export/SaveFormat.h>
#include <system/array.h>
#include <system/shared_ptr.h>
#include <system/string.h>
#include <system/string_comparison.h>

using Aspose::Slides::Presentation;
using Aspose::Slides::Export::SaveFormat;
using System::MakeObject;
using System::String;
using System::StringComparison;

auto presentation = MakeObject<Presentation>(u"presentation_with_legacy_labels.pptx");
auto documentProperties = presentation->get_DocumentProperties();
auto legacySensitivityLabels = documentProperties->GetSensitivityLabels();
auto modernSensitivityLabels = presentation->get_SensitivityLabels();

for (auto&& legacySensitivityLabel : legacySensitivityLabels)
{
    bool labelAlreadyExists = false;
    auto legacyLabelIdentifier = legacySensitivityLabel->get_Id();

    for (auto&& modernSensitivityLabel : modernSensitivityLabels)
    {
        auto modernLabelIdentifier = modernSensitivityLabel->get_Id();
        labelAlreadyExists = String::Equals(
            modernLabelIdentifier,
            legacyLabelIdentifier,
            StringComparison::OrdinalIgnoreCase);

        if (labelAlreadyExists)
        {
            break;
        }
    }

    if (!labelAlreadyExists)
    {
        modernSensitivityLabels->Add(legacySensitivityLabel);
    }
}

presentation->Save(u"presentation_with_modern_labels.pptx", SaveFormat::Pptx);
presentation->Dispose();

De migratie kopieert de geparseerde labelobjecten naar de moderne collectie. Het is niet nodig om alle aangepaste documenteigenschappen te wissen, zodat ongerelateerde documentmetadata intact blijft. Gebruik IPresentation::Save met SaveFormat::Pptx om de moderne label‑metadata naar een PPTX‑bestand te schrijven.

FAQ

Voegt het toevoegen van een inhoudsmarkeringstype een zichtbare koptekst, voettekst of watermerk toe aan dia’s?

Nee. De waarden die via ISensitivityLabel::get_ContentMarkTypes worden toegevoegd, beschrijven de markeringen die bij het gevoeligheidslabel horen. Ze creëren geen zichtbare tekst of vormen in de presentatie. Voeg de overeenkomstige dia‑inhoud apart toe als uw workflow deze markeringen moet weergeven.

Wat is het verschil tussen een label markeren als verwijderd en het verwijderen uit de collectie?

Het aanroepen van ISensitivityLabel::set_IsRemoved met true houdt de label‑invoer bij en registreert de verwijderingsstatus. Het aanroepen van ISensitivityLabelCollection::RemoveAt verwijdert de invoer uit de moderne collectie. Kies de bewerking die past bij de metadata‑retentievereisten van uw organisatie.

Kan een presentatie zowel legacy MIP‑metadata als moderne gevoeligheidslabels bevatten?

Ja. Legacy‑labels kunnen blijven bestaan in aangepaste documenteigenschappen, terwijl moderne labels beschikbaar zijn via IPresentation::get_SensitivityLabels. Gebruik IDocumentProperties::GetSensitivityLabels om de legacy‑metadata te lezen en migreer alleen de geldige labels die nog niet aanwezig zijn in de moderne collectie.

Wat gebeurt er wanneer een label met dezelfde identifier meer dan één keer wordt toegevoegd?

ISensitivityLabelCollection::Add werpt een argument‑exception wanneer de collectie al een label met dezelfde identifier bevat. Controleer bestaande ISensitivityLabel::get_Id waarden voordat u labels toevoegt of migreert.

Welk uitvoerformaat moet worden gebruikt om bijgewerkte gevoeligheidslabels te behouden?

Sla de presentatie op als PPTX door IPresentation::Save aan te roepen met SaveFormat::Pptx, zoals getoond in de voorbeelden hierboven.