Управление тегами и пользовательскими данными в презентациях с использованием C++
Хранение данных в файлах презентаций
Файлы PPTX — элементы с расширением .pptx — хранятся в формате PresentationML, который является частью спецификации Office Open XML. Формат Office Open XML определяет структуру данных, содержащихся в презентациях.
Слайд (slide) является одним из элементов презентаций, а slide part содержит содержимое одного слайда. slide part может иметь явные связи со многими частями — например, с пользовательскими тегами — определёнными в 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 у коллекции тегов; он возвращает массив всех имён тегов.