Shape class

Shape class

Represents an object in the drawing layer, such as an AutoShape, textbox, freeform, OLE object, ActiveX control, or picture. To learn more, visit the Working with Shapes documentation article.

Remarks

Using the Shape class you can create or modify shapes in a Microsoft Word document.

An important property of a shape is its ShapeBase.shape_type. Shapes of different types can have different capabilities in a Word document. For example, only image and OLE shapes can have images inside them. Most of the shapes can have text, but not all.

Shapes that can have text, can contain Paragraph and Table nodes as children.

Inheritance: ShapeShapeBaseCompositeNodeNode

Constructors

NameDescription
Shape(doc, shape_type)Creates a new shape object.

Properties

NameDescription
allow_overlapGets or sets a value that specifies whether this shape can overlap other shapes.
(Inherited from ShapeBase)
alternative_textDefines alternative text to be displayed instead of a graphic.
(Inherited from ShapeBase)
anchor_lockedSpecifies whether the shape’s anchor is locked.
(Inherited from ShapeBase)
aspect_ratio_lockedSpecifies whether the shape’s aspect ratio is locked.
(Inherited from ShapeBase)
behind_textSpecifies whether the shape is below or above text.
(Inherited from ShapeBase)
bottomGets the position of the bottom edge of the containing block of the shape.
(Inherited from ShapeBase)
boundsGets or sets the location and size of the containing block of the shape.
(Inherited from ShapeBase)
bounds_in_pointsGets the location and size of the containing block of the shape in points, relative to the anchor of the topmost shape.
(Inherited from ShapeBase)
bounds_with_effectsGets final extent that this shape object has after applying drawing effects. Value is measured in points.
(Inherited from ShapeBase)
can_have_imageReturns True if the shape type allows the shape to have an image.
(Inherited from ShapeBase)
chartProvides access to the chart properties if this shape has a Chart.
coord_originThe coordinates at the top-left corner of the containing block of this shape.
(Inherited from ShapeBase)
coord_sizeThe width and height of the coordinate space inside the containing block of this shape.
(Inherited from ShapeBase)
countGets the number of immediate children of this node.
(Inherited from CompositeNode)
custom_node_idSpecifies custom node identifier.
(Inherited from Node)
distance_bottomReturns or sets the distance (in points) between the document text and the bottom edge of the shape.
(Inherited from ShapeBase)
distance_leftReturns or sets the distance (in points) between the document text and the left edge of the shape.
(Inherited from ShapeBase)
distance_rightReturns or sets the distance (in points) between the document text and the right edge of the shape.
(Inherited from ShapeBase)
distance_topReturns or sets the distance (in points) between the document text and the top edge of the shape.
(Inherited from ShapeBase)
documentGets the document to which this node belongs.
(Inherited from Node)
extrusion_enabledReturns True if an extrusion effect is enabled.
fillGets fill formatting for the shape.
(Inherited from ShapeBase)
fill_colorDefines the brush color that fills the closed path of the shape.
filledDetermines whether the closed path of the shape will be filled.
first_childGets the first child of the node.
(Inherited from CompositeNode)
first_paragraphGets the first paragraph in the shape.
flip_orientationSwitches the orientation of a shape.
(Inherited from ShapeBase)
fontProvides access to the font formatting of this object.
(Inherited from ShapeBase)
glowGets glow formatting for the shape.
(Inherited from ShapeBase)
has_chartReturns True if this Shape has a Chart.
has_child_nodesReturns True if this node has any child nodes.
(Inherited from CompositeNode)
has_imageReturns True if the shape has image bytes or links an image.
has_smart_artReturns True if this Shape has a SmartArt object.
heightGets or sets the height of the containing block of the shape.
(Inherited from ShapeBase)
height_relativeGets or sets the value that represents the percentage of shape’s relative height.
(Inherited from ShapeBase)
horizontal_alignmentSpecifies how the shape is positioned horizontally.
(Inherited from ShapeBase)
horizontal_rule_formatProvides access to the properties of the horizontal rule shape. For a shape that is not a horizontal rule, returns None.
hrefGets or sets the full hyperlink address for a shape.
(Inherited from ShapeBase)
image_dataProvides access to the image of the shape. Returns None if the shape cannot have an image.
is_compositeReturns True if this node can contain other nodes.
(Inherited from Node)
is_decorativeGets or sets the flag that specifies whether the shape is decorative in the document.
(Inherited from ShapeBase)
is_delete_revisionReturns true if this object was deleted in Microsoft Word while change tracking was enabled.
(Inherited from ShapeBase)
is_groupReturns True if this is a group shape.
(Inherited from ShapeBase)
is_horizontal_ruleReturns True if this shape is a horizontal rule.
(Inherited from ShapeBase)
is_imageReturns True if this shape is an image shape.
(Inherited from ShapeBase)
is_inlineA quick way to determine if this shape is positioned inline with text.
(Inherited from ShapeBase)
is_insert_revisionReturns true if this object was inserted in Microsoft Word while change tracking was enabled.
(Inherited from ShapeBase)
is_layout_in_cellGets or sets a flag indicating whether the shape is displayed inside a table or outside of it.
(Inherited from ShapeBase)
is_move_from_revisionReturns True if this object was moved (deleted) in Microsoft Word while change tracking was enabled.
(Inherited from ShapeBase)
is_move_to_revisionReturns True if this object was moved (inserted) in Microsoft Word while change tracking was enabled.
(Inherited from ShapeBase)
is_signature_lineIndicates that shape is a SignatureLine.
(Inherited from ShapeBase)
is_top_levelReturns True if this shape is not a child of a group shape.
(Inherited from ShapeBase)
is_word_artReturns True if this shape is a WordArt object.
(Inherited from ShapeBase)
last_childGets the last child of the node.
(Inherited from CompositeNode)
last_paragraphGets the last paragraph in the shape.
leftGets or sets the position of the left edge of the containing block of the shape.
(Inherited from ShapeBase)
left_relativeGets or sets the value that represents shape’s relative left position in percent.
(Inherited from ShapeBase)
markup_languageGets MarkupLanguage used for this graphic object.
(Inherited from ShapeBase)
nameGets or sets the optional shape name.
(Inherited from ShapeBase)
next_siblingGets the node immediately following this node.
(Inherited from Node)
node_typeReturns NodeType.SHAPE.
ole_formatProvides access to the OLE data of a shape. For a shape that is not an OLE object or ActiveX control, returns None.
parent_nodeGets the immediate parent of this node.
(Inherited from Node)
parent_paragraphReturns the immediate parent paragraph.
(Inherited from ShapeBase)
previous_siblingGets the node immediately preceding this node.
(Inherited from Node)
rangeReturns a Range object that represents the portion of a document that is contained in this node.
(Inherited from Node)
reflectionGets reflection formatting for the shape.
(Inherited from ShapeBase)
relative_horizontal_positionSpecifies relative to what the shape is positioned horizontally.
(Inherited from ShapeBase)
relative_horizontal_sizeGets or sets the value of shape’s relative size in horizontal direction.
(Inherited from ShapeBase)
relative_vertical_positionSpecifies relative to what the shape is positioned vertically.
(Inherited from ShapeBase)
relative_vertical_sizeGets or sets the value of shape’s relative size in vertical direction.
(Inherited from ShapeBase)
rightGets the position of the right edge of the containing block of the shape.
(Inherited from ShapeBase)
rotationDefines the angle (in degrees) that a shape is rotated. Positive value corresponds to clockwise rotation angle.
(Inherited from ShapeBase)
screen_tipDefines the text displayed when the mouse pointer moves over the shape.
(Inherited from ShapeBase)
shadow_enabledReturns True if a shadow effect is enabled.
shadow_formatGets shadow formatting for the shape.
(Inherited from ShapeBase)
shape_typeGets the shape type.
(Inherited from ShapeBase)
signature_lineGets SignatureLine object if the shape is a signature line. Returns None otherwise.
size_in_pointsGets the size of the shape in points.
(Inherited from ShapeBase)
story_typeReturns StoryType.TEXTBOX.
strokeDefines a stroke for a shape.
stroke_colorDefines the color of a stroke.
stroke_weightDefines the brush thickness that strokes the path of a shape in points.
strokedDefines whether the path will be stroked.
targetGets or sets the target frame for the shape hyperlink.
(Inherited from ShapeBase)
text_boxDefines attributes that specify how text is displayed in a shape.
text_pathDefines the text of the text path (of a WordArt object).
titleGets or sets the title (caption) of the current shape object.
(Inherited from ShapeBase)
topGets or sets the position of the top edge of the containing block of the shape.
(Inherited from ShapeBase)
top_relativeGets or sets the value that represents shape’s relative top position in percent.
(Inherited from ShapeBase)
vertical_alignmentSpecifies how the shape is positioned vertically.
(Inherited from ShapeBase)
widthGets or sets the width of the containing block of the shape.
(Inherited from ShapeBase)
width_relativeGets or sets the value that represents the percentage of shape’s relative width.
(Inherited from ShapeBase)
wrap_sideSpecifies how the text is wrapped around the shape.
(Inherited from ShapeBase)
wrap_typeDefines whether the shape is inline or floating. For floating shapes defines the wrapping mode for text around the shape.
(Inherited from ShapeBase)
z_orderDetermines the display order of overlapping shapes.
(Inherited from ShapeBase)

