Quản lý Nhãn Độ Nhạy trong Bản Trình Chiếu PowerPoint bằng C++

Tổng quan

Những nhãn độ nhạy Microsoft Purview giúp các tổ chức phân loại và quản trị tài liệu. Trong quá trình xử lý tự động bản trình chiếu, một ứng dụng có thể cần giữ nguyên nhãn hiện có, áp dụng nhãn được chọn bởi một chính sách, cập nhật trạng thái của nó, hoặc di chuyển siêu dữ liệu nhãn được ghi bởi quy trình Microsoft Information Protection (MIP) cũ hơn.

Aspose.Slides cung cấp siêu dữ liệu nhãn độ nhạy hiện đại thông qua IPresentation::get_SensitivityLabels. Phương thức này trả về một ISensitivityLabelCollection có thể được kiểm tra và sửa đổi trước khi bản trình chiếu được lưu dưới dạng PPTX.

Hiểu các thuộc tính của Nhãn Độ Nhạy

Mỗi ISensitivityLabel chứa các siêu dữ liệu sau:

Truy cập Mục đích
ISensitivityLabel::get_Id, ISensitivityLabel::set_Id Xác định nhãn độ nhạy trong chính sách Purview.
ISensitivityLabel::get_SiteId, ISensitivityLabel::set_SiteId Xác định trang web liên quan tới chính sách nhãn.
ISensitivityLabel::get_IsEnabled, ISensitivityLabel::set_IsEnabled Chỉ ra liệu nhãn có được bật hay không.
ISensitivityLabel::get_IsRemoved, ISensitivityLabel::set_IsRemoved Chỉ ra rằng nhãn đã bị xóa. Đặt giá trị thành true khi trạng thái xóa phải được giữ trong siêu dữ liệu.
ISensitivityLabel::get_AssignmentMethodType, ISensitivityLabel::set_AssignmentMethodType Chỉ định nhãn được áp dụng tự động hay thông qua quyết định của người dùng.
ISensitivityLabel::get_ContentMarkTypes Liệt kê các loại dấu nội dung liên quan tới nhãn.

Kiểu liệt kê SensitivityLabelAssignmentType mô tả cách nhãn được gán:

Kiểu liệt kê SensitivityLabelContentType xác định dấu nội dung liên quan tới một nhãn:

Giá trị Ý nghĩa
SensitivityLabelContentType::None Nhãn được áp dụng mặc định hoặc tự động.
SensitivityLabelContentType::Header Dấu nội dung tiêu đề được liên kết với nhãn.
SensitivityLabelContentType::Footer Dấu nội dung chân trang được liên kết với nhãn.
SensitivityLabelContentType::Watermark Dấu nội dung watermark được liên kết với nhãn.
SensitivityLabelContentType::Encryption Bảo vệ bằng mã hóa được liên kết với nhãn.

Nhiều loại dấu có thể được gắn với cùng một nhãn.

Liệt kê các Nhãn Độ Nhạy hiện có

Đọc bộ sưu tập nhãn hiện đại từ IPresentation::get_SensitivityLabels và duyệt qua chúng. Ví dụ sau liệt kê mọi thuộc tính và dấu nội dung được lưu cho mỗi nhãn:

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

Thêm một Nhãn Độ Nhạy với Dấu Nội Dung

Sử dụng ISensitivityLabelCollection::Add với định danh nhãn, định danh trang web, trạng thái bật và phương pháp gán. Sau khi phương thức trả về ISensitivityLabel mới, thêm các giá trị dấu cần thiết qua ISensitivityLabel::get_ContentMarkTypes.

Ví dụ sau thêm một nhãn được chọn thủ công, liên kết với dấu chân trang và watermark, rồi lưu kết quả dưới dạng 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();

Cập nhật một Nhãn Độ Nhạy

Các giá trị của ISensitivityLabel có thể đọc/ghi qua các phương thức getter và setter, ngoại trừ bộ sưu tập được trả về bởi ISensitivityLabel::get_ContentMarkTypes được sửa đổi qua các thao tác danh sách. Sau khi xác định nhãn cần thiết, bạn có thể cập nhật định danh, định danh trang web, trạng thái bật, phương pháp gán, trạng thái xóa và các loại dấu nội dung. Lưu bản trình chiếu để lưu các thay đổi.

Ví dụ sau cập nhật trạng thái bật và phương pháp gán của nhãn đầu tiên:

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

