مدیریت برچسب‌های حساسیت در ارائه‌های PowerPoint با Python

بررسی کلی

برچسب‌های حساسیت Microsoft Purview به سازمان‌ها کمک می‌کند تا اسناد را طبقه‌بندی و مدیریت کنند. هنگام پردازش خودکار ارائه، یک برنامه ممکن است نیاز داشته باشد برچسب موجود را حفظ کند، برچسبی که توسط یک سیاست انتخاب شده است اعمال کند، وضعیت آن را به‌روز کند یا متادیتای برچسب نوشته‌شده توسط یک جریان کاری قدیمی Microsoft Information Protection (MIP) را مهاجرت دهد.

Aspose.Slides for Python via .NET متادیتای برچسب حساسیت مدرن را از طریق Presentation.sensitivity_labels در دسترس می‌گذارد. این ویژگی یک SensitivityLabelCollection باز می‌گرداند که می‌توان قبل از ذخیره ارائه به‌عنوان PPTX آن را بررسی و اصلاح کرد.

درک ویژگی‌های برچسب حساسیت

هر SensitivityLabel شامل متادیتای زیر است:

خاصیت هدف
SensitivityLabel.id شناسه برچسب حساسیت در سیاست Purview را شناسایی می‌کند.
SensitivityLabel.site_id سایت مرتبط با سیاست برچسب را شناسایی می‌کند.
SensitivityLabel.is_enabled نشان می‌دهد آیا برچسب فعال است یا نه.
SensitivityLabel.is_removed نشان می‌دهد برچسب حذف شده است. هنگام نیاز به حفظ وضعیت حذف در متادیتا، این خاصیت را به True تنظیم کنید.
SensitivityLabel.assignment_method_type مشخص می‌کند برچسب به‌صورت خودکار یا از طریق تصمیم کاربر اعمال شده است.
SensitivityLabel.content_mark_types انواع نشانه‌های محتوایی مرتبط با برچسب را فهرست می‌کند.

نماد SensitivityLabelAssignmentType نحوه اختصاص برچسب را توصیف می‌کند:

نماد SensitivityLabelContentType نشانگر نشانه مرتبط با برچسب است:

مقدار معنی
SensitivityLabelContentType.NONE برچسب به‌صورت پیش‌فرض یا خودکار اعمال شده است.
SensitivityLabelContentType.HEADER نشانه محتوای سرصفحه با برچسب مرتبط است.
SensitivityLabelContentType.FOOTER نشانه محتوای پاورقی با برچسب مرتبط است.
SensitivityLabelContentType.WATERMARK نشانه محتوای واترمارک با برچسب مرتبط است.
SensitivityLabelContentType.ENCRYPTION حفاظت رمزنگاری با برچسب مرتبط است.

چندین نوع نشانه می‌توانند با یک برچسب مرتبط باشند.

فهرست برچسب‌های حساسیت موجود

مجموعه برچسب‌های مدرن را از Presentation.sensitivity_labels بخوانید و آن را پیمایش کنید. مثال زیر هر خاصیت و نشانه محتوایی ذخیره‌شده برای هر برچسب را فهرست می‌کند:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    sensitivity_labels = presentation.sensitivity_labels

    for sensitivity_label in sensitivity_labels:
        print("Label ID:", sensitivity_label.id)
        print("Site ID:", sensitivity_label.site_id)
        print("Enabled:", sensitivity_label.is_enabled)
        print("Removed:", sensitivity_label.is_removed)
        print("Assignment method:", sensitivity_label.assignment_method_type)

        for content_mark_type in sensitivity_label.content_mark_types:
            print("Content marking:", content_mark_type)

افزودن برچسب حساسیت با نشانه محتوایی

