仕事で何かと使うことの多いパワーポイント、でも意外とスライドを作るのって手間がかかりますよね。
ルーチンの資料作りは自動化したいということで、pythonでパワーポイントを自動生成する方法をまとめてみました。
Pythonのpython-pptx
モジュールを使用して、複数の画像ファイルをPowerPointファイルに貼り付けるプログラムを作ってみます。プログラムは以下の手順に従います。
- pptxファイルを作成します。
- 画像ファイルをpptxファイルに貼り付けます。
from pptx import Presentation from pptx.util import Inches # pptxファイルを作成する prs = Presentation() slide_layout = prs.slide_layouts[6] # 画像ファイルをpptxファイルに貼り付ける for i in range(1, 4): slide = prs.slides.add_slide(slide_layout) img_path = f'img_{i}.png' left = Inches(1) top = Inches(1) width = Inches(5) slide.shapes.add_picture(img_path, left, top, width) # pptxファイルを保存する prs.save('example.pptx')
上記の例では、python-pptx
モジュールを使用して、Presentation()
オブジェクトを作成し、add_slide()
メソッドで新しいスライドを作成しています。
次に、add_picture()
メソッドを使用して、指定された画像ファイルをスライドに貼り付けています。
最後に、save()
メソッドを使用して、pptxファイルを保存しています。
これで画像ファイルを1ページに一つ貼り付けるプログラムが完成しました。
ここで、slide_layoutsはスライドのレイアウトを指定しており、番号とレイアウトは次のようになっています。
- 0: タイトルスライド
- 1: タイトルとコンテンツ
- 2: タイトルと2つのコンテンツ
- 3: タイトルと3つのコンテンツ
- 4: タイトルと4つのコンテンツ
- 5: タイトル、コンテンツ、および図表
- 6: 空のスライド
- 7: セクションヘッダー
- 8: 2つのテキストのみ
これらの番号に対応するスライドのレイアウトは、PowerPointのスライドマスターから確認することができます。
また、一つのスライドに複数の画像を貼り付ける場合、以下のようにSlide
オブジェクトのshapes
属性を用いて、各画像を配置します。
slide = prs.slides.add_slide(prs.slide_layouts[0]) # スライドを追加 pic1 = slide.shapes.add_picture('image1.jpg', x, y, width, height) # 画像1を追加 pic2 = slide.shapes.add_picture('image2.jpg', x, y, width, height) # 画像2を追加 ...
ここで、x
、y
、width
、height
はそれぞれ、画像の左上隅のx座標、y座標、幅、高さを指定します。例えば、以下のようにして複数の画像を追加することができます。
slide = prs.slides.add_slide(prs.slide_layouts[0]) # スライドを追加 pic1 = slide.shapes.add_picture('image1.jpg', 0, 0, 500, 500) # 画像1を追加 pic2 = slide.shapes.add_picture('image2.jpg', 550, 0, 500, 500) # 画像2を追加 pic3 = slide.shapes.add_picture('image3.jpg', 0, 550, 500, 500) # 画像3を追加 pic4 = slide.shapes.add_picture('image4.jpg', 550, 550, 500, 500) # 画像4を追加