Správa citlivých štítků v prezentacích PowerPoint v PHP

Přehled

Microsoft Purview sensitivity labels pomáhají organizacím klasifikovat a spravovat dokumenty. Během automatického zpracování prezentací může aplikace potřebovat zachovat existující štítek, použít štítek vybraný politikou, aktualizovat jeho stav nebo migrovat metadata štítku vytvořená starším pracovním postupem Microsoft Information Protection (MIP).

Aspose.Slides for PHP via Java poskytuje moderní metadata citlivých štítků prostřednictvím Presentation::getSensitivityLabels. Tato metoda vrací SensitivityLabelCollection, kterou lze prozkoumat a upravit před uložením prezentace jako PPTX.

Porozumění vlastnostem citlivých štítků

Každý SensitivityLabel obsahuje následující metadata:

Metody Účel
SensitivityLabel::getId a SensitivityLabel::setId Získat nebo nastavit identifikátor citlivého štítku v politice Purview.
SensitivityLabel::getSiteId a SensitivityLabel::setSiteId Získat nebo nastavit webové místo spojené s politikou štítku.
SensitivityLabel::isEnabled a SensitivityLabel::setEnabled Získat nebo nastavit, zda je štítek povolen.
SensitivityLabel::isRemoved a SensitivityLabel::setRemoved Získat nebo nastavit, zda byl štítek odstraněn. Nastavte hodnotu na true, když má být stav odstranění zachován v metadatech.
SensitivityLabel::getAssignmentMethodType a SensitivityLabel::setAssignmentMethodType Získat nebo nastavit, zda byl štítek aplikován automaticky nebo na základě rozhodnutí uživatele.
SensitivityLabel::getContentMarkTypes Získat typy označení obsahu spojené se štítkem.

Třída SensitivityLabelAssignmentType definuje, jak byl štítek přiřazen:

Třída SensitivityLabelContentType definuje označení spojené se štítkem:

Hodnota Význam
SensitivityLabelContentType::None Štítek byl aplikován výchozím způsobem nebo automaticky.
SensitivityLabelContentType::Header K štítku je přiřazeno označení obsahu v záhlaví.
SensitivityLabelContentType::Footer K štítku je přiřazeno označení obsahu v zápatí.
SensitivityLabelContentType::Watermark K štítku je přiřazeno označení obsahu ve vodotisku.
SensitivityLabelContentType::Encryption K štítku je přiřazena ochrana šifrováním.

Jednomu štítku může být přiřazeno více typů označení.

Seznam existujících citlivých štítků

Načtěte moderní kolekci štítků pomocí Presentation::getSensitivityLabels a projděte ji. Následující příklad vypíše všechny vlastnosti a označení obsahu uložená pro každý štítek:

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

Přidání citlivého štítku s označením obsahu

Použijte SensitivityLabelCollection::add s identifikátorem štítku, identifikátorem webu, stavem povolení a metodou přiřazení. Po vrácení nového SensitivityLabel přidejte požadované hodnoty označení přes seznam vrácený metodou SensitivityLabel::getContentMarkTypes.

Následující příklad přidá ručně vybraný štítek spojený se značkami v zápatí a vodotisku a poté výsledek uloží jako 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();
}

Aktualizace citlivého štítku

Hodnoty SensitivityLabel jsou zapisovatelné, kromě seznamu vráceného metodou SensitivityLabel::getContentMarkTypes, který se upravuje pomocí jeho operací seznamu. Po nalezení požadovaného štítku můžete aktualizovat jeho identifikátor, identifikátor webu, stav povolení, metodu přiřazení, stav odstranění a typy označení obsahu. Uložte prezentaci, aby se změny zachovaly.

Následující příklad aktualizuje stav povolení a metodu přiřazení prvního štítku:

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

Označení citlivého štítku jako odstraněného

Chcete‑li zachovat fakt, že byl štítek odstraněn, najděte jej a zavolejte SensitivityLabel::setRemoved s hodnotou true. Tím se štítek ponechá v záznamu a zaznamená se jeho odstraněný stav. Pokud potřebujete ze moderní kolekce štítek smazat, použijte SensitivityLabelCollection::removeAt; pro smazání všech položek použijte SensitivityLabelCollection::clear.

Následující příklad označí konkrétní štítek jako odstraněný a uloží aktualizovanou prezentaci:

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

Čtení a migrace starých MIP citlivých štítků

Starší pracovní postupy založené na MIP mohou uchovávat metadata citlivých štítků v uživatelských vlastnostech dokumentu místo moderní kolekce štítků. Načtěte tato metadata pomocí DocumentProperties::getSensitivityLabels. Metoda analyzuje staré uživatelské vlastnosti a vrací pole Java objektů SensitivityLabel.

Pro migraci metadat přidejte každý vrácený štítek do moderní SensitivityLabelCollection pomocí SensitivityLabelCollection::add. Protože přidání duplicitního identifikátoru štítku vyvolá výjimku, příklad nejprve zkontroluje cílovou kolekci, než jednotlivé štítky zkopíruje. Můžete přidat další ověření, aby bylo potvrzeno, že každý starý štítek stále existuje v aktuální politice Purview.

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

Migrace zkopíruje analyzované objekty štítků do moderní kolekce. Nepožaduje vymazání všech uživatelských vlastností dokumentu, takže nesouvisející metadata zůstávají nedotčena. Použijte Presentation::save s SaveFormat::Pptx pro zápis moderních metadat štítků do souboru PPTX.

Často kladené otázky

Vytváří přidání typu označení obsahu viditelný záhlaví, zápatí nebo vodotisk na snímcích?

Ne. Hodnoty přidané přes seznam vrácený metodou SensitivityLabel::getContentMarkTypes popisují označení spojená s citlivým štítkem. Nevytvářejí viditelný text ani tvary v prezentaci. Pokud váš pracovní postup musí tato označení vykreslit, přidejte odpovídající obsah snímku samostatně.

Jaký je rozdíl mezi označením štítku jako odstraněného a jeho smazáním z kolekce?

Volání SensitivityLabel::setRemoved s true ponechává záznam štítku a zaznamenává jeho stav odstranění. Volání SensitivityLabelCollection::removeAt štítek z moderní kolekce odstraní. Vyberte operaci, která odpovídá požadavkům vaší organizace na uchovávání metadat.

Může prezentace obsahovat jak stará MIP metadata, tak moderní citlivé štítky?

Ano. Staré štítky mohou zůstat v uživatelských vlastnostech dokumentu, zatímco moderní štítky jsou dostupné prostřednictvím Presentation::getSensitivityLabels. Použijte DocumentProperties::getSensitivityLabels pro načtení starých metadat a migrujte pouze platné štítky, které ještě nejsou v moderní kolekci.

Co se stane, když je štítek se stejným identifikátorem přidán vícekrát?

SensitivityLabelCollection::add vyvolá výjimku, pokud kolekce již obsahuje štítek se stejným identifikátorem. Před přidáním nebo migrací štítků zkontrolujte existující hodnoty vrácené metodou SensitivityLabel::getId.

Jaký výstupní formát použít pro zachování aktualizovaných citlivých štítků?

Uložte prezentaci jako PPTX voláním Presentation::save s SaveFormat::Pptx, jak je ukázáno v příkladech výše.