Beheer gevoeligheidslabels in PowerPoint‑presentaties met PHP

Overzicht

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

Aspose.Slides for PHP via Java maakt moderne gevoeligheidslabelmetadata beschikbaar via Presentation::getSensitivityLabels. Deze methode retourneert een SensitivityLabelCollection die kan worden geïnspecteerd en aangepast voordat de presentatie wordt opgeslagen als PPTX.

Begrijp gevoeligheidslabeleigenschappen

Elke SensitivityLabel bevat de volgende metadata:

Methoden Doel
SensitivityLabel::getId en SensitivityLabel::setId Ophalen of instellen van het gevoeligheidslabel‑identificatie in het Purview‑beleid.
SensitivityLabel::getSiteId en SensitivityLabel::setSiteId Ophalen of instellen van de site die aan het labelbeleid is gekoppeld.
SensitivityLabel::isEnabled en SensitivityLabel::setEnabled Ophalen of instellen of het label is ingeschakeld.
SensitivityLabel::isRemoved en SensitivityLabel::setRemoved Ophalen of instellen of het label is verwijderd. Stel de waarde in op true wanneer de verwijderingsstatus moet worden behouden in de metadata.
SensitivityLabel::getAssignmentMethodType en SensitivityLabel::setAssignmentMethodType Ophalen of instellen of het label automatisch is toegepast of via een gebruikersbeslissing.
SensitivityLabel::getContentMarkTypes Ophalen van de types inhoudsmarkeringen die aan het label zijn gekoppeld.

De klasse SensitivityLabelAssignmentType definieert hoe een label is toegewezen:

De klasse SensitivityLabelContentType definieert de markering die bij een label hoort:

Waarde Betekenis
SensitivityLabelContentType::None Het label is standaard of automatisch toegepast.
SensitivityLabelContentType::Header Koptekstinhoudmarkering is gekoppeld aan het label.
SensitivityLabelContentType::Footer Voettekstinhoudmarkering is gekoppeld aan het label.
SensitivityLabelContentType::Watermark Watermerkinhoudmarkering is gekoppeld aan het label.
SensitivityLabelContentType::Encryption Encryptiebescherming is gekoppeld aan het label.

Meerdere markeringstypen kunnen aan één label worden gekoppeld.

Lijst bestaande gevoeligheidslabels

Lees de moderne labelcollectie van Presentation::getSensitivityLabels en doorloop deze. Het onderstaande voorbeeld geeft elke eigenschap en inhoudsmarkering weer die voor elk label is opgeslagen:

$presentation = new Presentation("presentation.pptx");
try {
    $sensitivityLabels = $presentation->getSensitivityLabels();
    $sensitivityLabelCount = java_values($sensitivityLabels->getCount());

    for ($labelIndex = 0; $labelIndex < $sensitivityLabelCount; $labelIndex++) {
        $sensitivityLabel = $sensitivityLabels->get_Item($labelIndex);

        echo "Label ID: " . java_values($sensitivityLabel->getId()) . PHP_EOL;
        echo "Site ID: " . java_values($sensitivityLabel->getSiteId()->toString()) . PHP_EOL;
        echo "Enabled: " . (java_values($sensitivityLabel->isEnabled()) ? "true" : "false") . PHP_EOL;
        echo "Removed: " . (java_values($sensitivityLabel->isRemoved()) ? "true" : "false") . PHP_EOL;
        echo "Assignment method: " . java_values($sensitivityLabel->getAssignmentMethodType()) . PHP_EOL;

        $contentMarkIterator = $sensitivityLabel->getContentMarkTypes()->iterator();
        while (java_values($contentMarkIterator->hasNext())) {
            $contentMarkType = java_values($contentMarkIterator->next());
            echo "Content marking: " . $contentMarkType . PHP_EOL;
        }
    }
} finally {
    $presentation->dispose();
}

Voeg een gevoeligheidslabel toe met inhoudsmarkering

