Python(Java経由)でプレゼンテーションからテキスト部分の境界を取得

概要

テキストの部分は、段落内の特定のテキストフラグメントを表し、周囲のコンテンツとは別にそのフラグメントを操作できます。Aspose.Slides では、テキストフラグメントの境界を取得したり、段落の一部だけに書式設定を適用したり、テキストの動作をより詳細に制御したりする際に、部分を使用できます。

この記事では、Portion.getRect を使用して部分のバウンディング矩形を取得する方法を示します。また、Portion.getCoordinates を使用して部分の開始座標を取得する方法も示します。さらに、単一のテキストフラグメントにハイパーリンクを適用する、部分、段落、テキストフレーム、テーマの継承を通じて書式設定がどのように解決されるかを理解する、指定されたフォントが利用できない場合の処理など、一般的な部分関連シナリオをハイライトします。

テキスト部分の境界を取得

テキスト部分のバウンディング矩形を取得するには、Portion.getRect を使用します:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("Shapes.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().get_Item(0)

    for paragraph in shape.getTextFrame().getParagraphs():
        for portion in paragraph.getPortions():
            rectangle = portion.getRect()
            print(f"X = {rectangle.x}; Y = {rectangle.y}; Width = {rectangle.width}; Height = {rectangle.height}")
finally:
    presentation.dispose()

テキスト部分の開始座標を取得

テキスト部分の開始座標を取得するには、Portion.getCoordinates を使用します:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("Shapes.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().get_Item(0)

    for paragraph in shape.getTextFrame().getParagraphs():
        for portion in paragraph.getPortions():
            point = portion.getCoordinates()
            print(f"X = {point.x}; Y = {point.y}")
finally:
    presentation.dispose()

よくある質問

単一の段落内のテキストの一部だけにハイパーリンクを適用できますか?

はい、個々の部分に対してハイパーリンクを割り当てことができます。そのフラグメントだけがクリック可能になり、段落全体はクリックできません。

スタイル継承はどのように機能しますか?部分がオーバーライドするものと、段落やテキストフレームから取得されるものは何ですか?

部分レベルのプロパティが最も高い優先順位を持ちます。プロパティがPortionで設定されていない場合、Aspose.Slides はParagraphから取得します。そこでも設定されていなければ、TextFrameまたはtheme のスタイルが使用されます。

部分に指定されたフォントが対象のマシンまたはサーバーに存在しない場合、どうなりますか?

フォント置換ルールが適用されます。テキストは再フローする可能性があり、メトリクス、ハイフネーション、幅が変わることがあり、正確な位置決めに影響します。

段落の他の部分とは別に、部分固有のテキスト塗りつぶしの透明度やグラデーションを設定できますか?

はい、Portionレベルでのテキストカラー、塗りつぶし、透明度は隣接するフラグメントと異なる設定が可能です。