จัดการป้ายระดับความละเอียดในงานนำเสนอ PowerPoint ด้วย Python

ภาพรวม

Microsoft Purview sensitivity labels ช่วยให้องค์กรจัดประเภทและควบคุมการจัดการเอกสารได้ ในกระบวนการประมวลผลงานนำเสนอแบบอัตโนมัติ แอปพลิเคชันอาจต้องรักษาป้ายระดับความละเอียดที่มีอยู่แล้ว ประยุกต์ใช้ป้ายที่นโยบายเลือกไว้ ปรับปรุงสถานะของป้าย หรือย้ายเมตาดาต้าป้ายที่สร้างโดยเวิร์กโฟลว์ 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 บรรยายวิธีการที่ป้ายถูกกำหนด:

  • SensitivityLabelAssignmentType.STANDARD แทนป้ายเริ่มต้นหรือที่ประยุกต์อัตโนมัติ
  • SensitivityLabelAssignmentType.PRIVILEGED แทนป้ายที่ประยุกต์ผ่านการตัดสินใจของผู้ใช้ รวมถึงป้ายที่ประยุกต์ด้วยตนเอง แนะนำ หรือบังคับใช้

การนับจำนวน 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 พร้อมตัวระบุป้าย, ตัวระบุไซต์, สถานะเปิดใช้งาน, และวิธีการกำหนดค่า ส่งตัวระบุไซต์เป็นอ็อบเจ็กต์ Python 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 ก่อนทำการเพิ่มหรือย้ายป้าย

ควรใช้รูปแบบไฟล์ใดเพื่อรักษาป้ายระดับความละเอียดที่อัปเดต?

บันทึกงานนำเสนอเป็น PPTX โดยเรียก Presentation.save ร่วมกับ SaveFormat.PPTX ตามที่แสดงในตัวอย่างข้างต้น