C++ में PowerPoint प्रस्तुतियों में संवेदनशीलता लेबल प्रबंधित करें

अवलोकन

Microsoft Purview संवेदनशीलता लेबल संस्थानों को दस्तावेज़ों को वर्गीकृत और नियंत्रित करने में सहायता करते हैं। स्वचालित प्रेज़ेंटेशन प्रोसेसिंग के दौरान, एक एप्लिकेशन को मौजूदा लेबल को बनाए रखना, नीति द्वारा चुना गया लेबल लागू करना, उसकी स्थिति को अपडेट करना, या पुराने Microsoft Information Protection (MIP) कार्यप्रवाह द्वारा लिखित लेबल मेटाडाटा को माइग्रेट करना पड़ सकता है।

Aspose.Slides आधुनिक संवेदनशीलता लेबल मेटाडाटा को IPresentation::get_SensitivityLabels के माध्यम से उजागर करता है। यह मेथड एक ISensitivityLabelCollection लौटाता है जिसे प्रेज़ेंटेशन को PPTX के रूप में सहेजने से पहले निरीक्षण और संशोधित किया जा सकता है।

संवेदनशीलता लेबल गुणों को समझें

प्रत्येक ISensitivityLabel में निम्नलिखित मेटाडाटा शामिल होते हैं:

एक्सेसर्स उद्देश्य
ISensitivityLabel::get_Id, ISensitivityLabel::set_Id Purview नीति में संवेदनशीलता लेबल की पहचान करता है।
ISensitivityLabel::get_SiteId, ISensitivityLabel::set_SiteId लेबल नीति से जुड़े साइट की पहचान करता है।
ISensitivityLabel::get_IsEnabled, ISensitivityLabel::set_IsEnabled निर्दिष्ट करता है कि लेबल सक्षम है या नहीं।
ISensitivityLabel::get_IsRemoved, ISensitivityLabel::set_IsRemoved सुझाव देता है कि लेबल हटा दिया गया है। जब मेटाडाटा में हटाने की स्थिति को संरक्षित रखना आवश्यक हो तो मान को true सेट करें।
ISensitivityLabel::get_AssignmentMethodType, ISensitivityLabel::set_AssignmentMethodType निर्दिष्ट करता है कि लेबल स्वचालित रूप से लागू हुआ था या उपयोगकर्ता के निर्णय द्वारा।
ISensitivityLabel::get_ContentMarkTypes लेबल से जुड़े कंटेंट मार्किंग प्रकारों की सूची देता है।

SensitivityLabelAssignmentType एनीयमरेशन यह वर्णन करता है कि लेबल कैसे असाइन किया गया था:

  • SensitivityLabelAssignmentType::Standard एक डिफ़ॉल्ट या स्वचालित रूप से लागू लेबल को दर्शाता है।
  • SensitivityLabelAssignmentType::Privileged एक लेबल को दर्शाता है जो उपयोगकर्ता के निर्णय द्वारा लागू होता है, जिसमें मैन्युअल रूप से लागू, अनुशंसित और अनिवार्य लेबल शामिल हैं।

SensitivityLabelContentType एनीयमरेशन लेबल से जुड़े मार्किंग को पहचानता है:

मान अर्थ
SensitivityLabelContentType::None लेबल डिफ़ॉल्ट या स्वचालित रूप से लागू किया गया था।
SensitivityLabelContentType::Header हेडर कंटेंट मार्किंग लेबल से जुड़ी है।
SensitivityLabelContentType::Footer फ़ुटर कंटेंट मार्किंग लेबल से जुड़ी है।
SensitivityLabelContentType::Watermark वॉटरमार्क कंटेंट मार्किंग लेबल से जुड़ी है।
SensitivityLabelContentType::Encryption एन्क्रिप्शन सुरक्षा लेबल से जुड़ी है।

एक लेबल के साथ कई मार्किंग प्रकार जुड़े हो सकते हैं।

मौजूदा संवेदनशीलता लेबलों की सूची

आधुनिक लेबल संग्रह को IPresentation::get_SensitivityLabels से पढ़ें और उसे क्रमबद्ध करें। निम्न उदाहरण प्रत्येक लेबल के लिए संग्रहीत प्रत्येक प्रॉपर्टी और कंटेंट मार्किंग की सूची देता है:

#include <DOM/Presentation.h>
#include <DOM/ISensitivityLabel.h>
#include <DOM/ISensitivityLabelCollection.h>
#include <DOM/SensitivityLabelAssignmentType.h>
#include <DOM/SensitivityLabelContentType.h>
#include <system/collections/ilist.h>
#include <system/console.h>
#include <system/guid.h>
#include <system/shared_ptr.h>
#include <system/string.h>