Methods

NameDescription
accept(visitor)Accepts a visitor.
accept_end(visitor)Accepts a visitor for visiting the end of the shape.
accept_start(visitor)Accepts a visitor for visiting the start of the shape.
adjust_with_effects(source)Adds to the source rectangle values of the effect extent and returns the final rectangle.
(Inherited from ShapeBase)
append_child(new_child)Adds the specified node to the end of the list of child nodes for this node.
(Inherited from CompositeNode)
clone(is_clone_children)Creates a duplicate of the node.
(Inherited from Node)
fetch_inherited_shape_attr(key)Reserved for system use. IShapeAttrSource.
(Inherited from ShapeBase)
fetch_shape_attr(key)Reserved for system use. IShapeAttrSource.
(Inherited from ShapeBase)
get_ancestor(ancestor_type)Gets the first ancestor of the specified object type.
(Inherited from Node)
get_ancestor(ancestor_type)Gets the first ancestor of the specified NodeType.
(Inherited from Node)
get_child(node_type, index, is_deep)Returns an Nth child node that matches the specified type.
(Inherited from CompositeNode)
get_child_nodes(node_type, is_deep)Returns a live collection of child nodes that match the specified type.
(Inherited from CompositeNode)
get_direct_shape_attr(key)Reserved for system use. IShapeAttrSource.
(Inherited from ShapeBase)
get_shape_renderer()Creates and returns an object that can be used to render this shape into an image.
(Inherited from ShapeBase)
get_text()Gets the text of this node and of all its children.
(Inherited from Node)
index_of(child)Returns the index of the specified child node in the child node array.
(Inherited from CompositeNode)
insert_after(new_child, ref_child)Inserts the specified node immediately after the specified reference node.
(Inherited from CompositeNode)
insert_before(new_child, ref_child)Inserts the specified node immediately before the specified reference node.
(Inherited from CompositeNode)
local_to_parent(value)Converts a value from the local coordinate space into the coordinate space of the parent shape.
(Inherited from ShapeBase)
next_pre_order(root_node)Gets next node according to the pre-order tree traversal algorithm.
(Inherited from Node)
node_type_to_string(node_type)A utility method that converts a node type enum value into a user friendly string.
(Inherited from Node)
prepend_child(new_child)Adds the specified node to the beginning of the list of child nodes for this node.
(Inherited from CompositeNode)
previous_pre_order(root_node)Gets the previous node according to the pre-order tree traversal algorithm.
(Inherited from Node)
remove()Removes itself from the parent.
(Inherited from Node)
remove_all_children()Removes all the child nodes of the current node.
(Inherited from CompositeNode)
remove_child(old_child)Removes the specified child node.
(Inherited from CompositeNode)
remove_shape_attr(key)Reserved for system use. IShapeAttrSource.
(Inherited from ShapeBase)
remove_smart_tags()Removes all SmartTag descendant nodes of the current node.
(Inherited from CompositeNode)
select_nodes(xpath)Selects a list of nodes matching the XPath expression.
(Inherited from CompositeNode)
select_single_node(xpath)Selects the first Node that matches the XPath expression.
(Inherited from CompositeNode)
set_shape_attr(key, value)Reserved for system use. IShapeAttrSource.
(Inherited from ShapeBase)
to_string(save_format)Exports the content of the node into a string in the specified format.
(Inherited from Node)
to_string(save_options)Exports the content of the node into a string using the specified save options.
(Inherited from Node)
update_smart_art_drawing()Updates SmartArt pre-rendered drawing by using Aspose.Words’s SmartArt cold rendering engine.

