在 PHP 中获取演示文稿的文本片段边界
Contents
[
Hide
]
概述
文本片段表示段落中一个特定的文本碎片,并允许您独立于周围内容对该碎片进行操作。在 Aspose.Slides 中,当您需要获取文本碎片的边界、仅对段落的一部分应用格式,或在更细粒度层面控制文本行为时,可使用片段。
本文展示如何使用Portion::getRect获取文本片段的边界矩形。它还展示如何使用Portion::getCoordinates获取文本片段起始位置的坐标。此外,本文还强调了常见的片段相关场景,如为单个文本碎片应用超链接、了解通过片段、段落、文本框和主题继承的格式解析方式,以及处理指定字体不可用的情况。
获取文本片段的边界
使用Portion::getRect检索文本片段的边界矩形:
$presentation = new Presentation("Shapes.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->get_Item(0);
foreach ($shape->getTextFrame()->getParagraphs() as $paragraph) {
foreach ($paragraph->getPortions() as $portion) {
$rectangle = $portion->getRect();
$rectangleX = java_values($rectangle->getX());
$rectangleY = java_values($rectangle->getY());
$rectangleWidth = java_values($rectangle->getWidth());
$rectangleHeight = java_values($rectangle->getHeight());
echo("X = " . $rectangleX . "; Y = " . $rectangleY . "; Width = " . $rectangleWidth . "; Height = " . $rectangleHeight);
}
}
} finally {
$presentation->dispose();
}
获取文本片段的坐标
使用Portion::getCoordinates检索文本片段起始位置的坐标:
$presentation = new Presentation("Shapes.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->get_Item(0);
foreach ($shape->getTextFrame()->getParagraphs() as $paragraph) {
foreach ($paragraph->getPortions() as $portion) {
$point = $portion->getCoordinates();
$pointX = java_values($point->getX());
$pointY = java_values($point->getY());
echo("X = " . $pointX . "; Y = " . $pointY);
}
}
} finally {
$presentation->dispose();
}
常见问题
我可以只给单段落中的部分文本应用超链接吗?
可以,您可以assign a hyperlink到单独的片段;仅该碎片可点击,整段不会受影响。
样式继承是如何工作的:片段会覆盖哪些属性,哪些属性来自段落或文本框?
片段级别的属性具有最高优先级。如果在Portion上未设置属性,Aspose.Slides 会从Paragraph获取;如果段落也未设置,则使用TextFrame或theme的样式。
如果片段指定的字体在目标机器或服务器上缺失会怎样?
会应用Font substitution rules。文本可能重新流动:度量、连字符和宽度可能变化,这会影响精确定位。
我能单独为片段设置文字填充透明度或渐变,而不影响段落的其他部分吗?
可以,Portion级别的文字颜色、填充和透明度可以与相邻碎片不同。