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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape shape = slide.getShapes().addAutoShape(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) у коллекции тегов для удаления тега по его ключу.

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

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