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

نظرة عامة

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

تقوم Aspose.Slides بعرض بيانات تعريف علامة الحساسية الحديثة من خلال IPresentation.getSensitivityLabels. تُعيد هذه الطريقة مجموعة ISensitivityLabelCollection يمكن فحصها وتعديلها قبل حفظ العرض التقديمي كملف PPTX.

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

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

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

تُعرّف الفئة SensitivityLabelAssignmentType طريقة تعيين العلامة:

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

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

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

قائمة علامات الحساسية الموجودة

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

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();

    for (ISensitivityLabel sensitivityLabel : sensitivityLabels) {
        System.out.println("Label ID: " + sensitivityLabel.getId());
        System.out.println("Site ID: " + sensitivityLabel.getSiteId());
        System.out.println("Enabled: " + sensitivityLabel.isEnabled());
        System.out.println("Removed: " + sensitivityLabel.isRemoved());
        System.out.println("Assignment method: " + sensitivityLabel.getAssignmentMethodType());

        for (Integer contentMarkType : sensitivityLabel.getContentMarkTypes()) {
            System.out.println("Content marking: " + contentMarkType);
        }
    }
} finally {
    presentation.dispose();
}

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

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

المثال التالي يضيف علامة مختارة يدويًا مرتبطة بعلامات التذييل والعلامة المائية، ثم يحفظ النتيجة كملف PPTX:

import com.aspose.slides.*;
import java.util.UUID;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();

    String labelIdentifier = "{11111111-2222-3333-4444-555555555555}";
    UUID siteIdentifier = UUID.fromString("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
    boolean isEnabled = true;
    int assignmentMethod = SensitivityLabelAssignmentType.Privileged;

    ISensitivityLabel sensitivityLabel = sensitivityLabels.add(
            labelIdentifier,
            siteIdentifier,
            isEnabled,
            assignmentMethod);

    sensitivityLabel.getContentMarkTypes().addItem(SensitivityLabelContentType.Footer);
    sensitivityLabel.getContentMarkTypes().addItem(SensitivityLabelContentType.Watermark);

    presentation.save("presentation_with_label.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

تحديث علامة حساسية

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

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

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();

    if (sensitivityLabels.getCount() > 0) {
        ISensitivityLabel sensitivityLabel = sensitivityLabels.get_Item(0);
        sensitivityLabel.setEnabled(true);
        sensitivityLabel.setAssignmentMethodType(SensitivityLabelAssignmentType.Privileged);
    }

    presentation.save("presentation_with_updated_label.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

وضع علامة حساسية كمزالة

للحفاظ على حقيقة أن علامة ما تم إزالتها، ابحث عن العلامة واستدعِ ISensitivityLabel.setRemoved بـ true. هذا يحتفظ بمدخل العلامة مع تسجيل حالة الإزالة. إذا كنت بحاجة إلى حذف مدخل من المجموعة الحديثة، استخدم ISensitivityLabelCollection.removeAt; واستخدم ISensitivityLabelCollection.clear لحذف جميع المدخلات.

المثال التالي يضع علامة معينة كـ مُزالة ويحفظ العرض التقديمي المحدث:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();
    String targetLabelIdentifier = "{11111111-2222-3333-4444-555555555555}";

    for (ISensitivityLabel sensitivityLabel : sensitivityLabels) {
        boolean isTargetLabel = sensitivityLabel.getId().equalsIgnoreCase(targetLabelIdentifier);

        if (isTargetLabel) {
            sensitivityLabel.setRemoved(true);
            break;
        }
    }

    presentation.save("presentation_with_removed_label.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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

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

لترحيل البيانات الوصفية، أضف كل علامة تم إرجاعها إلى مجموعة العلامات الحديثة ISensitivityLabelCollection عبر ISensitivityLabelCollection.add. نظرًا لأن إضافة معرّف علامة مكرر يثير استثناءً، يتحقق المثال من المجموعة الوجهة قبل نسخ كل علامة. يمكنك إضافة مزيد من التحقق للتأكد من أن كل علامة قديمة لا تزال موجودة في سياسة Purview الحالية.

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation_with_legacy_labels.pptx");
try {
    ISensitivityLabel[] legacySensitivityLabels = presentation.getDocumentProperties().getSensitivityLabels();
    ISensitivityLabelCollection modernSensitivityLabels = presentation.getSensitivityLabels();

    for (ISensitivityLabel legacySensitivityLabel : legacySensitivityLabels) {
        boolean labelAlreadyExists = false;

        for (ISensitivityLabel modernSensitivityLabel : modernSensitivityLabels) {
            labelAlreadyExists = modernSensitivityLabel.getId().equalsIgnoreCase(
                    legacySensitivityLabel.getId());

            if (labelAlreadyExists) {
                break;
            }
        }

        if (!labelAlreadyExists) {
            modernSensitivityLabels.add(legacySensitivityLabel);
        }
    }

    presentation.save("presentation_with_modern_labels.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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

الأسئلة الشائعة

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

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

ما الفرق بين وضع علامة على العلامة كمزالة وحذفها من المجموعة؟

استدعاء ISensitivityLabel.setRemoved بـ true يحافظ على مدخل العلامة ويسجل حالة الإزالة. استدعاء ISensitivityLabelCollection.removeAt يحذف المدخل من المجموعة الحديثة. اختر العملية التي تتوافق مع متطلبات مؤسستك للاحتفاظ بالبيانات الوصفية.

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

نعم. يمكن أن تبقى العلامات القديمة في خصائص المستند المخصصة بينما تكون العلامات الحديثة متاحة عبر IPresentation.getSensitivityLabels. استخدم IDocumentProperties.getSensitivityLabels لقراءة البيانات الوصفية القديمة وترحيل فقط العلامات الصالحة التي لا توجد بالفعل في المجموعة الحديثة.

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

ISensitivityLabelCollection.add يثير استثناءً عندما تحتوي المجموعة بالفعل على علامة بنفس المعرّف. تحقق من القيم الموجودة التي تُعيدها ISensitivityLabel.getId قبل إضافة أو ترحيل العلامات.

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

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