از SensitivityLabelCollection.add همراه با شناسه برچسب، شناسه سایت، وضعیت فعال بودن و روش تخصیص استفاده کنید. شناسه سایت را به عنوان شیء uuid.UUID پایتون ارسال کنید. پس از بازگرداندن SensitivityLabel جدید، مقادیر نشانه مورد نیاز را به SensitivityLabel.content_mark_types اضافه کنید.

مثال زیر برچسبی انتخاب‌شده به‌صورت دستی که با نشانه‌های پاورقی و واترمارک مرتبط است اضافه می‌کند و سپس نتیجه را به‌عنوان PPTX ذخیره می‌نماید:

import uuid
import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    sensitivity_labels = presentation.sensitivity_labels

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

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

    sensitivity_label.content_mark_types.append(slides.SensitivityLabelContentType.FOOTER)
    sensitivity_label.content_mark_types.append(slides.SensitivityLabelContentType.WATERMARK)

    presentation.save("presentation_with_label.pptx", slides.export.SaveFormat.PPTX)

به‌روزرسانی برچسب حساسیت

ویژگی‌های SensitivityLabel قابل خواندن و نوشتن هستند، به‌استثنای فهرستی که توسط SensitivityLabel.content_mark_types بازگردانده می‌شود و از طریق عملیات فهرست آن اصلاح می‌گردد. پس از یافتن برچسب مورد نیاز، می‌توانید شناسه، شناسه سایت، وضعیت فعال بودن، روش تخصیص، وضعیت حذف و انواع نشانه‌های محتوا را به‌روزرسانی کنید. ارائه را ذخیره کنید تا تغییرات حفظ شوند.

مثال زیر وضعیت فعال بودن و روش تخصیص اولین برچسب را به‌روز می‌کند:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    sensitivity_labels = presentation.sensitivity_labels

    if sensitivity_labels.count > 0:
        sensitivity_label = sensitivity_labels[0]
        sensitivity_label.is_enabled = True
        sensitivity_label.assignment_method_type = (
            slides.SensitivityLabelAssignmentType.PRIVILEGED
        )

    presentation.save("presentation_with_updated_label.pptx", slides.export.SaveFormat.PPTX)

نشانه‌گذاری برچسب حساسیت به‌عنوان حذف شده

برای حفظ این واقعیت که یک برچسب حذف شده است، برچسب را پیدا کنید و SensitivityLabel.is_removed را به True تنظیم کنید. این کار ورودی برچسب را نگه می‌دارد و وضعیت حذف شده آن را ثبت می‌کند. اگر به‌جای آن می‌خواهید ورودی را از مجموعه مدرن حذف کنید، از SensitivityLabelCollection.remove_at استفاده کنید؛ برای حذف تمام ورودی‌ها از SensitivityLabelCollection.clear بهره بگیرید.

مثال زیر برچسب خاصی را به‌عنوان حذف شده علامت‌گذاری کرده و ارائه به‌روزشده را ذخیره می‌کند:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    sensitivity_labels = presentation.sensitivity_labels
    target_label_identifier = "{11111111-2222-3333-4444-555555555555}"

    for sensitivity_label in sensitivity_labels:
        identifiers_match = (
            sensitivity_label.id.casefold() == target_label_identifier.casefold()
        )

        if identifiers_match:
            sensitivity_label.is_removed = True
            break

    presentation.save("presentation_with_removed_label.pptx", slides.export.SaveFormat.PPTX)

خواندن و مهاجرت برچسب‌های حساسیت قدیمی MIP

جریان‌های کاری مبتنی بر MIP قدیمی می‌توانند متادیتای برچسب حساسیت را در ویژگی‌های سفارشی سند به‌جای مجموعه مدرن برچسب‌ها ذخیره کنند. آن متادیتا را با DocumentProperties.get_sensitivity_labels بخوانید. این متد ویژگی‌های سفارشی قدیمی را تجزیه کرده و اشیاء SensitivityLabel را باز می‌گرداند.

