Obtener los límites del párrafo de presentaciones en PHP
Obtener coordenadas de párrafo y porción en un TextFrame
Usando Aspose.Slides para PHP a través de Java, los desarrolladores ahora pueden obtener las coordenadas rectangulares para 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, vamos a demostrar, con la ayuda de un ejemplo, cómo obtener las coordenadas rectangulares para un párrafo junto con la posición de la porción dentro de un párrafo.
$shape = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
$textFrame = $shape->getTextFrame();
foreach($textFrame->getParagraphs() as $paragraph) {
foreach($paragraph->getPortions() as $portion) {
$point = $portion->getCoordinates();
}
}
Obtener coordenadas rectangulares de un párrafo
Utilizando el método getRect(), los desarrolladores pueden obtener el rectángulo de límites del párrafo.
$pres = new Presentation("HelloWorld.pptx");
try {
$shape = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
$textFrame = $shape->getTextFrame();
$rect = $textFrame->getParagraphs()->get_Item(0)->getRect();
echo("X: " . $rect->$x . " Y: " . $rect->$y . " Width: " . $rect->$width . " Height: " . $rect->$height);
} finally {
if (!java_is_null($pres)) {
$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 del Paragraph en un TextFrame de celda de tabla, puede usar los métodos Portion::getRect y Paragraph::getRect.
Este fragmento de código muestra la operación descrita:
$pres = new Presentation("source.pptx");
try {
$tbl = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
$cell = $tbl->getRows()->get_Item(1)->get_Item(1);
$x = $tbl->getX() + $tbl->getRows()->get_Item(1)->get_Item(1)->getOffsetX();
$y = $tbl->getY() + $tbl->getRows()->get_Item(1)->get_Item(1)->getOffsetY();
foreach($cell->getTextFrame()->getParagraphs() as $para) {
if ($para->getText()->equals("")) {
continue;
}
$rect = $para->getRect();
$shape = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, $rect->getX() + $x, $rect->getY() + $y, $rect->getWidth(), $rect->getHeight());
$shape->getFillFormat()->setFillType(FillType::NoFill);
$shape->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->YELLOW);
$shape->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
foreach($para->getPortions() as $portion) {
if ($portion->getText()->contains("0")) {
$rect = $portion->getRect();
$shape = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, $rect->getX() + $x, $rect->getY() + $y, $rect->getWidth(), $rect->getHeight());
$shape->getFillFormat()->setFillType(FillType::NoFill);
}
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
¿En qué unidades se devuelven las coordenadas de un párrafo y de las porciones de texto?
En puntos, donde 1 pulgada = 72 puntos. Esto se aplica a todas las coordenadas y dimensiones de la diapositiva.
¿Afecta el ajuste de texto a los límites del párrafo?
Sí. Si el ajuste de texto está habilitado en el TextFrame, el texto se divide para adaptarse al ancho del área, lo que modifica los límites reales del párrafo.
¿Se pueden mapear de forma 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 “efectivo” del párrafo, teniendo en cuenta la herencia de estilos?
Utilice la estructura de datos de formato de párrafo efectivo; devuelve los valores consolidados finales para sangrías, espaciado, ajuste, RTL y más.