Officeドキュメントの内部xml調査 #pptx編

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

こんにちわ。
 

この間、パスポートの更新をした際に、10年前の自分の写真と今の自分を比べて10年の老いを感じたのですが、自分でこれほど気がつくということは他人であれば、「老けたな〜〜」と言ってしまう気持ちもわからなくもないと、ひっそりと感じていた下駄です。
 

この10年は仕事でもプライベートでも色々な躍進も変化もあり、あっという間でしたが、やはり10年って長い年月だと言うことを思い知らされました。
 

そんな話はどうでもいいのですが、最近やたらとOfficeドキュメントの調査をやっていて、ネットにあまり掲載されていないslideのxml情報を備忘録として載せておきます。
 

ちなみに、今回の記事は、pptxファイルの拡張子をzipに変更して解凍処理をした内部のファイル群についての調査になります。

解凍したファイル構成

pptxをzipに拡張子変更して回答したディレクトリ(pptx)の中身をfindコマンドで覗いてみました。
 

 

スライド3つのファイルですが、50個ぐらいのフォルダとファイルが確認できます。
 

少しまとめて、フォルダ構成だけみると以下のような感じです。
 

 

なんとなくどのディレクトリにどういう情報が入っているかはわかりやすいですね。
 

気になるのは、「_rels」というディレクトリですが、これは、その情報がファイルの色々な構成情報をもたせているファイルが格納されているようです。
 

slide情報

次に、実際のslide情報が格納されているファイルの中身で、テキスト操作するべき箇所を抜き出してみました。
 

pptxのデータ構成は、主に「テキスト」「画像」「テーブル(graphic)」で構成されているようで、その3つの記述を抜き出しています。

テキストデータ

 

実際の表示されている部分は、下部の方にある”a:t”タグの内容がそれにあたるようです。
 

テキストが改行されている場合は、”a:p”タグが複数格納される仕様になっているようです。
 

wordpressの”p”タグの構成と似ていますね。

画像データ

 

画像データは、わかり易く”p:pic”タグに格納されています。
 

“descr”属性にファイル名が書かれていますが、このファイル名はたんなるdiscriptionなので、説明書きなので、ここのファイル名を変更しても、データには反映されません。
 

画像ファイルはrelsファイルに記述されてそこに書かれているid値をこのデータに格納する仕様になっています。
 

このデータでは、中盤にかかれている「r:embed=”rId3″」の箇所がソレです。
 

ちなみに、このslide情報のrelsファイルは以下のようになっています。
 

 

それほど難しい構成ではないですね。

Tableデータ

 

tableデータはgraphicデータの構造で書かれています。
 

table構造事態は、htmlのtableタグと似ているので、xmlの内容をみているとなんとなく理解できるかと思います。
 

実際のtableタグは”a:tbl”タグがそれで、trタグは”<a:tr h=”370840″>”(※hは縦サイズ)。
“td”タグにあたるセル部分は”<a:tc>”でその内部は、テキスト構造と同じになっているようです。
 

構造さえ把握できれば怖くない

officeドキュメントって、パワーポイントのアプリを立ち上げて面倒くさい操作をするよりも、もしかするとxml操作をした方が確実にプレゼン資料が作れるという人もいるかもしれません。
 

こうした内部構造が理解できると、より効率的に作業が進められるし、今回この調査をしているのは、とあるコンバーターツールを作るためなのですが、今流行りのRPAというワケですね。
 

効率のいい作業をしようとすると、その内部構造に詳しくなれといういい参考になりました。

参考サイト

pptxファイルをテキストエディタで操作する参考になります。
 

.pptx ファイルと戯れる (主にテキストエディタで)
 

Leave a Reply

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