Spravovat štítky citlivosti v PowerPoint prezentacích v Pythonu

Přehled

Microsoft Purview štítky citlivosti pomáhají organizacím klasifikovat a řídit dokumenty. Během automatizované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 zpřístupňuje moderní metadata štítků citlivosti přes Presentation.getSensitivityLabels. Tato metoda vrací SensitivityLabelCollection, kterou lze prozkoumat a upravit před uložením prezentace jako PPTX.

Pochopení vlastností štítku citlivosti

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

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

Třída SensitivityLabelAssignmentType definuje způsob přiřazení štítku:

  • Standard představuje výchozí nebo automaticky aplikovaný štítek.
  • Privileged představuje štítek aplikovaný na základě uživatelského rozhodnutí, včetně ručně aplikovaných, doporučených a povinných štítků.

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

Hodnota Význam
None Štítek byl aplikován výchozím nebo automatickým způsobem.
Header Obsah označení záhlaví je spojen s štítkem.
Footer Obsah označení zápatí je spojen s štítkem.
Watermark Obsah označení vodoznaku je spojen s štítkem.
Encryption Šifrovací ochrana je spojená se štítkem.

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

Seznam existujících štítků citlivosti

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("presentation.pptx")
try:
    sensitivity_labels = presentation.getSensitivityLabels()

    for sensitivity_label in sensitivity_labels:
        print("Label ID:", sensitivity_label.getId())
        print("Site ID:", sensitivity_label.getSiteId())
        print("Enabled:", sensitivity_label.isEnabled())
        print("Removed:", sensitivity_label.isRemoved())
        print("Assignment method:", sensitivity_label.getAssignmentMethodType())

        for content_mark_type in sensitivity_label.getContentMarkTypes():
            print("Content marking:", content_mark_type)
finally:
    presentation.dispose()

Přidání štítku citlivosti s označením obsahu

Použijte SensitivityLabelCollection.add s identifikátorem štítku, identifikátorem webového místa, stavem povolení a metodou přiřazení. Po návratu nové instance SensitivityLabel přidejte požadované hodnoty označení prostřednictvím seznamu vráceného metodou SensitivityLabel.getContentMarkTypes.

Následující příklad přidá ručně vybraný štítek spojený se zápatím a vodoznakem a následně výsledek uloží jako PPTX:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SensitivityLabelAssignmentType, SensitivityLabelContentType
from java.util import UUID

presentation = Presentation("presentation.pptx")
try:
    sensitivity_labels = presentation.getSensitivityLabels()

    label_identifier = "{11111111-2222-3333-4444-555555555555}"
    site_identifier = UUID.fromString("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")
    is_enabled = True
    assignment_method = SensitivityLabelAssignmentType.Privileged

    sensitivity_label = sensitivity_labels.add(label_identifier, site_identifier, is_enabled, assignment_method)

    sensitivity_label.getContentMarkTypes().addItem(jpype.JInt(SensitivityLabelContentType.Footer))
    sensitivity_label.getContentMarkTypes().addItem(jpype.JInt(SensitivityLabelContentType.Watermark))

    presentation.save("presentation_with_label.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Aktualizace štítku citlivosti

Hodnoty SensitivityLabel jsou čitelné i zapisovatelné, s výjimkou seznamu vráceného metodou SensitivityLabel.getContentMarkTypes, který se upravuje pomocí operací na seznamu. Po nalezení požadovaného štítku můžete aktualizovat jeho identifikátor, identifikátor webového místa, 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:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SensitivityLabelAssignmentType

presentation = Presentation("presentation.pptx")
try:
    sensitivity_labels = presentation.getSensitivityLabels()

    if sensitivity_labels.getCount() > 0:
        sensitivity_label = sensitivity_labels.get_Item(0)
        sensitivity_label.setEnabled(True)
        sensitivity_label.setAssignmentMethodType(SensitivityLabelAssignmentType.Privileged)

    presentation.save("presentation_with_updated_label.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Označit štítek citlivosti jako odstraněný

Pro zachování informace, že byl štítek odstraněn, najděte štítek a zavolejte SensitivityLabel.setRemoved s hodnotou True. Tím se zachová záznam o štítku a zaznamená jeho stav odstranění. Pokud místo toho potřebujete ze moderní kolekce položku odstranit, 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:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("presentation.pptx")
try:
    sensitivity_labels = presentation.getSensitivityLabels()
    target_label_identifier = "{11111111-2222-3333-4444-555555555555}"

    for sensitivity_label in sensitivity_labels:
        is_target_label = str(sensitivity_label.getId()).casefold() == target_label_identifier.casefold()

        if is_target_label:
            sensitivity_label.setRemoved(True)
            break

    presentation.save("presentation_with_removed_label.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

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

Starší pracovní postupy založené na MIP mohou ukládat metadata štítků citlivosti do vlastních vlastností dokumentu místo moderní kolekce štítků. Přečtěte tato metadata pomocí DocumentProperties.getSensitivityLabels. Metoda analyzuje staré vlastní vlastnosti a vrací pole 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 před kopírováním každého štítku kontroluje cílovou kolekci. Můžete přidat další ověření, aby bylo jisté, že každý starý štítek stále existuje v aktuální politice Purview.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("presentation_with_legacy_labels.pptx")
try:
    legacy_sensitivity_labels = presentation.getDocumentProperties().getSensitivityLabels()
    modern_sensitivity_labels = presentation.getSensitivityLabels()

    for legacy_sensitivity_label in legacy_sensitivity_labels:
        label_already_exists = False

        for modern_sensitivity_label in modern_sensitivity_labels:
            label_already_exists = str(modern_sensitivity_label.getId()).casefold() == str(legacy_sensitivity_label.getId()).casefold()

            if label_already_exists:
                break

        if not label_already_exists:
            modern_sensitivity_labels.add(legacy_sensitivity_label)

    presentation.save("presentation_with_modern_labels.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Migrace kopíruje analyzované objekty štítků do moderní kolekce. Nevyžaduje vymazání všech vlastních vlastností dokumentu, takže nesouvisející metadata zůstávají zachována. Použijte Presentation.save s SaveFormat.Pptx k zápisu 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 vodoznak na snímcích?

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

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

Volání SensitivityLabel.setRemoved s True ponechá záznam o štítku a zaznamená jeho stav odstranění. Volání SensitivityLabelCollection.removeAt štítek ze moderní sbírky odstraní. Zvolte operaci, která odpovídá požadavkům vaší organizace na uchování metadat.

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

Ano. Staré štítky mohou zůstat ve vlastních vlastnostech dokumentu, zatímco moderní štítky jsou dostupné přes Presentation.getSensitivityLabels. Použijte DocumentProperties.getSensitivityLabels k načtení starých metadat a migrujte pouze platné štítky, které ještě nejsou v moderní sbírce.

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

SensitivityLabelCollection.add vyvolá výjimku, pokud sbírka 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 k zachování aktualizovaných štítků citlivosti?

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