PHP でプレゼンテーションからテキスト部分の境界を取得する
概要
テキスト部分は段落内の特定の文字列を表し、周囲のコンテンツとは独立してその断片を操作できるようにします。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();
}
FAQ
単一の段落内のテキストの一部だけにハイパーリンクを適用できますか?
はい、個別の部分にハイパーリンクを割り当てることができます。その断片だけがクリック可能になり、段落全体はクリックできません。
スタイル継承はどのように機能しますか。部分が上書きするものと、段落やテキストフレームから取得されるものは何ですか?
部分レベルのプロパティが最も高い優先順位を持ちます。プロパティがPortionで設定されていない場合、Aspose.Slides はParagraphから取得します。そちらでも設定されていない場合、Aspose.Slides はTextFrameまたはthemeのスタイルを使用します。
部分に指定されたフォントが対象のマシンまたはサーバーに存在しない場合はどうなりますか?
フォント置換ルールが適用されます。テキストは再配置される可能性があり、メトリクス、ハイフネーション、幅が変わるため、正確な配置が必要な場合に影響します。
段落全体とは別に、部分固有のテキスト塗りつぶしの透明度やグラデーションを設定できますか?
はい、Portionレベルでテキストの色、塗りつぶし、透明度を隣接する断片と異なる設定にできます。