pptx_notes_word2.py ドキュメント

概要

pptx_notes_word2.py は、PowerPointファイル(.pptx)のスピーカーノートと、外部のテキストベースのドキュメントファイル(.docx、.txt、.md)との間で情報を相互変換するためのユーティリティスクリプトです。ノートのテキストをスライドの下部に字幕として追加する機能や、原稿の行ごとにスライドを自動複製して分割配置する機能も備えています。

依存関係

本プログラムの実行には、以下の外部ライブラリが必要です。

  • python-pptx (必須: PowerPointファイルの解析・編集に使用)

  • python-docx (オプション: .docx ファイルを入出力として使用する場合のみ必要)

機能

  • ノートの書き込み (word2pptx / notes2pptx) 外部ファイルに記述された原稿(およびナレーション)を読み込み、対応するスライド番号のスピーカーノートとして上書きします。

  • ノートの抽出 (pptx2word / pptx2notes) PowerPointファイル内のすべてのスライドのスピーカーノートを抽出し、外部ファイルに書き出します。

  • 字幕追加機能 スピーカーノート(原稿)のテキストを、指定されたフォント・色・サイズの字幕テキストボックスとして各スライドの下部に自動挿入します。

  • スライドの行単位分割 ノートのテキストを行単位で分割し、内容が存在する行の数に合わせてスライド自体を複製し、1行ずつ異なるスライドとして割り当てます。

入出力仕様

入出力されるテキスト・Markdown・Wordファイルは、以下のルールに従ってスライド番号が認識・処理されます。

  • スライドヘッダーの認識パターン 行が # スライド N、# Slide N、あるいは # N(N は数値)という形式である場合、その行以降のテキストが該当スライドのノートとして解釈されます。

  • サポートされる拡張子 入力・出力ともに .docx、.txt、.md が利用可能です。

  • ナレーションの分離 原稿用ファイルとは別に、位置引数の2つ目としてナレーション用ファイルを読み込むことができます。これらは内部で結合され、スピーカーノートには特定のセパレーター文字列(--- と (( ... )))を用いて書き込まれます。

  • 話者パターンの認識 テキスト行に 話者名, テキスト の形式が含まれており、話者名がプログラム内部の固定リスト(四国めたん、ずんだもん)に合致する場合、字幕出力時に 話者名:テキスト の形式に自動整形されます。異なる話者が原稿とナレーションで指定されている場合は、標準エラー出力に警告が表示されます。

コマンドラインオプション

スクリプト実行時に指定可能な主要オプションは以下の通りです。

  • --mode : 必須。変換の方向を指定します(word2pptx, pptx2word, notes2pptx, pptx2notes のいずれか)。

  • 位置引数 FILES : 原稿ファイル。2つ目を指定した場合はナレーションファイルとして扱われます。

  • -p, --pptx : 必須。対象となるPowerPointファイル(.pptx)。

  • -w, --word, --notes : 原稿ファイルを指定する代替オプション。

  • --split_lines : 1 を指定すると、スライドを非空行ごとに複製・分割します(デフォルト: 0)。

  • --add_subtitles : 1 を指定すると、原稿テキストを字幕枠としてスライドに描画します(デフォルト: 0)。

  • --subtitle_bottom_margin : スライド下端から字幕枠までの距離をポイントで指定(デフォルト: 20)。

  • --subtitle_box_margin : 字幕枠の左右マージンをポイントで指定(デフォルト: 50)。

  • --subtitle_box_height : 字幕枠の高さをポイントで指定(デフォルト: 60)。

  • --subtitle_font_name : 字幕のフォント名を指定(デフォルト: メイリオ)。

  • --subtitle_font_size : 字幕のフォントサイズをポイントで指定(デフォルト: 12)。

  • --subtitle_font_color : 字幕のフォント色を16進数RGBで指定(デフォルト: 884444)。

  • --subtitle_bgcolor : 字幕枠の背景色を16進数RGBで指定(デフォルト: 00DDDD)。

  • -o, --output : 書き出し先の .pptx ファイル。指定がない場合は入力ファイルが上書きされます。

実行例

MarkdownファイルからPowerPointファイルにノートを書き込み、別ファイルとして出力する例:

python pptx_notes_word2.py --mode word2pptx --pptx presentation.pptx -o presentation_updated.pptx notes.md

PowerPointファイルからすべてのノートを抽出し、Wordファイルにエクスポートする例:

python pptx_notes_word2.py --mode pptx2word --pptx presentation.pptx --word output_notes.docx

原稿ファイルとナレーションファイルを同時に読み込み、字幕を追加しながらPowerPointのノートを更新する例:

python pptx_notes_word2.py --mode word2pptx --pptx presentation.pptx --add_subtitles 1 manuscript.md narration.md