Get Paragraph Bounds from Presentations in Python
Overview
This article explains how to get the bounds, size, and coordinates of paragraphs in Aspose.Slides. It shows how to retrieve a paragraph rectangle from a TextFrame by using Paragraph.get_rect, how to get paragraph coordinates inside a table cell text frame, and highlights important details such as measurement units, the effect of text wrapping on bounds, pixel conversion, and effective paragraph formatting values.
Get Rectangular Coordinates of a Paragraph
Use Paragraph.get_rect to get the bounding rectangle of a paragraph.
import aspose.slides as slides
with slides.Presentation("Shapes.pptx") as presentation:
slide = presentation.slides[0]
shape = slide.shapes[0]
paragraph = shape.text_frame.paragraphs[0]
rectangle = paragraph.get_rect()
Get the Size of a Paragraph Inside a Table Cell TextFrame
To get the size and coordinates of a Paragraph in a table cell text frame, use Paragraph.get_rect. The returned rectangle is relative to the table cell text frame, so add the table position and cell offset when you need slide-level coordinates.
The following example gets paragraph bounds inside a table cell and draws rectangles on the slide to visualize those bounds:
import aspose.slides as slides
import aspose.pydrawing as draw
with slides.Presentation("source.pptx") as presentation:
slide = presentation.slides[0]
table = slide.shapes[0]
cell = table.rows[1][1]
cell_x = table.x + cell.offset_x
cell_y = table.y + cell.offset_y
for paragraph in cell.text_frame.paragraphs:
if paragraph.text == "":
continue
paragraph_rectangle = paragraph.get_rect()
paragraph_rectangle_x = paragraph_rectangle.x + cell_x
paragraph_rectangle_y = paragraph_rectangle.y + cell_y
paragraph_bounds_shape = slide.shapes.add_auto_shape(
slides.ShapeType.RECTANGLE,
paragraph_rectangle_x,
paragraph_rectangle_y,
paragraph_rectangle.width,
paragraph_rectangle.height)
paragraph_bounds_shape.fill_format.fill_type = slides.FillType.NO_FILL
paragraph_bounds_shape.line_format.fill_format.solid_fill_color.color = draw.Color.yellow
paragraph_bounds_shape.line_format.fill_format.fill_type = slides.FillType.SOLID
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
FAQ
In what units are paragraph coordinates measured?
They are measured in points, where 1 inch equals 72 points. This applies to all coordinates and dimensions on the slide.
Does word wrapping affect a paragraph’s bounds?
Yes. If TextFrameFormat.wrap_text is enabled for the TextFrame, the text breaks to fit the area width, which changes the paragraph’s actual bounds.
Can paragraph coordinates be reliably mapped to pixels in the exported image?
Yes. Convert points to pixels using this formula: pixels = points x (DPI / 72). The result depends on the DPI chosen for rendering or export.
How do I get the “effective” paragraph formatting parameters, taking style inheritance into account?
Use the effective paragraph formatting data structure; it returns the final consolidated values for indents, spacing, wrapping, RTL, and more.