Obtenir les limites des paragraphes à partir de présentations en Python

Vue d’ensemble

Cet article explique comment obtenir les limites, la taille et les coordonnées des paragraphes dans Aspose.Slides. Il montre comment récupérer le rectangle d’un paragraphe à partir d’une TextFrame en utilisant Paragraph.get_rect, comment obtenir les coordonnées du paragraphe à l’intérieur d’un cadre de texte de cellule de tableau, et met en évidence des détails importants tels que les unités de mesure, l’effet du retour à la ligne sur les limites, la conversion en pixels et les valeurs de mise en forme de paragraphe « effectives ».

Obtenir les coordonnées rectangulaires d’un paragraphe

Utilisez Paragraph.get_rect pour obtenir le rectangle englobant d’un paragraphe.

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()

Obtenir la taille d’un paragraphe à l’intérieur d’un cadre de texte de cellule de tableau

Pour obtenir la taille et les coordonnées d’un Paragraph dans un cadre de texte de cellule de tableau, utilisez Paragraph.get_rect. Le rectangle renvoyé est relatif au cadre de texte de la cellule du tableau, il faut donc ajouter la position du tableau et le décalage de la cellule lorsque vous avez besoin des coordonnées au niveau de la diapositive.

L’exemple suivant récupère les limites du paragraphe à l’intérieur d’une cellule de tableau et dessine des rectangles sur la diapositive pour visualiser ces limites :

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

Dans quelles unités les coordonnées du paragraphe sont‑elles mesurées ?

Elles sont mesurées en points, où 1 pouce équivaut à 72 points. Cela s’applique à toutes les coordonnées et dimensions de la diapositive.

L’ajustement du texte affecte‑t‑il les limites d’un paragraphe ?

Oui. Si TextFrameFormat.wrap_text est activé pour le TextFrame, le texte se coupe pour s’adapter à la largeur de la zone, ce qui modifie les limites réelles du paragraphe.

Les coordonnées du paragraphe peuvent‑elles être converties de façon fiable en pixels dans l’image exportée ?

Oui. Convertissez les points en pixels en utilisant la formule suivante : pixels = points × (DPI / 72). Le résultat dépend du DPI choisi pour le rendu ou l’exportation.

Comment obtenir les paramètres de mise en forme « effectifs » du paragraphe, en tenant compte de l’héritage des styles ?

Utilisez la structure de données de mise en forme effective du paragraphe ; elle renvoie les valeurs finales consolidées pour les retraits, l’espacement, le retour à la ligne, le sens RTL et plus encore.