PowerPoint Sunumlarında C++ ile Hassasiyet Etiketlerini Yönetme

Genel Bakış

Microsoft Purview hassasiyet etiketleri, kuruluşların belgeleri sınıflandırmasına ve yönetmesine yardımcı olur. Otomatik sunum işleme sırasında bir uygulama mevcut etiketi korumak, bir ilke tarafından seçilen etiketi uygulamak, durumunu güncellemek veya daha eski bir Microsoft Information Protection (MIP) iş akışı tarafından yazılmış etiket meta verisini taşımak zorunda kalabilir.

Aspose.Slides, modern hassasiyet etiketi meta verilerini IPresentation::get_SensitivityLabels aracılığıyla sunar. Bu yöntem, sunum PPTX olarak kaydedilmeden önce incelenebilen ve değiştirilebilen bir ISensitivityLabelCollection döndürür.

Hassasiyet Etiketi Özelliklerini Anlamak

Her ISensitivityLabel aşağıdaki meta verileri içerir:

Erişimciler Amaç
ISensitivityLabel::get_Id, ISensitivityLabel::set_Id Purview ilkesindeki hassasiyet etiketini tanımlar.
ISensitivityLabel::get_SiteId, ISensitivityLabel::set_SiteId Etiket ilkesine bağlı siteyi tanımlar.
ISensitivityLabel::get_IsEnabled, ISensitivityLabel::set_IsEnabled Etiketin etkin olup olmadığını gösterir.
ISensitivityLabel::get_IsRemoved, ISensitivityLabel::set_IsRemoved Etiketin kaldırıldığını gösterir. Kaldırma durumu meta veride tutulmalıysa değeri true olarak ayarlayın.
ISensitivityLabel::get_AssignmentMethodType, ISensitivityLabel::set_AssignmentMethodType Etiketin otomatik olarak mı yoksa kullanıcı kararıyla mı uygulandığını belirtir.
ISensitivityLabel::get_ContentMarkTypes Etiketle ilişkili içerik işaretleme türlerini listeler.

SensitivityLabelAssignmentType sayısal sabiti, bir etiketin nasıl atandığını açıklar:

SensitivityLabelContentType sayısal sabiti, bir etiketle ilişkili işaretlemeyi tanımlar:

Değer Anlam
SensitivityLabelContentType::None Etiket varsayılan olarak veya otomatik olarak uygulanmıştır.
SensitivityLabelContentType::Header Üstbilgi içerik işaretlemesi etikete ilişkilidir.
SensitivityLabelContentType::Footer Altbilgi içerik işaretlemesi etikete ilişkilidir.
SensitivityLabelContentType::Watermark Filigran içerik işaretlemesi etikete ilişkilidir.
SensitivityLabelContentType::Encryption Şifreleme koruması etikete ilişkilidir.

Bir etiketle birden fazla işaretleme türü ilişkilendirilebilir.

Mevcut Hassasiyet Etiketlerini Listele

IPresentation::get_SensitivityLabels üzerinden modern etiket koleksiyonunu okuyun ve yineleyin. Aşağıdaki örnek, her etiket için depolanan tüm özellikleri ve içerik işaretlemelerini listeler:

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

İçerik İşaretlemesiyle Bir Hassasiyet Etiketi Ekle

ISensitivityLabelCollection::Add yöntemini etiket tanımlayıcısı, site tanımlayıcısı, etkin durum ve atama yöntemi ile kullanın. Yöntem yeni bir ISensitivityLabel döndürdükten sonra, gerekli işaretleme değerlerini ISensitivityLabel::get_ContentMarkTypes aracılığıyla ekleyin.

Aşağıdaki örnek, altbilgi ve filigran işaretlemeleriyle ilişkili manuel seçilmiş bir etiketi ekler ve ardından sonucu PPTX olarak kaydeder:

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

Bir Hassasiyet Etiketini Güncelle

ISensitivityLabel değerleri, getter ve setter yöntemleri aracılığıyla okunur/yazılır; ancak ISensitivityLabel::get_ContentMarkTypes tarafından döndürülen koleksiyon, liste işlemleriyle değiştirilir. Gerekli etiketi bulduktan sonra, tanımlayıcısını, site tanımlayıcısını, etkin durumunu, atama yöntemini, kaldırma durumunu ve içerik işaretleme türlerini güncelleyebilirsiniz. Değişiklikleri kalıcı kılmak için sunumu kaydedin.

