Skip to main content

Работа со встроенными объектами

Работа со встроенными объектами для текстовых и табличных документов различается, поэтому описания вставки и перечисления объектов описаны в отдельных разделах:

В данном разделе описаны общие методы работы со встроенными объектами, одинаковые для текстовых и табличных документов.

1. Получение размеров​

Размеры встроенного объекта могут быть получены из объектов InlineFrame или AbsoluteFrame, которые, в свою очередь, могут быть получены посредством использования методов MediaObject:getFrame(), Image:getFrame(), Chart:getFrame(), Shape:getFrame(), TextBox:getFrame() (см раздел Frame).


shapes = document:getRange():getShapes()
for shape in shapes:enumerate() do
frame = shape:getFrame()
print(frame:getDimensions().height)
print(frame:getDimensions().width)
end

2. Получение текущей позиции​

С помощью методов InlineFrame:getPosition(), AbsoluteFrame:getTopLeft() можно получить текущую позицию объекта.


shapes = document:getRange():getShapes()
for shape in shapes:enumerate() do
inlineFrame = shape:getFrame()
print(inlineFrame:getPosition().horizontal)
print(inlineFrame:getPosition().vertical)
end

table = document:getBlocks():getTable(0)
shapes = table:getShapes()
for shape in shapes:enumerate() do
absoluteFrame = shape:getFrame()
print(absoluteFrame:getTopLeft().x)
print(absoluteFrame:getTopLeft().y)
end

3. Установка размеров​

С помощью методов InlineFrame:setDimensions(), AbsoluteFrame:setDimensions() можно изменить размеры встроенных объектов


shapes = document:getRange():getShapes()
for shape in shapes:enumerate() do
inlineFrame = shape:getFrame()
inlineFrame:setDimensions(DocumentAPI.SizeU(50.0, 50.0))
end

table = document:getBlocks():getTable(0)
shapes = table:getShapes()
for shape in shapes:enumerate() do
absoluteFrame = shape:getFrame()
absoluteFrame:setDimensions(DocumentAPI.SizeU(50.0, 50.0))
end

4. Установка позиции​

Для объекта AbsoluteFrame используется метод AbsoluteFrame:moveTo()


table = document:getBlocks():getTable(0)
shapes = table:getShapes()
for shape in shapes:enumerate() do
absoluteFrame = shape:getFrame()
absoluteFrame:moveTo(DocumentAPI.PointU(50.0, 50.0))
end

Для объекта InlineFrame используется метод InlineFrame:setPosition(). Примеры использования с различными параметрами приведены в разделе описании метода.

5. Масштабирование размеров​

Для объекта AbsoluteFrame используется метод AbsoluteFrame:scale()


table = document:getBlocks():getTable(0)
shapes = table:getShapes()
for shape in shapes:enumerate() do
absoluteFrame = shape:getFrame()
absoluteFrame:scale(50, 50, DocumentAPI.ScaleFrom_TopLeft)
end

6. Установка обтекания текстом​

Для InlineFrame вариант обтекания текстом графического объекта TextWrapType может быть задан посредством использованием метода InlineFrame:setWrapType().


shapes = document:getRange():getShapes()
for shape in shapes:enumerate() do
inlineFrame = shape:getFrame()
inlineFrame:setWrapType(DocumentAPI.TextWrapType_Inline)
end

7. Вращение и отражение объектов​

Следующие возможности предусмотрены только для объектов Shape и TextBox.

Для данных объектов могут быть заданы угол вращения и вертикальное / горизонтальное отражение посредством использования методов Shape:setGeometryProperties(), TextBox:setGeometryProperties().


geometryProperties = shape:getGeometryProperties()
geometryProperties.rotation = 45.0
geometryProperties.horizontalFlip = true
geometryProperties.verticalFlip = false
shape:setGeometryProperties(geometryProperties)

geometryProperties = textBox:getGeometryProperties()
geometryProperties.rotation = 45.0
geometryProperties.horizontalFlip = true
geometryProperties.verticalFlip = false
textBox:setGeometryProperties(geometryProperties)

Внимание

Метод Image:getGeometryProperties вернет геометрические свойства изображения.

Метод Image:setGeometryProperties в данный момент не реализован и вызовет исключение NotImplementedError.