В данной статье будет рассмотрено, как получить список стилей и применить их в документе с помощью AlterOffice API.
XStyleFamiliesSupplier
Интерфейс XStyleFamiliesSupplier предоставляет доступ к списку стилей и позволяет управлять ими в документе.
Получение интерфейса
XStyleFamiliesSupplier:
Reference<XStyleFamiliesSupplier> xStyleFamiliesSupplier(xTextDocument, UNO_QUERY_THROW);
-xTextDocument - объект реализующий интерфейс XTextDocument, позволяющий получить объект документа
- UNO_QUERY_TYPE - тип запроса интерфейса (). Описание всех типов запроса: https://support.almi-partner.ru/#knowledge_base/1/locale/ru/answer/105
Пример использования:
// Получаем объект XTextDocument из объекта xComponent
Reference<XTextDocument> xDoc(xComponent, UNO_QUERY_THROW);
// Получаем объект XStyleFamiliesSupplier из объекта xTextDocument
Reference<XStyleFamiliesSupplier> xStyleFamiliesSupplier(xDoc, UNO_QUERY_THROW);
// Получаем объект XNameAccess, который содержит список семейств стилей
Reference<XNameAccess> xStyleFamilies = xStyleFamiliesSupplier->getStyleFamilies();
// Получаем список имен семейств стилей
Sequence<OUString> styleFamilyNames = xStyleFamilies->getElementNames();
// Выводим количество семейств стилей
std::cout << "Number of Style Family Names: " << styleFamilyNames.getLength() << std::endl;
// Итерируем по списку имен семейств стилей и выводим имена стилей каждого семейства
for (sal_Int32 i = 0; i < styleFamilyNames.getLength(); i++)
{
OUString styleFamilyName = styleFamilyNames[i];
std::cout << "Style Family: " << styleFamilyName << std::endl;
// Получаем объект XNameAccess, который содержит список стилей текущего семейства
Reference<XNameAccess> xStyles = Reference<XNameAccess>(xStyleFamilies->getByName(styleFamilyName), UNO_QUERY_THROW);
// Получаем список имен стилей текущего семейства
Sequence<OUString> styleNames = xStyles->getElementNames();
// Итерируем по списку имен стилей текущего семейства и выводим их в консоль
for (sal_Int32 j = 0; j < styleNames.getLength(); j++)
{
OUString styleName = styleNames[j];
std::cout << " Style: " << styleName << std::endl;
}
}
В данном коде происходит получение доступа к списку стилей документа в AlterOffice, используя объект XTextDocument и интерфейсы XStyleFamiliesSupplier и XNameAccess. Затем выводятся имена стилей в консоль.
Методы интерфейса XStyleFamiliesSupplier:
- getStyleFamilies() - возвращает коллекцию семейств стилей, доступных в документе.
Параметры:
-
Возвращаемое значение: com::sun::star::container::XNameAccess
Применение стиля к тексту
Для применения стиля к тексту используется свойство ParaStyleName. Необходимо получить объект XPropertySet для выбранного текста и установить свойство ParaStyleName этого объекта на имя стиля, который нужно применить.
Другие свойства текста описаны в статье: https://support.almi-partner.ru/#knowledge_base/1/locale/ru/answer/115
Пример применения стиля:
// Получаем объект документа
Reference<XTextDocument> xTextDocument (xComponent, UNO_QUERY);
//Получаем объект текста
Reference<XText> xText = xTextDocument ->getText();
// Создаем курсор для работы с текстом
Reference<XTextCursor> xCursor = xText->createTextCursor();
// Выделяем весь текст в документе
xCursor->gotoStart(true);
xCursor->gotoEnd(true);
//Получем объект XPropertySet для применения стиля текста
Reference<XPropertySet> xCursorProps(xCursor, UNO_QUERY);
//Применяем метод setPropertyValue() для установки стиля
xCursorProps->setPropertyValue("ParaStyleName", Any(OUString("Standard")));