2026年2月10日火曜日

「PPTから挿入できるオブジェクト」は内部フォーマットを持つか?

 

持ちます。ただし「全部が同じ表現」ではなく、だいたい次の3系統に分かれます。

1) PowerPointネイティブ図形(四角、矢印、テキストボックス等)

  • スライド内の shape tree に入る

  • 形状、座標、塗り、線、テキストなどが DrawingML(XML) で記述される
    → つまり “PPT内部表現そのもの” がある、ということです。

2) 画像として貼られた図(PNG/JPG/SVG等)

  • スライドXMLには「ここに画像を置く」という参照(blip)が入り

  • 実体は ppt/media/ に格納される(PNG/JPG/SVGなど)

  • スライドは relationship(rId)でメディアを参照する
    → “内部表現”は 画像ファイル+参照です。

3) “オブジェクト挿入”系(Excel表、OLE、ActiveX等)

ここがご質問の核心に近いです。

  • PowerPoint側には「埋め込みオブジェクトをここに置く」という OleObject要素(XML) があり、そこに relationship id が入ります。

  • 実体データは別パーツとしてパッケージ内に入り、PowerPointはそれを参照します(OLE埋め込みの作法)。

  • Open XML SDK上でも OleObject / OleObjectEmbed のようにクラス化されており、XMLにシリアライズされることが明示されています。

要するに:

  • “箱(配置・サイズ・参照)”はPPTのXML(PresentationML/DrawingML)

  • “中身(Excelやバイナリ等)”は埋め込みパーツ(embedded part)
    という二重構造です。


実務的な「内部表現としての正解」まとめ(PPT最終前提)

  • 編集可能な図にしたい:PowerPointネイティブ図形(DrawingML)か、SVG/EMFを分解して図形化

  • 見た目固定で良い:画像(PNGなど)として保持(内部表現は参照+media実体)

  • Excel等を“埋め込みオブジェクト”として残す:OLE(内部は「PPT側の枠XML」+「埋め込みパーツ」)