ゆにゅbの~と

不定期更新

パワーポイントに自動で画像を張り付ける

画像を張り付けるだけなのに、毎回パワーポイントを開いて作業するのは大変なので、パワーポイントでスライドショーを作るのを自動化しました。
ファイル選択画面を出現させて、そこで選択した画像が、スライドに張り付けられます。

ソースコード

from pptx import Presentation
from pptx.util import Cm, Pt
from PIL import Image
import subprocess

# モジュールのインポート
import os, tkinter, tkinter.filedialog, tkinter.messagebox

# ファイル選択ダイアログの表示
root = tkinter.Tk()
root.withdraw()
fTyp = [("","*.jpg"), ("", "*.png")]
iDir = os.path.abspath(os.path.dirname(__file__))

# ここの1行を変更 askopenfilename → askopenfilenames
file = tkinter.filedialog.askopenfilenames(filetypes = fTyp,initialdir = iDir)

#パワーポイントを作成
prs = Presentation("template.pptx")
max_height = Cm(19.05)
max_width = Cm(33.867)
for i in range(len(file)):
    layout = prs.slide_layouts[6] # 6 白紙
    slide = prs.slides.add_slide(layout)
    img = Image.open(file[i])
    if img.width / img.height > 16 / 9:
        pic = slide.shapes.add_picture(file[i], 0, 0, width = max_width)
    else:
        pic = slide.shapes.add_picture(file[i], 0, 0, height = max_height)

prs.save("a.pptx")
PPTX_PATH = r"C:\Program Files\Microsoft Office\root\Office16\POWERPNT.EXE"
subprocess.Popen([PPTX_PATH, r"a.pptx"])

あらかじめtemplate.pptxを作成し、このファイルと同じフォルダに入れておく必要があります

template.pptxは、新しいプレゼンテーションをそのまま名前を付けて保存すればよいです。

開発環境

Windows10 64bit
python 3.7.9
python-pptx 0.6.18
pyinstaller 4.0

説明

ファイル選択画面は、
Python:処理ファイルをGUIから選択する方法 - Qiita
こちらのサイトを参考に、jpgとpngを選択できるようにしました。

写真のサイズは、縦長か横長か判定して、スライド(16:9)にフィットするようにしました。 中央寄せではなく、左寄せにしています。

仕上げに、pyinstallerでexe化すると便利です。

参考にしたサイト

qiita.com

techacademy.jp