Gebruik SensitivityLabelCollection::add met het label‑identificatie, site‑identificatie, de ingeschakelde status en de toekenningsmethode. Nadat de methode het nieuwe SensitivityLabel heeft geretourneerd, voeg je de vereiste markeringwaarden toe via de lijst die wordt geretourneerd door SensitivityLabel::getContentMarkTypes.

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

$presentation = new Presentation("presentation.pptx");
try {
    $sensitivityLabels = $presentation->getSensitivityLabels();

    $labelIdentifier = "{11111111-2222-3333-4444-555555555555}";
    $UUID = new JavaClass("java.util.UUID");
    $siteIdentifier = $UUID->fromString("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
    $isEnabled = true;
    $assignmentMethod = SensitivityLabelAssignmentType::Privileged;

    $sensitivityLabel = $sensitivityLabels->add(
        $labelIdentifier,
        $siteIdentifier,
        $isEnabled,
        $assignmentMethod
    );

    $contentMarkTypes = $sensitivityLabel->getContentMarkTypes();
    $contentMarkTypes->addItem(SensitivityLabelContentType::Footer);
    $contentMarkTypes->addItem(SensitivityLabelContentType::Watermark);

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

Werk een gevoeligheidslabel bij

De waarden van SensitivityLabel zijn lees‑/schrijfbaar, behalve dat de lijst die wordt geretourneerd door SensitivityLabel::getContentMarkTypes wordt aangepast via zijn lijstbewerkingen. Nadat je het benodigde label hebt gevonden, kun je de identificatie, site‑identificatie, ingeschakelde status, toekenningsmethode, verwijderingsstatus en inhoudsmarkeringstypen bijwerken. Sla de presentatie op om de wijzigingen te bewaren.

Het onderstaande voorbeeld werkt de ingeschakelde status en toekenningsmethode van het eerste label bij:

$presentation = new Presentation("presentation.pptx");
try {
    $sensitivityLabels = $presentation->getSensitivityLabels();
    $sensitivityLabelCount = java_values($sensitivityLabels->getCount());

    if ($sensitivityLabelCount > 0) {
        $sensitivityLabel = $sensitivityLabels->get_Item(0);
        $sensitivityLabel->setEnabled(true);
        $sensitivityLabel->setAssignmentMethodType(SensitivityLabelAssignmentType::Privileged);
    }

    $presentation->save("presentation_with_updated_label.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Markeer een gevoeligheidslabel als verwijderd

Om het feit te behouden dat een label is verwijderd, zoek je het label en roep je SensitivityLabel::setRemoved aan met true. Hiermee blijft de label‑vermelding behouden en wordt de verwijderingsstatus vastgelegd. Als je in plaats daarvan een vermelding uit de moderne collectie wilt verwijderen, gebruik dan SensitivityLabelCollection::removeAt; gebruik SensitivityLabelCollection::clear om elke vermelding te verwijderen.

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

$presentation = new Presentation("presentation.pptx");
try {
    $sensitivityLabels = $presentation->getSensitivityLabels();
    $targetLabelIdentifier = "{11111111-2222-3333-4444-555555555555}";
    $sensitivityLabelCount = java_values($sensitivityLabels->getCount());

    for ($labelIndex = 0; $labelIndex < $sensitivityLabelCount; $labelIndex++) {
        $sensitivityLabel = $sensitivityLabels->get_Item($labelIndex);
        $labelIdentifier = java_values($sensitivityLabel->getId());
        $isTargetLabel = strcasecmp($labelIdentifier, $targetLabelIdentifier) === 0;

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

    $presentation->save("presentation_with_removed_label.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Lees en migreer legacy MIP-gevoeligheidslabels

Ouder MIP‑gebaseerde workflows kunnen gevoeligheidslabelmetadata opslaan in aangepaste documenteigenschappen in plaats van in de moderne labelcollectie. Lees die metadata met DocumentProperties::getSensitivityLabels. De methode analyseert de legacy‑aangepaste eigenschappen en retourneert een Java‑array van SensitivityLabel‑objecten.

Om de metadata te migren, voeg je elk geretourneerd label toe aan de moderne SensitivityLabelCollection via SensitivityLabelCollection::add. Omdat het toevoegen van een dubbel label‑identificatie een uitzondering veroorzaakt, controleert het voorbeeld de doelcollectie voordat elk label wordt gekopieerd. Je kunt extra validatie toevoegen om te bevestigen dat elk legacy‑label nog steeds bestaat in het huidige Purview‑beleid.

$presentation = new Presentation("presentation_with_legacy_labels.pptx");
try {
    $legacySensitivityLabels = $presentation->getDocumentProperties()->getSensitivityLabels();
    $modernSensitivityLabels = $presentation->getSensitivityLabels();

    $Array = new JavaClass("java.lang.reflect.Array");
    $legacyLabelCount = java_values($Array->getLength($legacySensitivityLabels));

    for ($legacyLabelIndex = 0; $legacyLabelIndex < $legacyLabelCount; $legacyLabelIndex++) {
        $legacySensitivityLabel = $legacySensitivityLabels[$legacyLabelIndex];
        $legacyLabelIdentifier = java_values($legacySensitivityLabel->getId());
        $labelAlreadyExists = false;
        $modernLabelCount = java_values($modernSensitivityLabels->getCount());

        for ($modernLabelIndex = 0; $modernLabelIndex < $modernLabelCount; $modernLabelIndex++) {
            $modernSensitivityLabel = $modernSensitivityLabels->get_Item($modernLabelIndex);
            $modernLabelIdentifier = java_values($modernSensitivityLabel->getId());
            $labelAlreadyExists = strcasecmp(
                $modernLabelIdentifier,
                $legacyLabelIdentifier
            ) === 0;

            if ($labelAlreadyExists) {
                break;
            }
        }

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

    $presentation->save("presentation_with_modern_labels.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

De migratie kopieert de geanalyseerde labelobjecten naar de moderne collectie. Het is niet nodig om alle aangepaste documenteigenschappen te wissen, zodat gerelateerde documentmetadata intact blijft. Gebruik Presentation::save met SaveFormat::Pptx om de moderne labelmetadata naar een PPTX‑bestand te schrijven.

FAQ

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

Nee. Waarden die worden toegevoegd via de lijst die wordt geretourneerd door SensitivityLabel::getContentMarkTypes 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 die markeringen moet weergeven.

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

Het aanroepen van SensitivityLabel::setRemoved met true houdt de labelvermelding vast en registreert de verwijderingsstatus. Het aanroepen van SensitivityLabelCollection::removeAt verwijdert de vermelding uit de moderne collectie. Kies de bewerking die overeenkomt met de bewaareisen voor metadata van uw organisatie.

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

Ja. Legacy‑labels kunnen behouden blijven in aangepaste documenteigenschappen terwijl moderne labels beschikbaar zijn via Presentation::getSensitivityLabels. Gebruik DocumentProperties::getSensitivityLabels om de legacy‑metadata te lezen en migreer alleen de geldige labels die nog niet in de moderne collectie aanwezig zijn.

Wat gebeurt er wanneer een label met dezelfde identificatie meer dan eens wordt toegevoegd?

SensitivityLabelCollection::add veroorzaakt een uitzondering wanneer de collectie al een label met dezelfde identificatie bevat. Controleer de bestaande waarden die worden geretourneerd door SensitivityLabel::getId voordat je labels toevoegt of migreert.

Welk uitvoerformaat moet worden gebruikt om bijgewerkte gevoeligheidslabels te behouden?

Sla de presentatie op als PPTX door Presentation::save aan te roepen met SaveFormat::Pptx, zoals getoond in de bovenstaande voorbeelden.