
順番
📌 全体の目的
- PowerPoint の A4 サイズスライドを 8つの枠(2列×4行)に分割し、
- 各枠の中央に「共通伝票」というテキストを大きく表示するテンプレートを作成する。
🔍 各行の説明
PowerPointを操作するためのライブラリの読み込み
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.dml.color import RGBColor
Presentation
: PowerPointファイルを作成・編集するための基本クラス。Inches
,Pt
: 単位変換用。インチとポイント(フォントサイズ用)を指定できる。PP_ALIGN
: テキストの横方向の位置合わせ(中央揃えなど)を指定するため。MSO_ANCHOR
: テキストの縦方向の位置合わせ(中央揃えなど)を指定するため。RGBColor
:今回は使っていませんが、文字や図形の色を設定したいときに使用します。
PowerPointプレゼンテーションを新規作成
prs = Presentation()
- 空のプレゼンテーション(スライドなし)を作成。
スライドの用紙サイズをA4に設定(縦向き)
prs.slide_width = Inches(8.27)
prs.slide_height = Inches(11.69)
- A4の縦向きのサイズ(8.27インチ × 11.69インチ)を指定しています。
- 1インチ = 約2.54cm
スライドを1枚追加(空白レイアウト)
slide = prs.slides.add_slide(prs.slide_layouts[5])
slide_layouts[5]
は「空白レイアウト」です。何も配置されていない状態。
各テキストボックスに表示するテキスト内容
text = "共通伝票"
- 各区画に表示するテキスト。ここでは「共通伝票」。
レイアウト情報の設定
num_sections = 8
sections_per_row = 2
num_sections
: 作る区画の数。8つに分けます。sections_per_row
: 1行に配置する区画の数(列数)。ここでは2列。
各区画の大きさ(高さと幅)を計算
section_height = prs.slide_height.inches / (num_sections / sections_per_row)
section_width = prs.slide_width.inches / sections_per_row
- 例えば
8 ÷ 2 = 4
行になるので、スライドの高さを4で割って1区画の高さを出しています。 - スライドの幅を2で割って1区画の横幅(幅)を計算。
各区画にテキストボックスを配置
for i in range(num_sections):
row = i // sections_per_row
col = i % sections_per_row
i
は0~7までのループで、区画の番号。row
,col
を使って行列を算出。- 例:i=3 のとき →
row=1
,col=1
(2行目の右側)
テキストボックスの配置場所(x, y)を計算
x = section_width * col
y = section_height * row
- 左上基準で、xとyの位置を決める。
テキストボックスを作成し、縦・横中央揃え+テキスト書式を設定
textbox = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(section_width), Inches(section_height))
text_frame = textbox.text_frame
text_frame.clear()
text_frame.vertical_anchor = MSO_ANCHOR.MIDDLE
add_textbox()
で指定した位置とサイズにテキストボックスを追加。.vertical_anchor = MSO_ANCHOR.MIDDLE
:テキストを縦方向で中央揃え。
p = text_frame.paragraphs[0]
p.alignment = PP_ALIGN.CENTER
- テキストの段落(paragraph)を取り出し、
.alignment = PP_ALIGN.CENTER
:横方向の中央揃え。
run = p.add_run()
run.text = text
run.font.size = Pt(48)
run.font.bold = True
run
は文字のスタイル設定(太字・フォントサイズなど)を担当。- テキストを設定し、フォントサイズ48ptかつ太字にしています。
PowerPointファイルとして保存
prs.save('shared_voucher_template_centered.pptx')
shared_voucher_template_centered.pptx
というファイル名で保存。
確認用の終了メッセージ
print("OK")
input()
- 実行後に「OK」と表示し、
input()
でEnterキー待ちにしてウィンドウがすぐ閉じないようにしています。
✅ 実行結果イメージ
- 1ページのA4スライドに、2列×4行の計8個のボックス。
- 各ボックスのど真ん中に「共通伝票」と表示。
- 印刷して切り分けて使うことも可能。