using Aspose::Slides::Presentation;
using System::Console;
using System::MakeObject;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto sensitivityLabels = presentation->get_SensitivityLabels();

for (auto&& sensitivityLabel : sensitivityLabels)
{
    auto labelIdentifier = sensitivityLabel->get_Id();
    auto siteIdentifier = sensitivityLabel->get_SiteId();
    auto isEnabled = sensitivityLabel->get_IsEnabled();
    auto isRemoved = sensitivityLabel->get_IsRemoved();
    auto assignmentMethod = sensitivityLabel->get_AssignmentMethodType();

    Console::WriteLine(u"Label ID: {0}", labelIdentifier);
    Console::WriteLine(u"Site ID: {0}", siteIdentifier);
    Console::WriteLine(u"Enabled: {0}", isEnabled);
    Console::WriteLine(u"Removed: {0}", isRemoved);
    Console::WriteLine(u"Assignment method: {0}", assignmentMethod);

    for (auto contentMarkType : sensitivityLabel->get_ContentMarkTypes())
    {
        Console::WriteLine(u"Content marking: {0}", contentMarkType);
    }
}

presentation->Dispose();

कंटेंट मार्किंग के साथ संवेदनशीलता लेबल जोड़ें

ISensitivityLabelCollection::Add का उपयोग लेबल पहचानकर्ता, साइट पहचानकर्ता, सक्षम स्थिति और असाइनमेंट मेथड के साथ करें। मेथड नया ISensitivityLabel लौटाने के बाद, आवश्यक मार्किंग मानों को ISensitivityLabel::get_ContentMarkTypes के माध्यम से जोड़ें।

निम्न उदाहरण फ़ुटर और वॉटरमार्क मार्किंग से जुड़ा मैन्युअली चयनित लेबल जोड़ता है, और फिर परिणाम को PPTX के रूप में सहेजता है:

#include <DOM/Presentation.h>
#include <DOM/ISensitivityLabel.h>
#include <DOM/ISensitivityLabelCollection.h>
#include <DOM/SensitivityLabelAssignmentType.h>
#include <DOM/SensitivityLabelContentType.h>
#include <Export/SaveFormat.h>
#include <system/collections/ilist.h>
#include <system/guid.h>
#include <system/shared_ptr.h>

using Aspose::Slides::Presentation;
using Aspose::Slides::SensitivityLabelAssignmentType;
using Aspose::Slides::SensitivityLabelContentType;
using Aspose::Slides::Export::SaveFormat;
using System::Guid;
using System::MakeObject;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto sensitivityLabels = presentation->get_SensitivityLabels();

auto labelIdentifier = u"{11111111-2222-3333-4444-555555555555}";
auto siteIdentifier = Guid::Parse(u"{aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}");
bool isEnabled = true;
auto assignmentMethod = SensitivityLabelAssignmentType::Privileged;

auto sensitivityLabel = sensitivityLabels->Add(
    labelIdentifier,
    siteIdentifier,
    isEnabled,
    assignmentMethod);

sensitivityLabel->get_ContentMarkTypes()->Add(SensitivityLabelContentType::Footer);
sensitivityLabel->get_ContentMarkTypes()->Add(SensitivityLabelContentType::Watermark);

presentation->Save(u"presentation_with_label.pptx", SaveFormat::Pptx);
presentation->Dispose();

संवेदनशीलता लेबल को अपडेट करें

ISensitivityLabel मान उनके गेटर और सेटर मेथड्स के माध्यम से पढ़े/लिखे जा सकते हैं, सिवाय इसके कि ISensitivityLabel::get_ContentMarkTypes द्वारा लौटाए गए संग्रह को उसकी सूची संचालन के द्वारा संशोधित किया जाता है। आवश्यक लेबल को खोजने के बाद, आप उसकी पहचानकर्ता, साइट पहचानकर्ता, सक्षम स्थिति, असाइनमेंट मेथड, हटाने की स्थिति और कंटेंट मार्किंग प्रकारों को अपडेट कर सकते हैं। बदलावों को बनाए रखने के लिए प्रेज़ेंटेशन को सहेजें।

निम्न उदाहरण पहले लेबल की सक्षम स्थिति और असाइनमेंट मेथड को अपडेट करता है:

#include <DOM/Presentation.h>
#include <DOM/ISensitivityLabel.h>
#include <DOM/ISensitivityLabelCollection.h>
#include <DOM/SensitivityLabelAssignmentType.h>
#include <Export/SaveFormat.h>
#include <system/shared_ptr.h>

