Управление тегами и пользовательскими данными

Хранение данных в файлах презентаций

Файлы PPTX — файлы с расширением .pptx — хранятся в формате PresentationML, который является частью спецификации Office Open XML. Формат Office Open XML определяет структуру данных, содержащихся в презентациях.

Слайд является одним из элементов презентаций, часть слайда содержит содержимое отдельного слайда. Части слайда могут иметь явные отношения со многими частями — например, с пользовательскими тегами, определёнными в ISO/IEC 29500.

Пользовательские данные (конкретные для презентации) или пользователь могут существовать в виде тегов (TagCollection) и CustomXmlParts (CustomXmlPartCollection).

Получение значений тегов

В слайдах тег соответствует методам DocumentProperties.getKeywords() и DocumentProperties.setKeywords(). Этот пример кода показывает, как получить значение тега с помощью Aspose.Slides for Node.js via Java для Presentation:

var pres = new aspose.slides.Presentation("pres.pptx");
try {
    var keywords = pres.getDocumentProperties().getKeywords();
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Добавление тегов в презентации

Aspose.Slides позволяет добавлять теги в презентации. Тег обычно состоит из двух элементов:

  • имя пользовательского свойства — MyTag
  • значение пользовательского свойства — My Tag Value

Если необходимо классифицировать некоторые презентации по определённому правилу или свойству, добавление тегов может быть полезным. Например, если нужно сгруппировать все презентации из стран Северной Америки, можно создать тег «North American» и задать соответствующие страны (США, Мехико и Канаду) в качестве значений.

Этот пример кода показывает, как добавить тег к Presentation с помощью Aspose.Slides for Node.js via Java:

var pres = new aspose.slides.Presentation("pres.pptx");
try {
    var tags = pres.getCustomData().getTags();
    pres.getCustomData().getTags().set_Item("MyTag", "My Tag Value");
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Теги также можно задавать для Slide:

var pres = new aspose.slides.Presentation();
try {
    var slide = pres.getSlides().get_Item(0);
    slide.getCustomData().getTags().set_Item("tag", "value");
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Или для любого отдельного Shape:

var pres = new aspose.slides.Presentation();
try {
    var slide = pres.getSlides().get_Item(0);
    var shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 50);
    shape.getTextFrame().setText("My text");
    shape.getCustomData().getTags().set_Item("tag", "value");
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

FAQ

Можно ли удалить все теги из презентации, слайда или фигуры одной операцией?

Да. Коллекция тегов поддерживает операцию clear, которая удаляет все пары ключ‑значение сразу.

Как удалить один тег по имени без перебора всей коллекции?

Используйте операцию remove(name) у TagCollection для удаления тега по его ключу.

Как получить полный список имён тегов для аналитики или фильтрации?

Вызовите getNamesOfTags у коллекции тегов; она возвращает массив всех имён тегов.