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.
Poznámka
Identifikátory štítků citlivosti a informace o politice jsou definovány vaší konfigurací Microsoft Purview. Ověřte dostupnost štítků a požadavky politiky ve svém prostředí před přidáním nebo migrací metadat. Hodnoty SensitivityLabel.getContentMarkTypes popisují typy označení obsahu přiřazené ke štítku; samy o sobě nepřidávají viditelný text ani tvary do snímků.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.