Python パワーポイント 言語 & フレームワーク

【python-pptx】パワーポイントを自動出力する

python-pptxとは?

python-pptxはPowerPointの自動化ができるPythonライブラリです。公式ドキュメントはこちら

どんな場面で役立つのか?

私の場合、Youtube動画用のスライド作成を自動化したいなと思い使ってみました。台本CSVを読み込んでスライド作成→Canvaにアップしてフォントを変更したりするフローで使用しています(一応CanvaにもCSVを読み込んでスライドを一括生成するアプリがあるのですが、有料プランじゃないと使えないようです)

なのでパワポでスライドを作成してアップロードする方法を考えました。これならCanva無料プランのままCSVを元にスライドを自動作成できます。

現状「スライド追加」と「テキストボックス追加」という初歩的な機能しか使ってません。がんばればもっと複雑なスライドを作れそうな気がします。仕事でも、資料作成をある程度自動化できると思われます(ただデザインの調整とかは人の手が必要)

python-pptxのインストール

  • pip install python-pptx を実行するのみ

基本操作

サンプルコード

こちらは公式ドキュメントに載ってるサンプルコードです。これを実行するとパワポが出力されます。

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]

title.text = "Hello, World!"
subtitle.text = "python-pptx was here!"

prs.save('test.pptx')

スライドの作成

Presentationオブジェクトをインスタンス化し、slides.add_slide()でスライドを作成する。
パワポの「新しいスライド」にあるデザインをprs.slide_layouts[]で指定できる。「白紙」は「6」

prs = Presentation()
# スライド作成
slide = prs.slides.add_slide(prs.slide_layouts[6])

テキストボックスを追加する

  • ポイント単位を指定するためのPtクラスがあるのでインポートする
  • add_textboxでテキストボックスを作成し、textで文字をセットできる
  • 文字のサイズはfit_text()の引数max_sizeにint型で指定できる
from pptx.util import Pt
# テキストボックス作成 add_textbox(left: Length, top: Length, width: Length, height: Length)
text_box = slide.shapes.add_textbox(Pt(96), Pt(27), Pt(768), Pt(54))
text_box.text = "hello"
text_box.text_frame.fit_text(max_size=35)

現状これ以外の機能は使ってないので、なにかあれば随時追加していきます。

-Python, パワーポイント, 言語 & フレームワーク