LoginSignup
12
13

More than 3 years have passed since last update.

pythonで画像をパワポ資料に自動で貼り付ける +α

Last updated at Posted at 2020-01-03

はじめに

パワポのスライド1枚に1枚ずつ画像を貼り付けていって作業手順書にする、みたいなのありますよね。超絶単純作業なのになかなか時間かかるやつ。
単純な繰り返し作業なので、ネット上に転がっていたコードを用いて自動化したいと思います。

目標実装機能

少なくとも必ず実装したい機能

スライド1枚につき1枚の画像が貼り付けられたパワポの資料を自動で作成すること。

願わくば

  • 表紙の追加
  • テキストボックスの追加
  • 画像を貼り付けないスライドの挿入

自動作成したいスライド

私の好きな某アニメの登場人物紹介スライドを作成したいと思っています。
構成は、
表紙→画像→キャラ説明→画像→キャラ説明→…(以下、画像とキャラ説明を交互に)
としています。
今回作成したコードを用いて自動作成したスライドは、最後にご紹介します。

環境

python3.7.2
Windows10

コード

ppt.py
import pptx
from pptx.util import Inches
from pptx import Presentation
from glob import glob

ppt = Presentation()
width = ppt.slide_width
height = ppt.slide_height

#使用するスライドの種類
title_slide_layout = ppt.slide_layouts[0] #Title Slideの作成
bullet_slide_layout = ppt.slide_layouts[1] #Title and Contentの作成
blank_slide_layout = ppt.slide_layouts[6] #Blankの作成

#Title Slide
slide = ppt.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]

title.text = "○○ Description"
subtitle.text = "kokoro pyonpyon"

#画像をBlankに張り付ける準備
fnms = glob('figures/*.JPG')

tx_left = tx_top = tx_width = tx_height = Inches(1)

i = 1

for fnm in fnms:
    #画像をBlankに張る
    slide_picture = ppt.slides.add_slide(blank_slide_layout)
    pic = slide_picture.shapes.add_picture(fnm, width/4,height/2, width/2, height/2)

    #ついでに空きスペースにテキストボックスを挿入する
    txBox = slide_picture.shapes.add_textbox(tx_left, tx_top, tx_width*15, tx_height)
    tB = txBox.text_frame
    tB.text = "Name: "

    #Title and Contentの作成
    slide_description = ppt.slides.add_slide(bullet_slide_layout)
    shapes = slide_description.shapes

    title_shape = shapes.title
    body_shape = shapes.placeholders[1]

    #Title and Contentにタイトルとテキストを書き込む
    title_shape.text = 'Character description ' + str(i)
    tf = body_shape.text_frame
    tf.text = 'She works at '

    i += 1

ppt.save('figure.pptx')

解説

importするライブラリ

pptx

パワーポイントのファイル(.pptx)を作成、アップデートするPythonライブラリ。
典型的な用途として、データベースからパワーポイント資料をカスタマイズした状態で作成したり、webアプリ上のリンクをクリックすることでダウンロードできるようにしたりすることが挙げられる。業務管理システム上の情報をまとめた、エンジニアリングステータスレポートを報告可能な形式で自動作成させることもできる。プレゼンテーションのライブラリーを一括でアップデートしたり、いちいち取り組むのは飽き飽きするような、一枚か二枚のスライドの作成を自動で行ったりすることもある。

この資料の一部を直訳。)

まあこれを簡単にわかっていれば事足ります。多分。
各コマンドの簡単な意味は、コードの中でコメントしています。

このコードを用いてできたスライド

pptx_title.PNG
pptx_picture.PNG
pptx_description.PNG

細かい部分はスライドごとに手動で入力しましょう。
大半の部分は自動で作成されているので、かなり省力化されているはずです。

おまけ

ライブラリのインストールの仕方。

$ pip install numpy

みたいな。なんとなくnumpyにしました。

参考資料

python-pptx
Getting Started
Pythonで画像ファイルをパワポに貼る

12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13