Officeドキュメントを自動化計画 #4 PPT「画像差し込み操作」

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

Officeドキュメントの画像を新たに差し込んだり、入れ替えたりできるするのは、非常に効率的な資料更新ができる事を意味します。
 

PowerPointにおいては、プレゼンテーションを行う直前に、中で使っているグラフ画像を最新版に差し替えたい時に、アプリを立ち上げて作業をするのは、非常に腰が折れる作業だったり、ちょっとした失敗により、プレゼン資料全体がオジャンになってしまうなんてケースもあるあるでしょう。
 

そんな時に、エンジニアであれば、コマンド操作で対応できたり、画像差し替えに特価したWEBサービスなどがあれば便利だと思いませんか?
 

そんなサービスを作るべく、PowerPointドキュメントの技術仕様を検証してみたいと思います。

画像を挿入したpptxドキュメントを作成

sample_img
 


 

検証素材として、画像を2ファイル挿入したpptxドキュメントを構築しておきました。
 

このpptxを解凍してみると以下のファイル群が現れます。
 

 

注目するポイントは、ppt/フォルダの下に、前回までのデータでは現れなかった「media」というフォルダが作成されています。
 

その中に、アップロードした2ファイルが格納されているので、pptxから画像を取り出したい時は、このディレクトリから抜き出すことが可能です。
 

以前にブログで書いた、圧縮データからimgファイルを直接抜き出す方法で取り出せそうですね。
 

http://wordpress.ideacompo.com/?p=12426
 

ただし、挿入したファイル名とは違っているので、ファイル名を知りたい場合は、xmlを調査しないといけません。

データ構造調査

今回は、PowerPointドキュメントの第2スライドに2つの画像をつけたので、以下の2ファイルを確認します。
 

ppt/slides/slide2.xml
ppt/slides/_rels/slide2.xml.rels

 

拡張子が”xml”が、表示データで、”rels”が、このスライドで扱うファイル一覧になるようです。
 

 

内容が分かり辛いので、必要箇所だけ抜き出したのが以下の通り
 

 

“p:spTree/p:pic”というタグ階層が画像エリアのようです。
 

“p:cNvPr”に画像ファイル名。
 

“a:blip”に、下記の設定ファイルで記されたファイルIDが書かれています。
 

“p:spPr”は、画像を表示する、サイズや形などの詳細が書かれています。
 

探してみたら、MSのこのページに、仕様の説明がされていましたね。
 

 

このファイルは、スライドに関するファイルの一覧が記されています。
 

“Relationship”タグにスライドのxmlと、画像が2つ登録されているのが見て分かります。
 

画像ファイルを1つ追加する実験

適当な画像ファイルを付け足してみましょう。
 


 

この画像をppt/media/にコピーして、ppt/slides/_rels/slide2.xml.relsに以下の1行を途中に追加します。
 

 

ppy/slides/slide2.xmlにも、以下を追記してみます。(2つ目の画像タグのすぐ下)
 

 

それをサーバーコマンドで圧縮処理
 

 


 

見事に画像の挿入に成功しました。
 

ちなみに、たくさん書かれていたタグをなんとなくいらないと思って消してみたら、PPTエラーが表示されて、画像が正常に挿入できなかったので、p:pic構成は重要ということがわかりました。
 

x,yはスライド内の座標で、cx,cyは、サイズというのは分かりましたが、単位がいまいち不明なので、この辺はやりながら感覚を掴んでいくのがいいでしょう。
 

とりあえず、画像の追加、削除、修正、座標変更、サイズ変更などが分かってきたので、次は、表についての調査を行いたいと思います。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です