午後から→オーバークロック

駆け出しハッカー()によるプログラミング・サービス開発備忘録。

PowerPointの中身を直接編集してみる

ちょっとやりたいことがあってパワポのマクロを組もうと思ったのですが、
マクロのやり方調べるのも面倒だなと思って直接編集しようとしてみました。

pptxファイルの解凍

pptxファイルは要するにzipアーカイブなので、
拡張子をzipに変えると解凍できます。

f:id:nemupm:20141008210057p:plain

解凍すると分かりますが、図のようにxmlファイルで主に構成されてます。

diffで解析

どうやっていじれば好きなように改造出来るかこのままだと分からないので、
何も無いスライド(raw.pptx)と、変更を加えたスライド(modified.pptx)を解凍したディレクトリをdiffで差分解析します。

$ diff -r raw modified
diff -r raw/docProps/app.xml modified/docProps/app.xml
<差分>
...

こんな感じで、差があったファイルとその内容を羅列してくれます。
結構色々あって面倒そうですが、とりあえずslide1.xmlが1枚目のスライドに対応しているみたいなので、差分を見ながらmodifiedの方のslide1.xmlを編集してみます。

pptxファイルを復元

編集し終わったら、modifiedを圧縮して、pptxファイルに復元します。
このとき、modifiedディレクトリでは無く、modifiedディレクトリ以下にあるファイル群をまとめて圧縮してください(冷静に考えたら当然なんですが、僕はここで最初詰まってしまい、復元したpptxファイルが壊れていると何回も言われました。)

$ zip -r modified.zip *

あとは拡張子を変えてクリックするだけですが…、ここでやっぱり壊れてると言われてしまいました。

f:id:nemupm:20141008212236p:plain

一応ここで修正を押す事で一旦開く事は出来ましたが、
上書き保存して開き直すと、また同じダイアログが出てしまいました。

素直にあきらめてマクロ組もうかな…