Aşağıdaki örnek, ilk etiketin etkin durumunu ve atama yöntemini günceller:

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

Bir Hassasiyet Etiketini Kaldırıldı Olarak İşaretle

Bir etiketin kaldırıldığını korumak için etiketi bulun ve ISensitivityLabel::set_IsRemoved yöntemi true ile çağırın. Bu, etiket girişini tutar ve kaldırma durumunu kaydeder. Modern koleksiyondan bir girişi silmek istiyorsanız, ISensitivityLabelCollection::RemoveAt kullanın; tüm girişleri silmek için ISensitivityLabelCollection::Clear kullanın.

Aşağıdaki örnek, belirli bir etiketi kaldırıldı olarak işaretler ve güncellenmiş sunumu kaydeder:

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

Eski MIP Hassasiyet Etiketlerini Oku ve Taşı

Eski MIP tabanlı iş akışları, modern etiket koleksiyonu yerine özel belge özelliklerinde hassasiyet etiketi meta verilerini saklayabilir. Bu meta veriyi IDocumentProperties::GetSensitivityLabels ile okuyun. Yöntem, eski özel özellikleri ayrıştırır ve bir ISensitivityLabel nesne dizisi döndürür.

Meta veriyi taşımak için, döndürülen her etiketi modern ISensitivityLabelCollection içine ISensitivityLabelCollection::Add ile ekleyin. Aynı etiket tanımlayıcısının eklenmesi bir istisna oluşturduğundan, örnek her etiketi kopyalamadan önce hedef koleksiyonu kontrol eder. Mevcut Purview ilkesinde her eski etiketin hâlâ mevcut olduğunu doğrulamak için ek doğrulama ekleyebilirsiniz.

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

Taşıma, ayrıştırılmış etiket nesnelerini modern koleksiyona kopyalar. Tüm özel belge özelliklerini temizlemeye gerek yoktur, böylece ilgili olmayan belge meta verileri korunur. Modern etiket meta verilerini bir PPTX dosyasına yazmak için IPresentation::Save ile SaveFormat::Pptx kullanın.

SSS

Bir içerik işaretleme türü eklemek, slaytlarda görünür bir üstbilgi, altbilgi veya filigran oluşturur mu?

Hayır. ISensitivityLabel::get_ContentMarkTypes aracılığıyla eklenen değerler, etiketle ilişkili işaretlemeleri tanımlar. Bunlar tek başına sunumda görünür metin veya şekil oluşturmaz. İş akışınız bu işaretlemeleri göstermeli ise ilgili slayt içeriğini ayrı ayrı ekleyin.

Bir etiketi kaldırıldı olarak işaretlemek ile koleksiyondan silmek arasındaki fark nedir?

ISensitivityLabel::set_IsRemoved yöntemi true ile çağrıldığında, etiket girişi korunur ve kaldırma durumu kaydedilir. ISensitivityLabelCollection::RemoveAt yöntemi ise modern koleksiyondan girdiyi siler. Kuruluşunuzun meta veri tutma gereksinimlerine uygun işlemi seçin.

Bir sunum hem eski MIP meta verilerini hem de modern hassasiyet etiketlerini içerebilir mi?

Evet. Eski etiketler özel belge özelliklerinde kalabilirken, modern etiketler IPresentation::get_SensitivityLabels aracılığıyla erişilebilir. Eski meta verileri okumak ve modern koleksiyonda zaten bulunmayan geçerli etiketleri taşımak için IDocumentProperties::GetSensitivityLabels kullanın.

Aynı tanımlayıcıya sahip bir etiket birden çok kez eklenirse ne olur?

ISensitivityLabelCollection::Add aynı tanımlayıcıya sahip bir etiket koleksiyonda zaten varsa argüman istisnası fırlatır. Etiket eklemeden veya taşımadan önce mevcut ISensitivityLabel::get_Id değerlerini kontrol edin.

Güncellenmiş hassasiyet etiketlerini korumak için hangi çıktı formatı kullanılmalıdır?

Güncellenmiş hassasiyet etiketlerini korumak için sunumu, yukarıdaki örneklerde gösterildiği gibi IPresentation::Save ile SaveFormat::Pptx kullanarak PPTX olarak kaydedin.