Home » Python » python-pptxの使用例とか » python-pptxでタイトルプレースホルダーを左揃えに

python-pptxでタイトルプレースホルダーを左揃えに

動作検証バージョン:64bit Windows 10 Pro + Python 3.8.0 + python-pptx 0.6.18

「python pptx タイトル左寄せ」
といった検索キーワードで、アクセスがありました。

python-pptxを使ってタイトルプレースホルダーを左揃えにするには、どのようなコードを書けばいいのかを探していらしたのでしょうか。

基本的にはスライドマスターで設定すべきだと思いますが、さまざまな既存のプレゼンテーションファイルからコピー&ペーストを繰り返して作成したような場合に、各スライドで設定してしまうのも現実的な選択肢として、あるだろうと感じます。

[スポンサードリンク]

タイトルプレースホルダーを左揃えにするサンプル

以下のスクリプトを実行すると、Cドライブtempフォルダーに存在するorg.pptxの、全スライドのタイトルプレースホルダーが左揃えに設定されたnew.pptxが作成されます。

import 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

prs.save(r'C:\temp\new.pptx')

サンプルスクリプトで行っている処理について

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']

[スポンサードリンク]

Home » Python » python-pptxの使用例とか » python-pptxでタイトルプレースホルダーを左揃えに

TrackBack:0

TrackBack URL

Home » Python » python-pptxの使用例とか » python-pptxでタイトルプレースホルダーを左揃えに

Copyright © インストラクターのネタ帳 All Rights Reserved.

.