إدارة تصنيفات الحساسية في عروض PowerPoint التقديمية باستخدام Python

نظرة عامة

تساعد تصنيفات الحساسية في Microsoft Purview المؤسسات على تصنيف وحكم المستندات. أثناء معالجة العروض التقديمية بشكل آلي، قد تحتاج التطبيقات إلى الحفاظ على تصنيف موجود، أو تطبيق تصنيف مختار وفقًا لسياسة، أو تحديث حالته، أو ترحيل بيانات وصفية للتصنيف كتبها سير عمل Microsoft Information Protection (MIP) الأقدم.

Aspose.Slides exposes modern sensitivity label metadata through Presentation.getSensitivityLabels. This method returns an SensitivityLabelCollection that can be inspected and modified before the presentation is saved as PPTX.

فهم خصائص تصنيف الحساسية

كل SensitivityLabel يحتوي على البيانات الوصفية التالية:

الطرق الغرض
getId and setId الحصول على معرِّف تصنيف الحساسية في سياسة Purview أو تعيينه.
getSiteId and setSiteId الحصول على الموقع المرتبط بسياسة التصنيف أو تعيينه.
isEnabled and setEnabled معرفة ما إذا كان التصنيف مفعلاً أو تعيين هذه الحالة.
isRemoved and setRemoved معرفة ما إذا كان التصنيف قد أُزيل أو تعيين القيمة إلى True عندما يجب الاحتفاظ بحالة الإزالة في البيانات الوصفية.
getAssignmentMethodType and setAssignmentMethodType الحصول على طريقة تطبيق التصنيف (تلقائيًا أو بقرار المستخدم) أو تعيينها.
getContentMarkTypes الحصول على أنواع العلامات المرتبطة بالتصنيف.

الفئة SensitivityLabelAssignmentType تُعرّف كيفية تعيين التصنيف:

  • Standard يمثل تصنيفًا افتراضيًا أو مُطبقًا تلقائيًا.
  • Privileged يمثل تصنيفًا تم تطبيقه بقرار المستخدم، بما في ذلك التصنيفات المُحددة يدويًا، والموصى بها، والملزمة.

الفئة SensitivityLabelContentType تُعرّف العلامة المرتبطة بالتصنيف:

القيمة المعنى
None تم تطبيق التصنيف افتراضيًا أو تلقائيًا.
Header علامة محتوى الرأس مرتبطة بالتصنيف.
Footer علامة محتوى التذييل مرتبطة بالتصنيف.
Watermark علامة محتوى العلامة المائية مرتبطة بالتصنيف.
Encryption حماية التشفير مرتبطة بالتصنيف.

يمكن أن تكون أنواع علامات متعددة مرتبطة بتصنيف واحد.

قائمة تصنيفات الحساسية الموجودة

اقرأ مجموعة التصنيفات الحديثة من Presentation.getSensitivityLabels وقم بتعدادها. المثال التالي يسرد كل خاصية وعلامة محتوى مخزنة لكل تصنيف:

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()

إضافة تصنيف حساسية مع علامة محتوى

استخدم SensitivityLabelCollection.add مع معرِّف التصنيف، ومعرِّف الموقع، وحالة التفعيل، وطريقة التعيين. بعد أن تُعيد الطريقة كائن SensitivityLabel جديد، أضف قيم العلامات المطلوبة من خلال القائمة التي تُعيدها SensitivityLabel.getContentMarkTypes.

المثال التالي يضيف تصنيفًا مختارًا يدويًا مرتبطًا بعلامات التذييل والعلامة المائية، ثم يحفظ النتيجة كملف 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()

تحديث تصنيف الحساسية

قِيَم SensitivityLabel قابلة للقراءة والكتابة، باستثناء القائمة التي تُعيدها SensitivityLabel.getContentMarkTypes والتي تُعدَّل عبر عمليات القائمة. بعد تحديد التصنيف المطلوب، يمكنك تحديث معرِّفه، ومعرِّف الموقع، وحالة التفعيل، وطريقة التعيين، وحالة الإزالة، وأنواع العلامات. احفظ العرض التقديمي لتثبيت التغييرات.

المثال التالي يحدِّث حالة التفعيل وطريقة التعيين للتصنيف الأول:

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()

