Pythonは様々なライブラリを組み合わせて、多様な作業をプログラミングできます。pptxファイル(PowerPointのファイル)の作成も、またできます。python-pptxはこれを実現します。
python-pptx — python-pptx 0.6.17 documentation
何ができるかはpptxファイルの構造を知ると少しわかりやすいです。pptxファイルはその実zipファイルと同じ形式です。pptxをzipに変えると例えば、次の様になります。
解凍に成功しました。pptxファイルとは特定のファイル構造のファイル群を圧縮したzipファイルのことであり、zipファイル⊃pptxファイルとなっているわけです。この中から、どのページに、どのテンプレートが使われて、テンプレート中のある空欄に、何が、どう埋まっているか、が読み取れます。python-pptxではこの構造の指定に従ってページを構成していきます。
テンプレート構造から細かく作っていく方法はGUIからpptxを作る場合、おそらくあまりしないでしょう。必然python-pptxは普段使いからかけ離れた理解の難しいものになります。そういった際にはpython-pptxを用いたhogehogeな関数を作った、というwebページを探すとよいでしょう。わかりやすいです。
python-pptxは例えば、次の様に記述できます。
from pptx import Presentation import datetime from glob import glob from pptx.util import Pt def makeManual(): prs = Presentation('template.pptx') prs = addContentPage( prs, '検索画面使用方法', '上部の検索ボックスに検索対象の語を入力し、検索ボタンを押すことで検索ができます。\nいずれの検索画面でも同様に検索ができます。', [], 'Tests_Browser_TestCase_Admin_Member_SearchTest_testSearchHogeHoge_000.png' ) prs.save('管理者画面操作マニュアル.pptx') # スライドにタイトル、サブタイトル、本文、画像ファイルを追加 def addContentPage(prs, title, subtitle, texts, fn): fnms = glob('%s/%s' % (__screenshots_dir, fn)) # 画像ファイル読み込み slide = prs.slides.add_slide(prs.slide_layouts[1]) # pptxファイルにスライド追加 # slide = addTextToSlide(slide, title, subtitle, texts) # スライドにタイトル、サブタイトル、本文を追加 addPictureToSlide(prs, slide, fnms[0]) # スライドに画像追加 return prs # スライドに画像を追加 def addPictureToSlide(prs, slide, fnm): pic = slide.shapes.add_picture(fnm, 0, 0) # 縦0.8倍。画像の比率変えず base = pic.height pic.height = int(prs.slide_height * 0.7) pic.width = int(pic.width * (pic.height / base)) # 左右中央揃え pic.left = int((prs.slide_width - pic.width) / 2) # 下揃え pic.top = int((prs.slide_height - pic.height)) return slide
上記のコードはtemplate.pptxというテンプレートに従ってpptxファイルオブジェクトを生成。それに画像を追加して保存する、というコードになります。これだけでも画像を更新する度にpythonを走らせるだけでpptxを更新できます。特定の形式のpptxを高頻度で変更する場合、多少わかりにくくともpptx生成をプログラミング化すると作業が大きくはかどります。