Управление тегами и пользовательскими данными в презентациях с использованием C++
Хранение данных в файлах презентаций
Файлы PPTX — объекты с расширением .pptx — хранятся в формате PresentationML, который является частью спецификации Office Open XML. Формат Office Open XML определяет структуру данных, содержащихся в презентациях.
Поскольку слайд является одним из элементов презентации, часть слайда содержит содержимое отдельного слайда. Части слайда могут иметь явные связи со многими другими частями — например, с пользовательскими тегами — определёнными в ISO/IEC 29500.
Пользовательские данные (специфичные для презентации) могут существовать в виде тегов (ITagCollection) и CustomXmlParts (ICustomXmlPartCollection).
Получение значений тегов
В слайдах тег соответствует свойству IDocumentProperties.Keywords. Ниже приведён пример кода, показывающий, как получить значение тега с помощью Aspose.Slides для C++ для Presentation:
auto pres = System::MakeObject<Presentation>(u"pres.pptx");
System::String keywords = pres->get_DocumentProperties()->get_Keywords();
Добавление тегов в презентации
Aspose.Slides позволяет добавлять теги в презентации. Тег обычно состоит из двух элементов:
- имя пользовательского свойства —
MyTag - значение пользовательского свойства —
My Tag Value
Если необходимо классифицировать некоторые презентации по определённому правилу или свойству, вы можете воспользоваться тегами. Например, если хотите собрать все презентации из стран Северной Америки, создайте тег «North American» и задайте в качестве значений соответствующие страны (США, Мексика и Канада).
Ниже показан пример кода, демонстрирующий, как добавить тег к Presentation с помощью Aspose.Slides для C++:
auto pres = System::MakeObject<Presentation>(u"pres.pptx");
System::SharedPtr<ITagCollection> tags = pres->get_CustomData()->get_Tags();
pres->get_CustomData()->get_Tags()->idx_set(u"MyTag", u"My Tag Value");
Теги также можно задать для Slide:
auto pres = System::MakeObject<Presentation>();
auto slide = pres->get_Slides()->idx_get(0);
slide->get_CustomData()->get_Tags()->idx_set(u"tag", u"value");
Или для любого отдельного Shape:
auto pres = System::MakeObject<Presentation>();
auto slide = pres->get_Slides()->idx_get(0);
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 10.0f, 10.0f, 100.0f, 50.0f);
shape->get_TextFrame()->set_Text(u"My text");
shape->get_CustomData()->get_Tags()->idx_set(u"tag", u"value");
Часто задаваемые вопросы
Можно ли удалить все теги из презентации, слайда или фигуры одной операцией?
Да. Коллекция тегов поддерживает операцию clear, которая удаляет все пары ключ‑значение сразу.
Как удалить один тег по его имени без перебора всей коллекции?
Используйте операцию Remove(name) у TagCollection для удаления тега по его ключу.
Как получить полный список имён тегов для аналитики или фильтрации?
Вызовите GetNamesOfTags у коллекции тегов; она вернёт массив всех имён тегов.