وضع علامة على تصنيف الحساسية كـ “مُزال”

للحفاظ على حقيقة إزالة التصنيف، ابحث عن التصنيف واستدعِ SensitivityLabel.setRemoved مع القيمة True. هذا يحتفظ بإدخال التصنيف مع تسجيل حالته كـ “مُزال”. إذا رغبت في حذف إدخال من المجموعة الحديثة، استخدم SensitivityLabelCollection.removeAt؛ واستخدم SensitivityLabelCollection.clear لحذف جميع الإدخالات.

المثال التالي يضع علامة “مُزال” على تصنيف محدد ويحفظ العرض المحدث:

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()

قراءة وترحيل تصنيفات الحساسية القديمة من MIP

يمكن لسير عمل MIP القديم تخزين بيانات تصنيف الحساسية في خصائص المستند المخصَّصة بدلاً من مجموعة التصنيفات الحديثة. اقرأ تلك البيانات باستخدام DocumentProperties.getSensitivityLabels. تقوم الطريقة بتحليل الخصائص المخصَّصة القديمة وتعيد مصفوفة من كائنات SensitivityLabel.

لترحيل البيانات الوصفية، أضف كل تصنيف مُسترجَع إلى SensitivityLabelCollection الحديثة عبر SensitivityLabelCollection.add. نظرًا لأن إضافة مُعرِّف تصنيف مكرر يثير استثناءً، يتحقق المثال من المجموعة الوجهة قبل نسخ كل تصنيف. يمكنك إضافة تحقق إضافي للتأكد من أن كل تصنيف قديم لا يزال موجودًا في سياسة 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()

الترحيل ينسخ كائنات التصنيف المُحلَّلة إلى المجموعة الحديثة. لا يتطلب مسح جميع خصائص المستند المخصَّصة، وبالتالي تظل البيانات الوصفية غير المرتبطة بالمستند سليمة. استخدم Presentation.save مع SaveFormat.Pptx لكتابة بيانات التصنيف الحديثة إلى ملف PPTX.

الأسئلة المتداولة

هل إنشاء نوع علامة محتوى يضيف رأسًا أو تذييلًا أو علامة مائية مرئية على الشرائح؟

لا. القيم المُضافة عبر القائمة التي تُعيدها SensitivityLabel.getContentMarkTypes تصف العلامات المرتبطة بالتصنيف، ولا تُنشئ نصًا أو أشكالًا مرئية في العرض. إذا كان سير عملك يحتاج إلى عرض تلك العلامات، أضف محتوى الشرائح الموافق بشكل منفصل.

ما الفرق بين وضع علامة على التصنيف كـ “مُزال” وحذفه من المجموعة؟

استدعاء SensitivityLabel.setRemoved مع True يظل يحتفظ بإدخال التصنيف ويسجل حالته كـ “مُزال”. استدعاء SensitivityLabelCollection.removeAt يحذف الإدخال من المجموعة الحديثة. اختر العملية التي تتوافق مع متطلبات احتفاظ المنظمة بالبيانات الوصفية.

هل يمكن للعرض التقديمي أن يحتوي على بيانات MIP القديمة بالإضافة إلى تصنيفات الحساسية الحديثة؟

نعم. يمكن أن تبقى التصنيفات القديمة في خصائص المستند المخصَّصة بينما تكون التصنيفات الحديثة متاحة عبر Presentation.getSensitivityLabels. استخدم DocumentProperties.getSensitivityLabels لقراءة البيانات القديمة وترحيل التصنيفات الصالحة التي لم تُضاف بعد إلى المجموعة الحديثة.

ماذا يحدث إذا تم إضافة تصنيف بنفس المعرف أكثر من مرة؟

يُطلق SensitivityLabelCollection.add استثناءً عندما تحتوي المجموعة بالفعل على تصنيف بنفس المعرف. تحقق من القيم الموجودة المُسترجَعة عبر SensitivityLabel.getId قبل الإضافة أو الترحيل.

أي تنسيق إخراج يجب استخدامه للحفاظ على تصنيفات الحساسية المحدثة؟

احفظ العرض التقديمي كملف PPTX باستدعاء Presentation.save مع SaveFormat.Pptx، كما هو موضح في الأمثلة أعلاه.