Obtenir les limites du paragraphe à partir de présentations en Java
Obtenir les coordonnées du paragraphe et de la portion dans un TextFrame
Utilisant Aspose.Slides for Java, les développeurs peuvent désormais obtenir les coordonnées rectangulaires d’un Paragraph dans la collection de paragraphes d’un TextFrame. Cela permet également d’obtenir les coordonnées de la portion dans la collection de portions d’un paragraphe. Dans cet article, nous allons démontrer à l’aide d’un exemple comment obtenir les coordonnées rectangulaires d’un paragraphe ainsi que la position de la portion à l’intérieur d’un paragraphe.
AutoShape shape = (AutoShape)pres.getSlides().get_Item(0).getShapes().get_Item(0);
TextFrame textFrame = (TextFrame)shape.getTextFrame();
for (IParagraph paragraph : textFrame.getParagraphs()){
for (IPortion portion : paragraph.getPortions()){
Point2D.Float point = portion.getCoordinates();
}
}
Obtenir les coordonnées rectangulaires d’un paragraphe
En utilisant la méthode getRect() les développeurs peuvent obtenir le rectangle délimitant le paragraphe.
Presentation pres = new Presentation("HelloWorld.pptx");
try {
IAutoShape shape = (IAutoShape) pres.getSlides().get_Item(0).getShapes().get_Item(0);
ITextFrame textFrame = shape.getTextFrame();
Rectangle2D.Float rect = textFrame.getParagraphs().get_Item(0).getRect();
System.out.println("X: " + rect.x + " Y: " + rect.y + " Width: " + rect.width + " Height: " + rect.height);
} finally {
if (pres != null) pres.dispose();
}
Obtenir la taille d’un paragraphe et d’une portion dans un TextFrame de cellule de tableau
Pour obtenir la taille et les coordonnées d’une Portion ou d’un Paragraph dans un TextFrame de cellule de tableau, vous pouvez utiliser les méthodes IPortion.getRect et IParagraph.getRect. Ce code d’exemple montre l’opération décrite :
Presentation pres = new Presentation("source.pptx");
try {
Table tbl = (Table)pres.getSlides().get_Item(0).getShapes().get_Item(0);
ICell cell = tbl.getRows().get_Item(1).get_Item(1);
double x = tbl.getX() + tbl.getRows().get_Item(1).get_Item(1).getOffsetX();
double y = tbl.getY() + tbl.getRows().get_Item(1).get_Item(1).getOffsetY();
for (IParagraph para : cell.getTextFrame().getParagraphs())
{
if (para.getText().equals(""))
continue;
Rectangle2D.Float rect = para.getRect();
IAutoShape shape =
pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle,
(float)rect.getX() + (float)x, (float)rect.getY() + (float)y, (float)rect.getWidth(), (float)rect.getHeight());
shape.getFillFormat().setFillType(FillType.NoFill);
shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.YELLOW);
shape.getLineFormat().getFillFormat().setFillType(FillType.Solid);
for (IPortion portion : para.getPortions())
{
if (portion.getText().contains("0"))
{
rect = portion.getRect();
shape =
pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle,
(float)rect.getX() + (float)x, (float)rect.getY() + (float)y, (float)rect.getWidth(), (float)rect.getHeight());
shape.getFillFormat().setFillType(FillType.NoFill);
}
}
}
} finally {
if (pres != null) pres.dispose();
}
FAQ
Dans quelles unités les coordonnées retournées pour un paragraphe et des portions de texte sont‑elles mesurées ?
En points, où 1 pouce = 72 points. Cela s’applique à toutes les coordonnées et dimensions sur la diapositive.
Le retour à la ligne affecte‑t‑il les limites du paragraphe ?
Oui. Si le retour à la ligne est activé dans le TextFrame, le texte se tronque pour tenir dans 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 aux pixels dans l’image exportée ?
Oui. Convertissez les points en pixels en utilisant : pixels = points × (DPI / 72). Le résultat dépend du DPI choisi pour le rendu/l’exportation.
Comment obtenir les paramètres de mise en forme « effectifs » d’un paragraphe, en tenant compte de l’héritage de style ?
Utilisez la structure de données de mise en forme de paragraphe effective; elle renvoie les valeurs consolidées finales pour les retraits, l’espacement, le retour à la ligne, le sens RTL, et plus encore.