Đánh dấu một Nhãn Độ Nhạy là Đã Bị Xóa

Để ghi nhận việc một nhãn đã bị xóa, tìm nhãn và gọi ISensitivityLabel::set_IsRemoved với true. Điều này giữ lại mục nhãn đồng thời ghi lại trạng thái đã xóa. Nếu bạn muốn xóa mục khỏi bộ sưu tập hiện đại, sử dụng ISensitivityLabelCollection::RemoveAt; dùng ISensitivityLabelCollection::Clear để xóa mọi mục.

Ví dụ sau đánh dấu một nhãn cụ thể là đã bị xóa và lưu bản trình chiếu đã cập nhật:

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

Đọc và Di chuyển Nhãn Độ Nhạy MIP Cũ

Các quy trình dựa trên MIP cũ có thể lưu siêu dữ liệu nhãn độ nhạy trong thuộc tính tài liệu tùy chỉnh thay vì bộ sưu tập nhãn hiện đại. Đọc siêu dữ liệu đó bằng IDocumentProperties::GetSensitivityLabels. Phương thức này phân tích các thuộc tính tùy chỉnh cũ và trả về một mảng các đối tượng ISensitivityLabel.

Để di chuyển siêu dữ liệu, thêm mỗi nhãn đã trả về vào ISensitivityLabelCollection hiện đại qua ISensitivityLabelCollection::Add. Vì việc thêm một định danh nhãn trùng lặp sẽ gây ra ngoại lệ, ví dụ kiểm tra bộ sưu tập đích trước khi sao chép mỗi nhãn. Bạn có thể thêm kiểm tra bổ sung để xác nhận mỗi nhãn cũ vẫn còn tồn tại trong chính sách Purview hiện tại.

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

Quá trình di chuyển sao chép các đối tượng nhãn đã phân tích vào bộ sưu tập hiện đại. Nó không yêu cầu xóa tất cả các thuộc tính tài liệu tùy chỉnh, vì vậy các siêu dữ liệu tài liệu không liên quan vẫn còn nguyên vẹn. Sử dụng IPresentation::Save với SaveFormat::Pptx để ghi siêu dữ liệu nhãn hiện đại vào tệp PPTX.

Câu hỏi thường gặp

Việc thêm một loại dấu nội dung có tạo ra tiêu đề, chân trang hoặc watermark hiển thị trên slide không?

Không. Các giá trị được thêm qua ISensitivityLabel::get_ContentMarkTypes mô tả các dấu liên quan tới nhãn độ nhạy. Chúng không tạo ra văn bản hay hình dạng hiển thị trong bản trình chiếu. Hãy thêm nội dung slide tương ứng riêng biệt nếu quy trình của bạn cần hiển thị các dấu đó.

Sự khác nhau giữa việc đánh dấu một nhãn là đã bị xóa và xóa nó khỏi bộ sưu tập là gì?

Gọi ISensitivityLabel::set_IsRemoved với true giữ lại mục nhãn và ghi lại trạng thái đã xóa. Gọi ISensitivityLabelCollection::RemoveAt xóa mục khỏi bộ sưu tập hiện đại. Chọn thao tác phù hợp với yêu cầu lưu giữ siêu dữ liệu của tổ chức bạn.

Một bản trình chiếu có thể chứa cả siêu dữ liệu MIP cũ và nhãn độ nhạy hiện đại không?

Có. Các nhãn cũ có thể vẫn tồn tại trong thuộc tính tài liệu tùy chỉnh trong khi các nhãn hiện đại có sẵn qua IPresentation::get_SensitivityLabels. Sử dụng IDocumentProperties::GetSensitivityLabels để đọc siêu dữ liệu cũ và chỉ di chuyển những nhãn hợp lệ chưa có trong bộ sưu tập hiện đại.

Điều gì xảy ra khi một nhãn có cùng định danh được thêm hơn một lần?

ISensitivityLabelCollection::Add ném ngoại lệ argument khi bộ sưu tập đã chứa nhãn có cùng định danh. Kiểm tra các giá trị ISensitivityLabel::get_Id hiện có trước khi thêm hoặc di chuyển nhãn.

Định dạng đầu ra nào nên được dùng để giữ nguyên các nhãn độ nhạy đã cập nhật?

Lưu bản trình chiếu dưới dạng PPTX bằng cách gọi IPresentation::Save với SaveFormat::Pptx, như đã minh họa trong các ví dụ ở trên.