Obtener límites de párrafo de presentaciones en Android

Obtener coordenadas de párrafo y porción en un TextFrame

Con Aspose.Slides para Android a través de Java, los desarrolladores ahora pueden obtener las coordenadas rectangulares del Paragraph dentro de la colección de párrafos de TextFrame. También permite obtener las coordenadas de la porción dentro de la colección de porciones de un párrafo. En este tema, demostraremos con la ayuda de un ejemplo cómo obtener las coordenadas rectangulares del párrafo junto con la posición de la porción dentro de un párrafo.

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

Obtener coordenadas rectangulares de un párrafo

Con el método getRect() los desarrolladores pueden obtener el rectángulo de los límites del párrafo.

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

Obtener el tamaño de un párrafo y porción dentro de un TextFrame de celda de tabla

Para obtener el tamaño y las coordenadas de la Portion o el Paragraph en un TextFrame de celda de tabla, puedes usar los métodos IPortion.getRect y IParagraph.getRect .

Este código de ejemplo muestra la operación descrita:

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

Preguntas frecuentes

¿En qué unidades se devuelven las coordenadas de un párrafo y las porciones de texto?

En puntos, donde 1 pulgada = 72 puntos. Esto se aplica a todas las coordenadas y dimensiones en la diapositiva.

¿El ajuste de línea afecta los límites del párrafo?

Sí. Si el wrapping está habilitado en el TextFrame, el texto se rompe para ajustarse al ancho del área, lo que cambia los límites reales del párrafo.

¿Se pueden mapear de manera fiable las coordenadas del párrafo a píxeles en la imagen exportada?

Sí. Convierta puntos a píxeles usando: píxeles = puntos × (DPI / 72). El resultado depende del DPI elegido para el renderizado/exportación.

¿Cómo obtener los parámetros de formato “effective” del párrafo, teniendo en cuenta la herencia de estilos?

Utilice la estructura de datos de formato de párrafo effective; devuelve los valores consolidados finales para sangrías, espaciado, ajuste de línea, RTL y más.