Obtenir les limites des paragraphes à partir des présentations en Python via Java
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 un rectangle de paragraphe à partir d’un TextFrame en utilisant Paragraph.getRect, 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 formatage effectif du paragraphe.
Obtenir les coordonnées rectangulaires d’un paragraphe
Utilisez Paragraph.getRect pour obtenir le rectangle englobant d’un paragraphe.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("Shapes.pptx")
try:
slide = presentation.getSlides().get_Item(0)
shape = slide.getShapes().get_Item(0)
paragraph = shape.getTextFrame().getParagraphs().get_Item(0)
rectangle = paragraph.getRect()
finally:
presentation.dispose()
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.getRect. 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 obtient les limites du paragraphe à l’intérieur d’une cellule de tableau et dessine des rectangles sur la diapositive pour visualiser ces limites :
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, Presentation, SaveFormat, ShapeType
from java.awt import Color
presentation = Presentation("source.pptx")
try:
slide = presentation.getSlides().get_Item(0)
table = slide.getShapes().get_Item(0)
cell = table.getRows().get_Item(1).get_Item(1)
cell_x = table.getX() + cell.getOffsetX()
cell_y = table.getY() + cell.getOffsetY()
for paragraph in cell.getTextFrame().getParagraphs():
if not paragraph.getText():
continue
paragraph_rectangle = paragraph.getRect()
paragraph_rectangle_x = paragraph_rectangle.x + cell_x
paragraph_rectangle_y = paragraph_rectangle.y + cell_y
paragraph_bounds_shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, paragraph_rectangle_x, paragraph_rectangle_y, paragraph_rectangle.width, paragraph_rectangle.height)
paragraph_bounds_shape.getFillFormat().setFillType(FillType.NoFill)
paragraph_bounds_shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.YELLOW)
paragraph_bounds_shape.getLineFormat().getFillFormat().setFillType(FillType.Solid)
presentation.save("output.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
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 sur la diapositive.
Le retour à la ligne affecte-t-il les limites d’un paragraphe ?
Oui. Si TextFrameFormat.setWrapText 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 mappées de façon fiable en pixels dans l’image exportée ?
Oui. Convertissez les points en pixels en utilisant cette formule : pixels = points x (DPI / 72). Le résultat dépend du DPI choisi pour le rendu ou l’exportation.
Comment obtenir les paramètres de formatage “effective” du paragraphe, en tenant compte de l’héritage des styles ?
Utilisez la effective paragraph formatting data structure; elle renvoie les valeurs finales consolidées pour les retraits, l’espacement, le retour à la ligne, le RTL et plus encore.