Pythonでプレゼンテーションのテキストボックスを管理する
概要
スライド上のテキストは通常、テキストボックスまたは図形に存在します。そのため、スライドにテキストを追加するには、テキストボックスを追加し、そのテキストボックス内にテキストを配置する必要があります。Aspose.Slides for Python は、テキストを含む図形を追加できるAutoShapeクラスを提供します。
情報
Aspose.Slides はShapeクラスも提供します。ただし、すべての図形がテキストを保持できるわけではありません。注意
したがって、テキストを追加したい図形を扱う場合は、その図形がAutoShapeクラスにキャストされているか確認したいでしょう。その場合のみ、AutoShapeのプロパティであるTextFrameを使用できます。このページのUpdate Textセクションをご覧ください。スライド上にテキスト ボックスを作成する
- Presentationクラスのインスタンスを作成します。
- 最初のスライドへの参照を取得します。
- スライド上の目的の位置に
ShapeType.RECTANGLEを指定してAutoShapeを追加します。 - 図形のTextFrameにテキストを設定します。
- プレゼンテーションをPPTXファイルとして保存します。
以下の Python サンプルがこれらの手順を実装しています。
import aspose.slides as slides
# Presentation クラスのインスタンスを作成します。
with slides.Presentation() as presentation:
# プレゼンテーションの最初のスライドを取得します。
slide = presentation.slides[0]
# タイプ RECTANGLE の AutoShape を追加します。
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)
shape.text_frame.text = "Aspose TextBox"
# プレゼンテーションをディスクに保存します。
presentation.save("TextBox.pptx", slides.export.SaveFormat.PPTX)
図形がテキスト ボックスかどうかを確認する
Aspose.Slides は、AutoShapeクラスのis_text_boxプロパティを提供し、図形がテキスト ボックスかどうかを判定できます。

この Python サンプルは、図形がテキスト ボックスとして作成されたかどうかを確認する方法を示します。
import aspose.slides as slides
with slides.Presentation("Sample.pptx") as presentation:
for slide in presentation.slides:
for shape in slide.shapes:
if isinstance(shape, slides.AutoShape):
print("shape is a text box" if shape.is_text_box else "shape is not a text box")
注意: ShapeCollectionクラスを使用してAutoShapeを追加した場合、図形のis_text_boxプロパティはFalseを返します。ただし、add_text_frameメソッドでテキストを追加するか、textプロパティを設定すると、is_text_boxはTrueを返します。
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape1 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 10, 100, 40)
# shape1.is_text_box は false
shape1.add_text_frame("shape 1")
# shape1.is_text_box は true
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
# shape2.is_text_box は false
shape2.text_frame.text = "shape 2"
# shape2.is_text_box は true
shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
# shape3.is_text_box は false
shape3.add_text_frame("")
# shape3.is_text_box は false
shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
# shape4.is_text_box は false
shape4.text_frame.text = ""
# shape4.is_text_box は false
テキスト ボックスに列を追加する
Aspose.Slides は、TextFrameFormatクラスのcolumn_countとcolumn_spacingプロパティを提供し、テキスト ボックスに列を追加できます。列数を指定し、列間の間隔(ポイント単位)を設定できます。
以下の Python コードはこの操作を示しています。
import aspose.slides as slides
with slides.Presentation() as presentation:
# プレゼンテーションの最初のスライドを取得します。
slide = presentation.slides[0]
# タイプ RECTANGLE の AutoShape を追加します。
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
# 四角形に TextFrame を追加します。
shape.add_text_frame("All of these columns are confined to a single text container—" +
"you can add or delete text, and any new or remaining text automatically reflows " +
"within the container. You cannot have text flow from one container to another, " +
"though—PowerPoint’s column options for text are limited!")
# TextFrame のテキスト形式を取得します。
format = shape.text_frame.text_frame_format
# TextFrame の列数を指定します。
format.column_count = 3
# 列間の間隔を指定します。
format.column_spacing = 10
# プレゼンテーションを保存します。
presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)
テキストを更新する
Aspose.Slides を使用すると、単一のテキスト ボックスまたはプレゼンテーション全体のテキストを更新できます。
以下の Python サンプルは、プレゼンテーション内のすべてのテキストを更新する方法を示しています。
import aspose.slides as slides
with slides.Presentation("Sample.pptx") as presentation:
for slide in presentation.slides:
for shape in slide.shapes:
if type(shape) is slides.AutoShape:
for paragraph in shape.text_frame.paragraphs:
for portion in paragraph.portions:
portion.text = portion.text.replace("years", "months")
portion.portion_format.font_bold = 1
# 修正したプレゼンテーションを保存します。
presentation.save("TextChanged.pptx", slides.export.SaveFormat.PPTX)
ハイパーリンク付きテキスト ボックスを追加する
テキスト ボックスにリンクを挿入できます。テキスト ボックスをクリックすると、リンクが開きます。
テキスト ボックスにハイパーリンクを含めるには、次の手順に従います。
- Presentationクラスのインスタンスを作成します。
- 最初のスライドへの参照を取得します。
- スライド上の目的の位置に
ShapeType.RECTANGLEを指定してAutoShapeを追加します。 - 図形のTextFrameにテキストを設定します。
- HyperlinkManagerへの参照を取得します。
hyperlink_managerプロパティを使用して外部クリック ハイパーリンクを設定します。- プレゼンテーションをPPTXファイルとして保存します。
この Python サンプルは、スライドにハイパーリンク付きテキスト ボックスを追加する方法を示しています。
import aspose.slides as slides
# Presentation クラスのインスタンスを作成します。
with slides.Presentation() as presentation:
# プレゼンテーションの最初のスライドを取得します。
slide = presentation.slides[0]
# タイプ RECTANGLE の AutoShape を追加します。
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)
text_portion = shape.text_frame.paragraphs[0].portions[0]
# フレームにテキストを追加します。
text_portion.text = "Aspose.Slides"
# ポーションのテキストにハイパーリンクを設定します。
hyperlink_manager = text_portion.portion_format.hyperlink_manager
hyperlink_manager.set_external_hyperlink_click("http://www.aspose.com")
# プレゼンテーションを PPTX ファイルとして保存します。
presentation.save("Hyperlink.pptx", slides.export.SaveFormat.PPTX)
FAQ
マスタースライドで作業するときのテキスト ボックスとテキスト プレースホルダーの違いは何ですか?
placeholderはmasterからスタイル/位置を継承し、layoutsでオーバーライドできます。一方、通常のテキスト ボックスは特定のスライド上の独立したオブジェクトで、レイアウトを切り替えても変更されません。
チャート、テーブル、SmartArt 内のテキストに触れずに、プレゼンテーション全体で大量のテキスト置換を実行するにはどうすればよいですか?
テキスト フレームを持つオート シェイプに対してだけ繰り返し処理を行い、埋め込みオブジェクト(charts、tables、SmartArt)は別々にコレクションを走査するか、それらのオブジェクト タイプをスキップして除外してください。