В данной статье мы рассмотрим процесс вставки изображения в документ ACell и AText. Будет рассмотрено использование различных интерфейсов, таких как XDrawPagesSupplier, XDrawPages, XShapes, XShape и XTextContent, для работы с рисунками и формами. Вы узнаете, как получить доступ к нужным интерфейсам, создать форму для вставки изображения и управлять ее свойствами. Это позволит вам программно добавлять и настраивать изображения.
XShape
Интерфейс XShape представляет объекты, которые могут быть вставлены в документ. Он обеспечивает функциональность для работы с графическими элементами, такими как фигуры, изображения и другие объекты. С помощью интерфейса XShape можно управлять положением, размером, видимостью и другими атрибутами объектов. Он также предоставляет методы для добавления, удаления и изменения формы объектов.
Пример использования:
//Получаем объект документа
Reference<XTextDocument> xDoc(xComponent, UNO_QUERY_THROW);
//Получаем объект текста
Reference<XText> xText = xDoc->getText();
//Получаем XMultiServiceFactory для создания экземпляра объекта EllipseShape
Reference<XMultiServiceFactory> xServiceFactory(xDoc, UNO_QUERY_THROW);
//Создается EllipseShape и xShape для работы с этим объектом
Reference<XShape> xShape(xServiceFactory->createInstance("com.sun.star.drawing.EllipseShape"), UNO_QUERY_THROW);
...
Size size;
Point position;
size.Width = 10000;
size.Height = 10000;
position.X = 0.9 * (30000 - size.Width);
position.Y = 0.5 * (15000 - size.Width);
xShape->setSize(size);
xShape->setPosition(position);
Методы интерфейса XShape:
-
getPosition() - позволяет получить текущую позицию объекта.
Параметры:
-
Возвращаемое значение: com::sun::star::awt::Point
|
-
getSize() - позволяет получить размер объекта.
Параметры:
-
Возвращаемое значение: com::sun::star::awt::Size
-
setPosition(aPosition) - устанавливает позицию объекта.
Параметры:
- com::sun::star::awt::Point aPosition - положение верхнего левого края в 1/100 миллиметрах.
Возвращаемое значение: void
-
setSize(aSize) - устанавливает размер объекта.
Параметры:
- com::sun::star::awt::Size aSize - размер в 1/100 миллиметрах.
Возвращаемое значение: void
XShapes
XShapes позволяет получать доступ, добавлять и удалять формы в коллекции.
Пример использования:
//Получаем объект XDrawPages
Reference<XDrawPages> xDP = xSheetSupplier->getDrawPages();
Reference<XIndexAccess> xIA(xDP, UNO_QUERY_THROW);
//Получаем объект коллекции форм
Reference<XShapes> xShapes(xIA->getByIndex(0), UNO_QUERY_THROW);
...
xShapes->add(xShape);
Методы интерфейса XShapes:
-
add(xShape) - добавляет форму в коллекцию.
Параметры:
Возвращаемое значение: void
-
remove(xShape) - удаляет форму из коллекции.
Параметры:
- com::sun::star::drawing::XShape xShape - форма, которую необходимо удалить.
Возвращаемое значени: void
Интерфейсы для обеспечения доступа к графическим объектам в ACell
XDrawPagesSupplier
Интерфейс XDrawPagesSupplier предоставляет функциональность для получения коллекции страниц рисунков в документе.
Пример использования:
//Получаем объект XDrawPagesSupplier для
обеспечения доступа к объекту рисунка
Reference<XDrawPagesSupplier>xSheetSupplier(xDoc,
UNO_QUERY_THROW);
//Получаем объект XDrawPages
Reference<XDrawPages> xDP =
xSheetSupplier->getDrawPages();
Методы интерфейса
XDrawPagesSupplier:
-
getDrawPages() - возвращает индексированный контейнер с объектом DrawPages.
Параметры:
-
Возвращаемое значение: com::sun::star::drawing::XDrawPages
XDrawPages
XDrawPages - интерфейс для работы с коллекцией страниц рисунков в документе.
Пример использования:
//Получаем объект XDrawPagesSupplier для
обеспечения доступа к объекту рисунка
Reference<XDrawPagesSupplier>xSheetSupplier(xDoc,
UNO_QUERY_THROW);
//Получаем объект XDrawPages
Reference<XDrawPages> xDP =
xSheetSupplier->getDrawPages();
xDP->remove(0);
Методы интерфейса XDrawPages:
-
insertNewByIndex(nIndex) - создает и вставляет объект DrawPage.
Параметры:
- long nIndex - индекс вставляемого объекта DrawPage.
Возвращаемое значение: com::sun::star::drawing::XDrawPage
-
remove(xPage) - удаляет объект DrawPage из коллекции.
Параметры:
- com::sun::star::drawing::XDrawPage xPage - удаляемый DrawPage объект.
Возвращаемое значение: void
Интерфейсы для создания и размещения графических объектов в AText
XTextContent
XTextContent обеспечивает возможность вставки различных объектов в текст в документе AText. Для вставки изображения или фигуры в документ AText следует создать экземпляр нужного графического объекта с помощью метода createInstance() интерфейса XMultiServiceFactory, создать объект XTextContent, и вставить его с использованием метода insertTextContent() интерфейса XText.
Пример использования:
//Получаем объект документа
Reference<XTextDocument> xDoc(xComponent, UNO_QUERY_THROW);
//Получаем объект текста
Reference<XText> xText = xDoc->getText();
//Получаем объект XMultiServiceFactory для создания TextGraphicObject
Reference<XMultiServiceFactory> xServiceFactory(xDoc, UNO_QUERY_THROW);
//Получаем объект XTextContent для вставки в метод insertTextContent() интерфейса XText. И создаем экземпляр объекта TextGraphicObject
Reference<XTextContent> xTextContent(xServiceFactory->createInstance("com.sun.star.text.TextGraphicObject"), UNO_QUERY_THROW);
...
//Вставляем изображение
xText->insertTextContent(xText->getEnd(), xTextContent, true);
Ниже приведены примеры кода на C++ и C#, которые иллюстрируют использование интерфейсов XDrawPagesSupplier, XDrawPages, XShapes, XShape и XTextContent. В этих примерах производится добавление изображения и эллипса на страницу документа ACell и AText.