Obter limites de parágrafo de apresentações em PHP
Visão geral
Este artigo explica como obter os limites, tamanho e coordenadas de parágrafos e trechos de texto no Aspose.Slides. Ele mostra como recuperar o retângulo de um parágrafo em um TextFrame usando getRect(), como obter as coordenadas do parágrafo e da porção dentro de um quadro de texto de célula de tabela, e destaca detalhes importantes como unidades de medida, o efeito da quebra de linha nos limites, conversão para pixels e valores de formatação efetiva de parágrafo.
Obter coordenadas de parágrafo e porção em um TextFrame
Usando Aspose.Slides for PHP via Java, os desenvolvedores agora podem obter as coordenadas retangulares de um Parágrafo dentro da coleção de parágrafos de um TextFrame. Também permite obter as coordenadas da porção dentro da coleção de porções de um parágrafo. Neste tópico, vamos demonstrar com a ajuda de um exemplo como obter as coordenadas retangulares do parágrafo junto com a posição da porção dentro do parágrafo.
$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();
}
}
Obter coordenadas retangulares de um parágrafo
Usando o método getRect() os desenvolvedores podem obter o retângulo dos limites do parágrafo.
$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();
}
}
Obter o tamanho de um parágrafo e de uma porção dentro de um TextFrame de célula de tabela
Para obter o tamanho e as coordenadas da Portion ou Paragraph em um quadro de texto de célula de tabela, você pode usar os métodos Portion::getRect e Paragraph::getRect.
Este código de exemplo demonstra a operação 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();
}
}
Perguntas frequentes
Em quais unidades as coordenadas retornadas para um parágrafo e trechos de texto são medidas?
Em pontos, onde 1 polegada = 72 pontos. Isso se aplica a todas as coordenadas e dimensões no slide.
A quebra de linha afeta os limites de um parágrafo?
Sim. Se wrapping estiver habilitado no TextFrame, o texto é quebrado para se ajustar à largura da área, o que altera os limites reais do parágrafo.
As coordenadas do parágrafo podem ser mapeadas de forma confiável para pixels na imagem exportada?
Sim. Converta pontos para pixels usando: pixels = points × (DPI / 72). O resultado depende do DPI escolhido para renderização/exportação.
Como obtenho os parâmetros de formatação “efetiva” do parágrafo, levando em conta a herança de estilos?
Use a effective paragraph formatting data structure; ele retorna os valores finais consolidados para recuos, espaçamento, quebra, RTL e mais.