using Aspose::Slides::Presentation;
using Aspose::Slides::SensitivityLabelAssignmentType;
using Aspose::Slides::Export::SaveFormat;
using System::MakeObject;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto sensitivityLabels = presentation->get_SensitivityLabels();
int labelCount = sensitivityLabels->get_Count();

if (labelCount > 0)
{
    auto sensitivityLabel = sensitivityLabels->idx_get(0);
    sensitivityLabel->set_IsEnabled(true);
    sensitivityLabel->set_AssignmentMethodType(SensitivityLabelAssignmentType::Privileged);
}

presentation->Save(u"presentation_with_updated_label.pptx", SaveFormat::Pptx);
presentation->Dispose();

संवेदनशीलता लेबल को हटाया गया के रूप में चिह्नित करें

लेबल को हटाने की स्थिति को संरक्षित रखने के लिए, लेबल खोजें और ISensitivityLabel::set_IsRemoved को true के साथ कॉल करें। इससे लेबल प्रविष्टि बनी रहती है जबकि उसकी हटाने की स्थिति रिकॉर्ड होती है। यदि आपको आधुनिक संग्रह से प्रविष्टि को पूरी तरह हटाना है, तो ISensitivityLabelCollection::RemoveAt का उपयोग करें; सभी प्रविष्टियों को हटाने के लिए ISensitivityLabelCollection::Clear का उपयोग करें।

निम्न उदाहरण एक विशिष्ट लेबल को हटाया गया के रूप में चिह्नित करता है और अद्यतन प्रेज़ेंटेशन को सहेजता है:

#include <DOM/Presentation.h>
#include <DOM/ISensitivityLabel.h>
#include <DOM/ISensitivityLabelCollection.h>
#include <Export/SaveFormat.h>
#include <system/shared_ptr.h>
#include <system/string.h>
#include <system/string_comparison.h>

using Aspose::Slides::Presentation;
using Aspose::Slides::Export::SaveFormat;
using System::MakeObject;
using System::String;
using System::StringComparison;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto sensitivityLabels = presentation->get_SensitivityLabels();
auto targetLabelIdentifier = u"{11111111-2222-3333-4444-555555555555}";

for (auto&& sensitivityLabel : sensitivityLabels)
{
    auto labelIdentifier = sensitivityLabel->get_Id();
    bool isTargetLabel = String::Equals(
        labelIdentifier,
        targetLabelIdentifier,
        StringComparison::OrdinalIgnoreCase);

    if (isTargetLabel)
    {
        sensitivityLabel->set_IsRemoved(true);
        break;
    }
}

presentation->Save(u"presentation_with_removed_label.pptx", SaveFormat::Pptx);
presentation->Dispose();

पुराने MIP संवेदनशीलता लेबल पढ़ें और माइग्रेट करें

पुराने MIP‑आधारित कार्यप्रवाह आधुनिक लेबल संग्रह के बजाय कस्टम डॉक्यूमेंट प्रॉपर्टीज़ में संवेदनशीलता लेबल मेटाडाटा रख सकते हैं। इस मेटाडाटा को IDocumentProperties::GetSensitivityLabels के साथ पढ़ें। यह मेथड पुरानी कस्टम प्रॉपर्टीज़ को पार्स करता है और ISensitivityLabel ऑब्जेक्ट्स की एक सरणी लौटाता है।

मेटाडाटा को माइग्रेट करने के लिए, प्रत्येक लौटाए गए लेबल को ISensitivityLabelCollection::Add के माध्यम से आधुनिक ISensitivityLabelCollection में जोड़ें। डुप्लिकेट लेबल पहचानकर्ता जोड़ने पर अपवाद उत्पन्न होता है, इसलिए उदाहरण प्रत्येक लेबल को कॉपी करने से पहले गंतव्य संग्रह की जाँच करता है। आप अतिरिक्त वैधता भी जोड़ सकते हैं यह पुष्टि करने के लिए कि प्रत्येक पुराना लेबल अभी भी वर्तमान Purview नीति में मौजूद है।

#include <DOM/Presentation.h>
#include <DOM/IDocumentProperties.h>
#include <DOM/ISensitivityLabel.h>
#include <DOM/ISensitivityLabelCollection.h>
#include <Export/SaveFormat.h>
#include <system/array.h>
#include <system/shared_ptr.h>
#include <system/string.h>
#include <system/string_comparison.h>

using Aspose::Slides::Presentation;
using Aspose::Slides::Export::SaveFormat;
using System::MakeObject;
using System::String;
using System::StringComparison;