Examples

Shows how to extract images from a document, and save them to the local file system as individual files.

doc = aw.Document(MY_DIR + "Images.docx")

# Get the collection of shapes from the document,
# and save the image data of every shape with an image as a file to the local file system.
shapes = doc.get_child_nodes(aw.NodeType.SHAPE, True)

self.assertEqual(9, len([s for s in shapes if s.as_shape().has_image]))

image_index = 0
for shape in shapes:
    shape = shape.as_shape()

    if shape.has_image:

        # The image data of shapes may contain images of many possible image formats.
        # We can determine a file extension for each image automatically, based on its format.
        image_file_name = f"File.extract_images.{image_index}{aw.FileFormatUtil.image_type_to_extension(shape.image_data.image_type)}"
        shape.image_data.save(ARTIFACTS_DIR + image_file_name)
        image_index += 1

Shows how to insert a floating image to the center of a page.

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

# Insert a floating image that will appear behind the overlapping text and align it to the page's center.
shape = builder.insert_image(IMAGE_DIR + "Logo.jpg")
shape.wrap_type = aw.drawing.WrapType.NONE
shape.behind_text = True
shape.relative_horizontal_position = aw.drawing.RelativeHorizontalPosition.PAGE
shape.relative_vertical_position = aw.drawing.RelativeVerticalPosition.PAGE
shape.horizontal_alignment = aw.drawing.HorizontalAlignment.CENTER
shape.vertical_alignment = aw.drawing.VerticalAlignment.CENTER

