在 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();
}
常見問題
我可以只對單一段落中的部分文字套用超連結嗎?
是的,您可以將指派超連結給單一區段;只有該片段會變成可點擊,而不是整個段落。
樣式繼承如何運作:區段會覆寫哪些屬性,哪些會從段落或文字框取得?
區段層級的屬性具有最高優先權。若在Portion上未設定屬性,Aspose.Slides 會從Paragraph取得。若該處仍未設定,則會使用TextFrame或theme的樣式。
如果為區段指定的字型在目標機器或伺服器上不存在,會發生什麼情況?
字型替換規則會生效。文字可能會重新換行:度量、斷字與寬度都可能改變,這對於精確定位很重要。
我可以為區段設定特定的文字填色透明度或漸層,而不影響段落的其他部分嗎?
可以,於Portion層級的文字顏色、填滿與透明度可以與相鄰的片段不同。