Android 上の PowerPoint プレゼンテーションで感度ラベルを管理

概要

Microsoft Purview の感度ラベルは、組織がドキュメントを分類および管理するのに役立ちます。自動プレゼンテーション処理中に、アプリケーションは既存のラベルを保持したり、ポリシーで選択されたラベルを適用したり、状態を更新したり、古い Microsoft Information Protection (MIP) ワークフローで書き込まれたラベルメタデータを移行したりする必要があります。

Aspose.Slides for Android via Java は、最新の感度ラベルメタデータを IPresentation.getSensitivityLabels で公開します。このメソッドは、プレゼンテーションを PPTX として保存する前に検査および変更できる ISensitivityLabelCollection を返します。

感度ラベル プロパティの理解

ISensitivityLabel は以下のメタデータを含みます:

メソッド 目的
ISensitivityLabel.getIdISensitivityLabel.setId Purview ポリシー内の感度ラベル識別子を取得または設定します。
ISensitivityLabel.getSiteIdISensitivityLabel.setSiteId ラベルポリシーに関連付けられたサイトを取得または設定します。
ISensitivityLabel.isEnabledISensitivityLabel.setEnabled ラベルが有効かどうかを取得または設定します。
ISensitivityLabel.isRemovedISensitivityLabel.setRemoved ラベルが削除されたかどうかを取得または設定します。メタデータに削除状態を保持する必要がある場合は、値を true に設定します。
ISensitivityLabel.getAssignmentMethodTypeISensitivityLabel.setAssignmentMethodType ラベルが自動的に適用されたか、ユーザーの判断によって適用されたかを取得または設定します。
ISensitivityLabel.getContentMarkTypes ラベルに関連付けられたコンテンツマーキングの種類を取得します。

クラス SensitivityLabelAssignmentType は、ラベルがどのように割り当てられたかを定義します:

クラス SensitivityLabelContentType は、ラベルに関連付けられたマーキングを定義します:

意味
SensitivityLabelContentType.None ラベルはデフォルトまたは自動的に適用されました。
SensitivityLabelContentType.Header ヘッダー コンテンツマーキングがラベルに関連付けられています。
SensitivityLabelContentType.Footer フッター コンテンツマーキングがラベルに関連付けられています。
SensitivityLabelContentType.Watermark 透かし コンテンツマーキングがラベルに関連付けられています。
SensitivityLabelContentType.Encryption 暗号化保護がラベルに関連付けられています。

複数のマーキングタイプを 1 つのラベルに関連付けることができます。

既存の感度ラベルを一覧表示

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.setRemovedtrue で呼び出します。これにより、ラベルエントリは残り、削除状態が記録されます。代わりに最新コレクションからエントリを削除する必要がある場合は、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.add を介して最新の ISensitivityLabelCollection に追加します。重複したラベル識別子を追加すると例外がスローされるため、サンプルではコピー前に宛先コレクションをチェックしています。レガシー ラベルが現在の 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.saveSaveFormat.Pptx を使用して、最新のラベルメタデータを PPTX ファイルに書き込みます。

FAQ

コンテンツマーキングタイプを追加すると、スライドに目に見えるヘッダー、フッター、または透かしが作成されますか?

いいえISensitivityLabel.getContentMarkTypes が返すリストに追加された値は、感度ラベルに関連付けられたマーキングを記述します。これらはプレゼンテーションに目に見えるテキストや図形を作成しません。ワークフローでそれらのマーキングを表示する必要がある場合は、別途スライドコンテンツを追加してください。

ラベルを削除済みとしてマークすることと、コレクションから削除することの違いは何ですか?

ISensitivityLabel.setRemovedtrue に設定すると、ラベルエントリは保持され、削除状態が記録されます。ISensitivityLabelCollection.removeAt を呼び出すと、エントリは最新コレクションから完全に削除されます。組織のメタデータ保持要件に合った操作を選択してください。

プレゼンテーションにレガシー MIP メタデータと最新の感度ラベルの両方を含めることはできますか?

はい。レガシー ラベルはカスタム ドキュメント プロパティに残したままにでき、最新のラベルは IPresentation.getSensitivityLabels で取得できます。レガシー メタデータの読み取りには IDocumentProperties.getSensitivityLabels を使用し、まだ最新コレクションに存在しない有効なラベルだけを移行してください。

同じ識別子のラベルを複数回追加するとどうなりますか?

ISensitivityLabelCollection.add は、コレクションに同一識別子のラベルがすでに存在する場合に例外をスローします。ラベルや移行を行う前に、ISensitivityLabel.getId が返す既存の値を確認してください。

更新された感度ラベルを保持するために使用すべき出力形式はどれですか?

上記の例に示すように、IPresentation.saveSaveFormat.Pptx を指定してプレゼンテーションを PPTX として保存します。