「python pptx タイトル左寄せ」
といった検索キーワードで、アクセスがありました。
python-pptxを使ってタイトルプレースホルダーを左揃えにするには、どのようなコードを書けばいいのかを探していらしたのでしょうか。
基本的にはスライドマスターで設定すべきだと思いますが、さまざまな既存のプレゼンテーションファイルからコピー&ペーストを繰り返して作成したような場合に、各スライドで設定してしまうのも現実的な選択肢として、あるだろうと感じます。
タイトルプレースホルダーを左揃えにするサンプル
以下のスクリプトを実行すると、Cドライブtempフォルダーに存在するorg.pptxの、全スライドのタイトルプレースホルダーが左揃えに設定されたnew.pptxが作成されます。
from pptx.enum.text import PP_ALIGN
prs = pptx.Presentation(r'C:\temp\org.pptx')
for sld in prs.slides:
if sld.shapes.title:
sld.shapes.title.text_frame.paragraphs[0].alignment = PP_ALIGN.LEFT
サンプルスクリプトで行っている処理について
Cドライブtempフォルダーに存在するorg.pptxを開いて、
prs = pptx.Presentation(r'C:\temp\org.pptx')
org.pptx内の全スライドに対してfor文を回して、
for sld in prs.slides:
スライドにタイトルプレースホルダーがあるときに、
if sld.shapes.title:
左揃えに設定して、
sld.shapes.title.text_frame.paragraphs[0].alignment = PP_ALIGN.LEFT
new.pptxとして保存しています。
prs.save(r'C:\temp\new.pptx')
python-pptxでtitle属性はshapesオブジェクトにのみ存在
PowerPoint VBAの場合、拙著『いちばんやさしいPowerPoint VBAの教本』のChapter 7でも解説しているとおり、PlaceholdersプロパティもTitleプロパティもShapesコレクションに用意されています。
これに対しpython-pptxの場合、placeholders属性はslideとshapesに、title属性はshapesにのみ用意されています。私個人としては、placeholdersがslideにあるのなら、titleもslideにあるほうが良かったように感じています。
>>>
>>> dir(sld)
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '_background', '_element', '_part', '_placeholders', '_shapes', 'background', 'element', 'follow_master_background', 'has_notes_slide', 'name', 'notes_slide', 'part', 'placeholders', 'shapes', 'slide_id', 'slide_layout']
>>>
>>> dir(sld.shapes)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '__weakref__', '_add_chart_graphicFrame', '_add_cxnSp', '_add_graphicFrame_containing_table', '_add_pic_from_image_part', '_add_sp', '_add_textbox_sp', '_add_video_timing', '_cached_max_shape_id', '_element', '_grpSp', '_is_member_elm', '_iter_member_elms', '_next_ph_name', '_next_shape_id', '_parent', '_recalculate_extents', '_shape_factory', '_spTree', 'add_chart', 'add_connector', 'add_group_shape', 'add_movie', 'add_picture', 'add_shape', 'add_table', 'add_textbox', 'build_freeform', 'clone_layout_placeholders', 'clone_placeholder', 'element', 'index', 'parent', 'part', 'ph_basename', 'placeholders', 'title', 'turbo_add_enabled']
- Newer:SelectRow・SelectColumnは表内でのみ有効
- Older:InlineShapeがあるかを判定する
Home » Python » python-pptxの使い方 » python-pptxでタイトルプレースホルダーを左揃えに