geta1972TweetPocketCheckOfficeドキュメントの画像を新たに差し込んだり、入れ替えたりできるするのは、非常に効率的な資料更新ができる事を意味します。PowerPointにおいては、プレゼンテーションを行う直前に、中で使っているグラフ画像を最新版に差し替えたい時に、アプリを立ち上げて作業をするのは、非常に腰が折れる作業だったり、ちょっとした失敗により、プレゼン資料全体がオジャンになってしまうなんてケースもあるあるでしょう。そんな時に、エンジニアであれば、コマンド操作で対応できたり、画像差し替えに特価したWEBサービスなどがあれば便利だと思いませんか?そんなサービスを作るべく、PowerPointドキュメントの技術仕様を検証してみたいと思います。画像を挿入したpptxドキュメントを作成sample_img検証素材として、画像を2ファイル挿入したpptxドキュメントを構築しておきました。このpptxを解凍してみると以下のファイル群が現れます。pptx_img/pptx_img/pptx_img/[Content_Types].xmlpptx_img/docPropspptx_img/docProps/app.xmlpptx_img/docProps/thumbnail.jpegpptx_img/docProps/core.xmlpptx_img/_relspptx_img/_rels/.relspptx_img/pptpptx_img/ppt/viewProps.xmlpptx_img/ppt/slideLayoutspptx_img/ppt/slideLayouts/slideLayout9.xmlpptx_img/ppt/slideLayouts/slideLayout8.xmlpptx_img/ppt/slideLayouts/_relspptx_img/ppt/slideLayouts/_rels/slideLayout5.xml.relspptx_img/ppt/slideLayouts/_rels/slideLayout4.xml.relspptx_img/ppt/slideLayouts/_rels/slideLayout2.xml.relspptx_img/ppt/slideLayouts/_rels/slideLayout3.xml.relspptx_img/ppt/slideLayouts/_rels/slideLayout8.xml.relspptx_img/ppt/slideLayouts/_rels/slideLayout9.xml.relspptx_img/ppt/slideLayouts/_rels/slideLayout11.xml.relspptx_img/ppt/slideLayouts/_rels/slideLayout10.xml.relspptx_img/ppt/slideLayouts/_rels/slideLayout6.xml.relspptx_img/ppt/slideLayouts/_rels/slideLayout7.xml.relspptx_img/ppt/slideLayouts/_rels/slideLayout1.xml.relspptx_img/ppt/slideLayouts/slideLayout3.xmlpptx_img/ppt/slideLayouts/slideLayout2.xmlpptx_img/ppt/slideLayouts/slideLayout1.xmlpptx_img/ppt/slideLayouts/slideLayout5.xmlpptx_img/ppt/slideLayouts/slideLayout4.xmlpptx_img/ppt/slideLayouts/slideLayout6.xmlpptx_img/ppt/slideLayouts/slideLayout10.xmlpptx_img/ppt/slideLayouts/slideLayout11.xmlpptx_img/ppt/slideLayouts/slideLayout7.xmlpptx_img/ppt/presentation.xmlpptx_img/ppt/slideMasterspptx_img/ppt/slideMasters/slideMaster1.xmlpptx_img/ppt/slideMasters/_relspptx_img/ppt/slideMasters/_rels/slideMaster1.xml.relspptx_img/ppt/slidespptx_img/ppt/slides/slide3.xmlpptx_img/ppt/slides/slide2.xmlpptx_img/ppt/slides/slide1.xmlpptx_img/ppt/slides/_relspptx_img/ppt/slides/_rels/slide2.xml.relspptx_img/ppt/slides/_rels/slide3.xml.relspptx_img/ppt/slides/_rels/slide1.xml.relspptx_img/ppt/themepptx_img/ppt/theme/theme1.xmlpptx_img/ppt/_relspptx_img/ppt/_rels/presentation.xml.relspptx_img/ppt/presProps.xmlpptx_img/ppt/tableStyles.xmlpptx_img/ppt/mediapptx_img/ppt/media/image1.pngpptx_img/ppt/media/image2.jpgpptx_img/ppt/printerSettingspptx_img/ppt/printerSettings/printerSettings1.bin注目するポイントは、ppt/フォルダの下に、前回までのデータでは現れなかった「media」というフォルダが作成されています。その中に、アップロードした2ファイルが格納されているので、pptxから画像を取り出したい時は、このディレクトリから抜き出すことが可能です。以前にブログで書いた、圧縮データからimgファイルを直接抜き出す方法で取り出せそうですね。http://wordpress.ideacompo.com/?p=12426ただし、挿入したファイル名とは違っているので、ファイル名を知りたい場合は、xmlを調査しないといけません。今回は、PowerPointドキュメントの第2スライドに2つの画像をつけたので、以下の2ファイルを確認します。ppt/slides/slide2.xmlppt/slides/_rels/slide2.xml.rels拡張子が”xml”が、表示データで、”rels”が、このスライドで扱うファイル一覧になるようです。prst="rect"><a:avLst/></a:prstGeom></p:spPr></p:pic></p:spTree>“p:spTree/p:pic”というタグ階層が画像エリアのようです。“p:cNvPr”に画像ファイル名。“a:blip”に、下記の設定ファイルで記されたファイルIDが書かれています。“p:spPr”は、画像を表示する、サイズや形などの詳細が書かれています。探してみたら、MSのこのページに、仕様の説明がされていましたね。Target="../media/image2.jpg"/></Relationships>このファイルは、スライドに関するファイルの一覧が記されています。“Relationship”タグにスライドのxmlと、画像が2つ登録されているのが見て分かります。適当な画像ファイルを付け足してみましょう。この画像をppt/media/にコピーして、ppt/slides/_rels/slide2.xml.relsに以下の1行を途中に追加します。Target="../media/binary-2372130_1280.jpg"/>ppy/slides/slide2.xmlにも、以下を追記してみます。./*見事に画像の挿入に成功しました。ちなみに、たくさん書かれていたタグをなんとなくいらないと思って消してみたら、PPTエラーが表示されて、画像が正常に挿入できなかったので、p:pic構成は重要ということがわかりました。x,yはスライド内の座標で、cx,cyは、サイズというのは分かりましたが、単位がいまいち不明なので、この辺はやりながら感覚を掴んでいくのがいいでしょう。サイズ変更などが分かってきたので、次は、表についての調査を行いたいと思います。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。