doc.save(ARTIFACTS_DIR + "Image.create_floating_page_center.docx")

Shows how to delete all shapes from a document.

doc = aw.Document()
builder = aw.DocumentBuilder(doc)

# Insert two shapes along with a group shape with another shape inside it.
builder.insert_shape(aw.drawing.ShapeType.RECTANGLE, 400, 200)
builder.insert_shape(aw.drawing.ShapeType.STAR, 300, 300)

group = aw.drawing.GroupShape(doc)
group.bounds = drawing.RectangleF(100, 50, 200, 100)
group.coord_origin = drawing.Point(-1000, -500)

sub_shape = aw.drawing.Shape(doc, aw.drawing.ShapeType.CUBE)
sub_shape.width = 500
sub_shape.height = 700
sub_shape.left = 0
sub_shape.top = 0

group.append_child(sub_shape)
builder.insert_node(group)

self.assertEqual(3, doc.get_child_nodes(aw.NodeType.SHAPE, True).count)
self.assertEqual(1, doc.get_child_nodes(aw.NodeType.GROUP_SHAPE, True).count)

# Remove all Shape nodes from the document.
shapes = doc.get_child_nodes(aw.NodeType.SHAPE, True)
shapes.clear()

# All shapes are gone, but the group shape is still in the document.
self.assertEqual(1, doc.get_child_nodes(aw.NodeType.GROUP_SHAPE, True).count)
self.assertEqual(0, doc.get_child_nodes(aw.NodeType.SHAPE, True).count)

# Remove all group shapes separately.
group_shapes = doc.get_child_nodes(aw.NodeType.GROUP_SHAPE, True)
group_shapes.clear()

self.assertEqual(0, doc.get_child_nodes(aw.NodeType.GROUP_SHAPE, True).count)
self.assertEqual(0, doc.get_child_nodes(aw.NodeType.SHAPE, True).count)

See Also