Работа со встроенными объектами
Работа со встроенными объектами для текстовых и табличных документов различается, поэтому описания вставки и перечисления объектов описаны в отдельных разделах:
В данном разделе описаны общие методы работы со встроенными объектами, одинаковые для текстовых и табличных документов.
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.