Управление метками чувствительности в презентациях PowerPoint на JavaScript
Обзор
Microsoft Purview sensitivity labels помогают организациям классифицировать и управлять документами. При автоматической обработке презентаций приложение может потребовать сохранить существующую метку, применить метку, выбранную политикой, обновить её состояние или перенести метаданные метки, записанные более старым рабочим процессом Microsoft Information Protection (MIP).
Aspose.Slides for Node.js via Java предоставляет современные метаданные меток чувствительности через Presentation.getSensitivityLabels. Этот метод возвращает SensitivityLabelCollection, которую можно просмотреть и изменить перед сохранением презентации в формате PPTX.
Note
Идентификаторы меток чувствительности и информация о политике определяются вашей конфигурацией Microsoft Purview. Проверьте доступность меток и требования политики в своей среде перед добавлением или миграцией метаданных. Значения SensitivityLabel.getContentMarkTypes описывают типы маркировки, связанные с меткой; они сами по себе не добавляют видимый текст или объекты на слайды.Понимание свойств метки чувствительности
Каждый SensitivityLabel содержит следующие метаданные:
| Методы | Назначение |
|---|---|
| SensitivityLabel.getId и SensitivityLabel.setId | Получить или задать идентификатор метки чувствительности в политике Purview. |
| SensitivityLabel.getSiteId и SensitivityLabel.setSiteId | Получить или задать сайт, связанный с политикой метки. |
| SensitivityLabel.isEnabled и SensitivityLabel.setEnabled | Получить или задать, включена ли метка. |
| SensitivityLabel.isRemoved и SensitivityLabel.setRemoved | Получить или задать, была ли метка удалена. Установите значение true, когда состояние удаления должно сохраняться в метаданных. |
| SensitivityLabel.getAssignmentMethodType и SensitivityLabel.setAssignmentMethodType | Получить или задать, была ли метка применена автоматически или по решению пользователя. |
| SensitivityLabel.getContentMarkTypes | Получить типы маркировки содержимого, связанные с меткой. |
Класс SensitivityLabelAssignmentType определяет способ назначения метки:
- SensitivityLabelAssignmentType.Standard представляет метку, применённую по умолчанию или автоматически.
- SensitivityLabelAssignmentType.Privileged представляет метку, применённую по решению пользователя, включая вручную применённые, рекомендованные и обязательные метки.
Класс SensitivityLabelContentType определяет тип маркировки, связанной с меткой:
| Значение | Описание |
|---|---|
| SensitivityLabelContentType.None | Метка применена по умолчанию или автоматически. |
| SensitivityLabelContentType.Header | К метке привязана маркировка заголовка. |
| SensitivityLabelContentType.Footer | К метке привязана маркировка нижнего колонтитула. |
| SensitivityLabelContentType.Watermark | К метке привязана маркировка водяного знака. |
| SensitivityLabelContentType.Encryption | К метке привязана защита шифрованием. |
Один метке могут соответствовать несколько типов маркировки.
Список существующих меток чувствительности
Прочитайте современную коллекцию меток через Presentation.getSensitivityLabels и перечислите её. В следующем примере перечисляются все свойства и типы маркировки, хранящиеся для каждой метки:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const sensitivityLabels = presentation.getSensitivityLabels();
const labelCount = sensitivityLabels.getCount();
for (let labelIndex = 0; labelIndex < labelCount; labelIndex++) {
const sensitivityLabel = sensitivityLabels.get_Item(labelIndex);
const labelIdentifier = sensitivityLabel.getId();
const siteIdentifier = sensitivityLabel.getSiteId();
const isEnabled = sensitivityLabel.isEnabled();
const isRemoved = sensitivityLabel.isRemoved();
const assignmentMethod = sensitivityLabel.getAssignmentMethodType();
console.log("Label ID: " + labelIdentifier);
console.log("Site ID: " + siteIdentifier);
console.log("Enabled: " + isEnabled);
console.log("Removed: " + isRemoved);
console.log("Assignment method: " + assignmentMethod);
const contentMarkTypes = sensitivityLabel.getContentMarkTypes();
const contentMarkCount = contentMarkTypes.size();
for (let contentMarkIndex = 0; contentMarkIndex < contentMarkCount; contentMarkIndex++) {
const contentMarkType = contentMarkTypes.get_Item(contentMarkIndex);
console.log("Content marking: " + contentMarkType);
}
}
} finally {
presentation.dispose();
}
Добавление метки чувствительности с маркировкой содержимого
Используйте SensitivityLabelCollection.add с идентификатором метки, идентификатором сайта, состоянием включения и способом назначения. После того как метод вернёт новый SensitivityLabel, добавьте необходимые значения маркировки через список, полученный от SensitivityLabel.getContentMarkTypes.
В следующем примере добавляется вручную выбранная метка, связанная с маркировками нижнего колонтитула и водяного знака, после чего результат сохраняется как PPTX:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const sensitivityLabels = presentation.getSensitivityLabels();
const labelIdentifier = "{11111111-2222-3333-4444-555555555555}";
const siteIdentifier = java.callStaticMethodSync(
"java.util.UUID",
"fromString",
"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
const isEnabled = true;
const assignmentMethod = aspose.slides.SensitivityLabelAssignmentType.Privileged;
const sensitivityLabel = sensitivityLabels.add(
labelIdentifier,
siteIdentifier,
isEnabled,
assignmentMethod);
const contentMarkTypes = sensitivityLabel.getContentMarkTypes();
contentMarkTypes.addItem(aspose.slides.SensitivityLabelContentType.Footer);
contentMarkTypes.addItem(aspose.slides.SensitivityLabelContentType.Watermark);
presentation.save("presentation_with_label.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Обновление метки чувствительности
Значения SensitivityLabel доступны для чтения и записи, за исключением списка, возвращаемого SensitivityLabel.getContentMarkTypes, который изменяется через операции над списком. Найдя нужную метку, вы можете обновить её идентификатор, идентификатор сайта, состояние включения, способ назначения, состояние удаления и типы маркировки содержимого. Сохраните презентацию, чтобы зафиксировать изменения.
В следующем примере обновляются состояние включения и способ назначения первой метки:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const sensitivityLabels = presentation.getSensitivityLabels();
const labelCount = sensitivityLabels.getCount();
if (labelCount > 0) {
const sensitivityLabel = sensitivityLabels.get_Item(0);
sensitivityLabel.setEnabled(true);
sensitivityLabel.setAssignmentMethodType(
aspose.slides.SensitivityLabelAssignmentType.Privileged);
}
presentation.save("presentation_with_updated_label.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Пометить метку чувствительности как удалённую
Чтобы зафиксировать факт удаления метки, найдите её и вызовите SensitivityLabel.setRemoved со значением true. Это сохраняет запись о метке, отмечая её как удалённую. Если необходимо полностью удалить запись из современной коллекции, используйте SensitivityLabelCollection.removeAt; для удаления всех записей примените SensitivityLabelCollection.clear.
В следующем примере конкретная метка помечается как удалённая, после чего обновлённая презентация сохраняется:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const sensitivityLabels = presentation.getSensitivityLabels();
const targetLabelIdentifier = "{11111111-2222-3333-4444-555555555555}";
const labelCount = sensitivityLabels.getCount();
for (let labelIndex = 0; labelIndex < labelCount; labelIndex++) {
const sensitivityLabel = sensitivityLabels.get_Item(labelIndex);
const labelIdentifier = sensitivityLabel.getId();
const isTargetLabel = labelIdentifier.toLowerCase() === targetLabelIdentifier.toLowerCase();
if (isTargetLabel) {
sensitivityLabel.setRemoved(true);
break;
}
}
presentation.save("presentation_with_removed_label.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Чтение и миграция устаревших меток чувствительности MIP
Старые рабочие процессы, основанные на MIP, могут сохранять метаданные меток чувствительности в пользовательских свойствах документа вместо современной коллекции меток. Прочитайте эти метаданные с помощью DocumentProperties.getSensitivityLabels. Метод parses legacy custom properties and returns an array of [SensitivityLabel] objects.
Чтобы мигрировать метаданные, добавьте каждую полученную метку в современную SensitivityLabelCollection через SensitivityLabelCollection.add. Поскольку добавление метки с дублирующим идентификатором вызывает исключение, пример проверяет целевую коллекцию перед копированием каждой метки. Вы можете добавить дополнительную проверку, чтобы убедиться, что каждая устаревшая метка всё ещё присутствует в текущей политике Purview.
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("presentation_with_legacy_labels.pptx");
try {
const legacySensitivityLabels = presentation.getDocumentProperties().getSensitivityLabels();
const modernSensitivityLabels = presentation.getSensitivityLabels();
for (let legacyLabelIndex = 0; legacyLabelIndex < legacySensitivityLabels.length; legacyLabelIndex++) {
const legacySensitivityLabel = legacySensitivityLabels[legacyLabelIndex];
const legacyLabelIdentifier = legacySensitivityLabel.getId();
const modernLabelCount = modernSensitivityLabels.getCount();
let labelAlreadyExists = false;
for (let modernLabelIndex = 0; modernLabelIndex < modernLabelCount; modernLabelIndex++) {
const modernSensitivityLabel = modernSensitivityLabels.get_Item(modernLabelIndex);
const modernLabelIdentifier = modernSensitivityLabel.getId();
labelAlreadyExists =
modernLabelIdentifier.toLowerCase() === legacyLabelIdentifier.toLowerCase();
if (labelAlreadyExists) {
break;
}
}
if (!labelAlreadyExists) {
modernSensitivityLabels.add(legacySensitivityLabel);
}
}
presentation.save("presentation_with_modern_labels.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Миграция копирует разобранные объекты меток в современную коллекцию. При этом не требуется очищать все пользовательские свойства документа, поэтому несвязанные метаданные остаются нетронутыми. Используйте Presentation.save с SaveFormat.Pptx для записи современных метаданных меток в файл PPTX.
FAQ
Создаёт ли добавление типа маркировки содержимого видимый заголовок, нижний колонтитул или водяной знак на слайдах?
Нет. Значения, добавленные через список, возвращаемый SensitivityLabel.getContentMarkTypes, описывают маркировки, связанные с меткой чувствительности. Они не создают видимый текст или объекты в презентации. Если ваш рабочий процесс должен отображать такие маркировки, добавьте соответствующее содержимое слайда отдельно.
В чём разница между пометкой метки как удалённой и её удалением из коллекции?
Вызов SensitivityLabel.setRemoved со значением true сохраняет запись о метке и фиксирует её состояние как удалённое. Вызов SensitivityLabelCollection.removeAt полностью удаляет запись из современной коллекции. Выбирайте действие, соответствующее требованиям вашей организации по хранению метаданных.
Может ли презентация одновременно содержать устаревшие метаданные MIP и современные метки чувствительности?
Да. Устаревшие метки могут оставаться в пользовательских свойствах документа, тогда как современные метки доступны через Presentation.getSensitivityLabels. Используйте DocumentProperties.getSensitivityLabels для чтения устаревших метаданных и мигрируйте только те метки, которые ещё не присутствуют в современной коллекции.
Что происходит, если метка с тем же идентификатором добавляется более одного раза?
SensitivityLabelCollection.add генерирует исключение, когда коллекция уже содержит метку с таким же идентификатором. Проверьте существующие значения, полученные через SensitivityLabel.getId, перед добавлением или миграцией меток.
Какой формат вывода следует использовать для сохранения обновлённых меток чувствительности?
Сохраните презентацию в формате PPTX, вызвав Presentation.save с параметром SaveFormat.Pptx, как показано в примерах выше.