برای مهاجرت متادیتا، هر برچسب برگشتی را به SensitivityLabelCollection مدرن از طریق SensitivityLabelCollection.add اضافه کنید. از آنجا که افزودن شناسه برچسب تکراری باعث استثنا می‌شود، مثال قبل از کپی هر برچسب، مجموعه مقصد را بررسی می‌کند. می‌توانید اعتبارسنجی بیشتری برای تأیید وجود هر برچسب قدیمی در سیاست فعلی Purview اضافه کنید.

import aspose.slides as slides

with slides.Presentation("presentation_with_legacy_labels.pptx") as presentation:
    legacy_sensitivity_labels = (
        presentation.document_properties.get_sensitivity_labels()
    )
    modern_sensitivity_labels = presentation.sensitivity_labels

    for legacy_sensitivity_label in legacy_sensitivity_labels:
        label_already_exists = False

        for modern_sensitivity_label in modern_sensitivity_labels:
            label_already_exists = (
                modern_sensitivity_label.id.casefold()
                == legacy_sensitivity_label.id.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", slides.export.SaveFormat.PPTX)

مهاجرت اشیاء برچسب تجزیه‌شده را به مجموعه مدرن کپی می‌کند. این کار نیازی به پاک‌سازی تمام ویژگی‌های سفارشی سند ندارد، بنابراین متادیتای غیرمرتبط سند دست نخورده می‌ماند. از Presentation.save همراه با SaveFormat.PPTX برای نوشتن متادیتای برچسب مدرن به فایل PPTX استفاده کنید.

سؤالات متداول

آیا افزودن نوع نشانه محتوا یک سرصفحه، پاورقی یا واترمارک قابل دید در اسلایدها ایجاد می‌کند؟

خیر. مقادیری که از طریق SensitivityLabel.content_mark_types اضافه می‌شوند، نشانه‌های مرتبط با برچسب حساسیت را توصیف می‌کنند. آنها متن یا شکل قابل مشاهده‌ای در ارائه ایجاد نمی‌کنند. اگر جریان کاری شما نیاز به نمایش این نشانه‌ها دارد، محتواهای اسلاید مربوطه را جداگانه اضافه کنید.

تفاوت علامت‌گذاری برچسب به‌عنوان حذف شده و حذف آن از مجموعه چیست؟

تنظیم SensitivityLabel.is_removed به True ورودی برچسب را نگه می‌دارد و وضعیت حذف شده آن را ثبت می‌کند. فراخوانی SensitivityLabelCollection.remove_at ورودی را از مجموعه مدرن حذف می‌نماید. عملیاتی را انتخاب کنید که با نیازهای نگهداری متادیتای سازمان شما هم‌خوانی داشته باشد.

آیا یک ارائه می‌تواند هم متادیتای MIP قدیمی و هم برچسب‌های حساسیت مدرن را داشته باشد؟

بله. برچسب‌های قدیمی می‌توانند در ویژگی‌های سفارشی سند باقی بمانند در حالی که برچسب‌های مدرن از طریق Presentation.sensitivity_labels در دسترس هستند. از DocumentProperties.get_sensitivity_labels برای خواندن متادیتای قدیمی و مهاجرت فقط برچسب‌های معتبر که هنوز در مجموعه مدرن حضور ندارند، استفاده کنید.

چه اتفاقی می‌افتد وقتی برچسبی با همان شناسه بیش از یک بار اضافه شود؟

SensitivityLabelCollection.add هنگام وجود قبلی برچسبی با همان شناسه، استثنا می‌اندازد. پیش از افزودن یا مهاجرت برچسب‌ها، مقادیر SensitivityLabel.id موجود را بررسی کنید.

کدام قالب خروجی باید برای حفظ برچسب‌های حساسیت به‌روز شده استفاده شود؟

با فراخوانی Presentation.save به همراه SaveFormat.PPTX، ارائه را به‌عنوان PPTX ذخیره کنید، همان‌طور که در مثال‌های بالا نشان داده شده است.