Zarządzanie etykietami wrażliwości w prezentacjach PowerPoint w języku Python
Przegląd
Microsoft Purview sensitivity labels pomagają organizacjom klasyfikować i zarządzać dokumentami. Podczas automatycznego przetwarzania prezentacji aplikacja może potrzebować zachować istniejącą etykietę, zastosować etykietę wybraną przez politykę, zaktualizować jej stan lub przenieść metadane etykiety zapisane przez starszy przepływ pracy Microsoft Information Protection (MIP).
Aspose.Slides udostępnia nowoczesne metadane etykiet wrażliwości za pomocą Presentation.getSensitivityLabels. Ta metoda zwraca SensitivityLabelCollection , którą można przeglądać i modyfikować przed zapisaniem prezentacji jako PPTX.
Uwaga
Identyfikatory etykiet wrażliwości oraz informacje o polityce są definiowane w konfiguracji Microsoft Purview. Zweryfikuj dostępność etykiet i wymagania polityki w swoim środowisku przed dodaniem lub migracją metadanych. Wartości zwracane przez SensitivityLabel.getContentMarkTypes opisują oznaczenia treści powiązane z etykietą; same w sobie nie dodają widocznego tekstu ani kształtów do slajdów.Zrozumienie właściwości etykiet wrażliwości
Każdy SensitivityLabel zawiera następujące metadane:
| Metody | Cel |
|---|---|
| getId i setId | Pobiera lub ustawia identyfikator etykiety wrażliwości w polityce Purview. |
| getSiteId i setSiteId | Pobiera lub ustawia witrynę powiązaną z polityką etykiety. |
| isEnabled i setEnabled | Pobiera lub ustawia, czy etykieta jest włączona. |
| isRemoved i setRemoved | Pobiera lub ustawia, czy etykieta została usunięta. Ustaw wartość na True, gdy stan usunięcia ma być zachowany w metadanych. |
| getAssignmentMethodType i setAssignmentMethodType | Pobiera lub ustawia, czy etykieta została zastosowana automatycznie, czy na podstawie decyzji użytkownika. |
| getContentMarkTypes | Pobiera typy oznaczeń treści powiązane z etykietą. |
Klasa SensitivityLabelAssignmentType definiuje sposób, w jaki etykieta została przypisana:
- Standard reprezentuje domyślną lub automatycznie zastosowaną etykietę.
- Privileged reprezentuje etykietę zastosowaną w wyniku decyzji użytkownika, w tym etykiety zastosowane ręcznie, zalecane i obowiązkowe.
Klasa SensitivityLabelContentType definiuje oznaczenie powiązane z etykietą:
| Wartość | Znaczenie |
|---|---|
| None | Etykieta została zastosowana domyślnie lub automatycznie. |
| Header | Z etykietą powiązane jest oznaczenie treści nagłówka. |
| Footer | Z etykietą powiązane jest oznaczenie treści stopki. |
| Watermark | Z etykietą powiązane jest oznaczenie treści znaku wodnego. |
| Encryption | Z etykietą powiązana jest ochrona szyfrowaniem. |
Wiele typów oznaczeń może być powiązanych z jedną etykietą.
Wylistowanie istniejących etykiet wrażliwości
Odczytaj nowoczesną kolekcję etykiet za pomocą Presentation.getSensitivityLabels i enumeruj ją. Poniższy przykład wymienia wszystkie właściwości i oznaczenia treści przechowywane dla każdej etykiety:
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()
Dodanie etykiety wrażliwości z oznaczeniem treści
Użyj SensitivityLabelCollection.add z identyfikatorem etykiety, identyfikatorem witryny, stanem włączenia i metodą przypisania. Po zwróceniu nowego SensitivityLabel, dodaj wymagane wartości oznaczeń poprzez listę zwróconą przez SensitivityLabel.getContentMarkTypes.
Poniższy przykład dodaje ręcznie wybraną etykietę powiązaną z oznaczeniami stopki i znaku wodnego, a następnie zapisuje wynik 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()
Aktualizacja etykiety wrażliwości
Wartości SensitivityLabel są odczytywalne i zapisywalne, z wyjątkiem listy zwróconej przez SensitivityLabel.getContentMarkTypes, którą modyfikuje się poprzez operacje na liście. Po odnalezieniu odpowiedniej etykiety możesz zaktualizować jej identyfikator, identyfikator witryny, stan włączenia, metodę przypisania, stan usunięcia oraz typy oznaczeń treści. Zapisz prezentację, aby utrwalić zmiany.
Poniższy przykład aktualizuje stan włączenia i metodę przypisania pierwszej etykiety:
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()
Oznaczenie etykiety wrażliwości jako usuniętej
Aby zachować informację, że etykieta została usunięta, znajdź etykietę i wywołaj SensitivityLabel.setRemoved z True. To zachowuje wpis etykiety, jednocześnie rejestrując jej stan usunięcia. Jeśli zamiast tego musisz usunąć wpis z nowoczesnej kolekcji, użyj SensitivityLabelCollection.removeAt; użyj SensitivityLabelCollection.clear, aby usunąć wszystkie wpisy.
Poniższy przykład oznacza określoną etykietę jako usuniętą i zapisuje zaktualizowaną prezentację:
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()
Odczyt i migracja starszych etykiet MIP wrażliwości
Starsze przepływy pracy oparte na MIP mogą przechowywać metadane etykiet wrażliwości w niestandardowych właściwościach dokumentu zamiast w nowoczesnej kolekcji etykiet. Odczytaj te metadane za pomocą DocumentProperties.getSensitivityLabels. Metoda analizuje starsze niestandardowe właściwości i zwraca tablicę obiektów SensitivityLabel.
Aby migrować metadane, dodaj każdą zwróconą etykietę do nowoczesnej SensitivityLabelCollection przy użyciu SensitivityLabelCollection.add. Ponieważ dodanie etykiety o duplikującym się identyfikatorze powoduje wyjątek, przykład sprawdza kolekcję docelową przed kopiowaniem każdej etykiety. Możesz dodać dodatkową walidację, aby potwierdzić, że każda starsza etykieta nadal istnieje w bieżącej polityce 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()
Migracja kopiuje przetworzone obiekty etykiet do nowoczesnej kolekcji. Nie wymaga czyszczenia wszystkich niestandardowych właściwości dokumentu, więc niepowiązane metadane dokumentu pozostają nienaruszone. Użyj Presentation.save z SaveFormat.Pptx, aby zapisać nowoczesne metadane etykiet do pliku PPTX.
FAQ
Czy dodanie typu oznaczenia treści tworzy widoczny nagłówek, stopkę lub znak wodny na slajdach?
Nie. Wartości dodane za pośrednictwem listy zwróconej przez SensitivityLabel.getContentMarkTypes opisują oznaczenia powiązane z etykietą wrażliwości. Nie tworzą one widocznego tekstu ani kształtów w prezentacji. Dodaj odpowiednią treść slajdu osobno, jeśli Twój przepływ pracy musi wyświetlać te oznaczenia.
Jaka jest różnica między oznaczeniem etykiety jako usuniętej a jej usunięciem z kolekcji?
Wywołanie SensitivityLabel.setRemoved z True zachowuje wpis etykiety i rejestruje jej stan usunięcia. Wywołanie SensitivityLabelCollection.removeAt usuwa wpis z nowoczesnej kolekcji. Wybierz operację, która odpowiada wymaganiom Twojej organizacji dotyczącym przechowywania metadanych.
Czy prezentacja może zawierać zarówno starsze metadane MIP, jak i nowoczesne etykiety wrażliwości?
Tak. Starsze etykiety mogą pozostać w niestandardowych właściwościach dokumentu, podczas gdy nowoczesne etykiety są dostępne za pomocą Presentation.getSensitivityLabels. Użyj DocumentProperties.getSensitivityLabels, aby odczytać starsze metadane i migrować tylko ważne etykiety, które nie są już obecne w nowoczesnej kolekcji.
Co się dzieje, gdy etykieta o tym samym identyfikatorze zostanie dodana więcej niż raz?
SensitivityLabelCollection.add zgłasza wyjątek, gdy kolekcja już zawiera etykietę o tym samym identyfikatorze. Sprawdź istniejące wartości zwrócone przez SensitivityLabel.getId przed dodaniem lub migracją etykiet.
Jaki format wyjściowy powinien być użyty, aby zachować zaktualizowane etykiety wrażliwości?
Zapisz prezentację jako PPTX, wywołując Presentation.save z SaveFormat.Pptx, jak pokazano w powyższych przykładach.