auto presentation = MakeObject<Presentation>(u"presentation_with_legacy_labels.pptx");
auto documentProperties = presentation->get_DocumentProperties();
auto legacySensitivityLabels = documentProperties->GetSensitivityLabels();
auto modernSensitivityLabels = presentation->get_SensitivityLabels();

for (auto&& legacySensitivityLabel : legacySensitivityLabels)
{
    bool labelAlreadyExists = false;
    auto legacyLabelIdentifier = legacySensitivityLabel->get_Id();

    for (auto&& modernSensitivityLabel : modernSensitivityLabels)
    {
        auto modernLabelIdentifier = modernSensitivityLabel->get_Id();
        labelAlreadyExists = String::Equals(
            modernLabelIdentifier,
            legacyLabelIdentifier,
            StringComparison::OrdinalIgnoreCase);

        if (labelAlreadyExists)
        {
            break;
        }
    }

    if (!labelAlreadyExists)
    {
        modernSensitivityLabels->Add(legacySensitivityLabel);
    }
}

presentation->Save(u"presentation_with_modern_labels.pptx", SaveFormat::Pptx);
presentation->Dispose();

माइग्रेशन पार्स किए गए लेबल ऑब्जेक्ट्स को आधुनिक संग्रह में कॉपी करता है। इसे सभी कस्टम डॉक्यूमेंट प्रॉपर्टीज़ को साफ़ करने की आवश्यकता नहीं होती, इसलिए असंबंधित डॉक्यूमेंट मेटाडाटा अपरिवर्तित रहता है। आधुनिक लेबल मेटाडाटा को PPTX फ़ाइल में लिखने के लिए IPresentation::Save को SaveFormat::Pptx के साथ कॉल करें।

अक्सर पूछे जाने वाले प्रश्न

क्या कंटेंट मार्किंग प्रकार जोड़ने से स्लाइड्स पर दृश्यमान हेडर, फ़ुटर या वॉटरमार्क बनता है?

नहीं। ISensitivityLabel::get_ContentMarkTypes के माध्यम से जोड़े गए मान लेबल से जुड़ी मार्किंग्स का वर्णन करते हैं। वे स्वयं प्रेज़ेंटेशन में दृश्यमान टेक्स्ट या आकृतियाँ नहीं बनाते। यदि आपका कार्यप्रवाह उन मार्किंग्स को रेंडर करना चाहता है, तो संबंधित स्लाइड कंटेंट को अलग से जोड़ें।

लेबल को हटाया गया के रूप में चिह्नित करने और संग्रह से हटाने में क्या अंतर है?

ISensitivityLabel::set_IsRemoved को true के साथ कॉल करने से लेबल प्रविष्टि बनी रहती है और उसकी हटाने की स्थिति रिकॉर्ड होती है। ISensitivityLabelCollection::RemoveAt कॉल करने से लेबल पूरी तरह आधुनिक संग्रह से हट जाता है। अपनी संस्था की मेटाडाटा रखरखाव आवश्यकताओं के अनुसार उपयुक्त ऑपरेशन चुनें।

क्या एक प्रेज़ेंटेशन में दोनों पुरानी MIP मेटाडाटा और आधुनिक संवेदनशीलता लेबल हो सकते हैं?

हां। पुरानी लेबल कस्टम डॉक्यूमेंट प्रॉपर्टीज़ में मौजूद रह सकते हैं, जबकि आधुनिक लेबल IPresentation::get_SensitivityLabels द्वारा उपलब्ध होते हैं। पुरानी मेटाडाटा पढ़ने और केवल वैध लेबलों को माइग्रेट करने के लिए IDocumentProperties::GetSensitivityLabels का उपयोग करें।

जब एक ही पहचानकर्ता वाला लेबल कई बार जोड़ा जाता है तो क्या होता है?

ISensitivityLabelCollection::Add तब तर्कसंगत अपवाद (argument exception) फेंकता है जब संग्रह में पहले से वही पहचानकर्ता वाला लेबल मौजूद हो। लेबल या माइग्रेट करने से पहले मौजूदा ISensitivityLabel::get_Id मानों की जाँच करें।

अद्यतित संवेदनशीलता लेबल को संरक्षित रखने के लिए कौन सा आउटपुट फॉर्मेट उपयोग करना चाहिए?

उदाहरणों में दिखाए अनुसार प्रेज़ेंटेशन को PPTX के रूप में सहेजें, अर्थात् IPresentation::Save को SaveFormat::Pptx के साथ कॉल करें।