気づいたきっかけは小さな動作でした。変換後のページで棒グラフの上に出ている数値をコピーしようとしたら、マウスで何も選択できない。2 ページ前に戻ると、SmartArt の図の中の文字はすんなり選べて、そのまま貼り付けられる。同じ 1 つの成果物なのに、扱いが二通りに分かれていました。
もともとの動機は、PPT を Web ページにして人に渡したかったからです。相手は Office を入れなくてよく、ネットにつなぐ必要もなく、スクリプトを有効にする必要もなく、ダブルクリックするだけで開ける。しかも編集できない。資料を外に出す側としては、この 3 つが何より実用的です。ただし常用できるかどうかは、変換後に何が残っているかで決まります。
試したのは ImgIng(https://imging.ai/)の PPTX → HTML です。サンプルは自作で、よくある四半期レビューの体裁に合わせた 8 ページの PPTX。会社名も倉庫名も受注数も人名もすべて架空です。棒グラフ、円グラフ、SmartArt のフロー図、7 行の表、角度をつけて置いた図形 4 つ、埋め込み動画 1 本と、入れられるものは入れました。変換はブラウザのローカルで動き、ネットワークパネルを 6 回分見ましたが、GET 以外のリクエストは 0 件でした。以下はこの 1 サンプル、デスクトップで見た結果です。
言葉を 2 つだけ先に決めておきます。「選択できる文字」とは、マウスでドラッグでき、コピーでき、Ctrl+F で検索できる文字のこと。それを丸ごと 1 枚の画像に押し固めてしまうのがラスタライズで、見た目は同じでも選べず検索できず、拡大すると粗くなります。逆に、どれだけ拡大しても粗くならない図形がベクターです。
本文と SmartArt は選べる側に残りました。全選択してコピーすると 783 文字、元ファイル 8 ページの文字を合計すると 770 文字で、多い十数文字はページ番号などです。フロー図の 5 段階の名前も「完了/進行中」のラベルも普通に選べて、角丸も線も影も残っています。レイアウトも崩れていません。8 ページすべて 1280×720、比率 1.7778 で、元ファイルの 1.7777 と一致します。回転している 4 つのオブジェクトは −22°、15°、−160°、−28° で、元の角度とひとつずつ対応していました。表も本物の表のまま、7 行 35 セルです。
一方、棒グラフと円グラフはそれぞれ 1 枚の PNG に固まっていました。軸の月ラベルを検索し、次に棒の上の数値も検索してみましたが、成果物の中での出現回数はどちらも 0 回。これらの文字はもう画像の中にしか存在しません。選べるのは横の凡例だけで、そこは別途テキストとして組まれています。意外だったのは順番です。手で組んだようなフロー図のほうがベクターで残り、より規則的で構造化されていそうなグラフのほうが先に固められている。自分が作っている側ではないので結果から推測するしかありませんが、グラフを忠実に描き起こす手間は角丸長方形 5 個の比ではないはずで、画像に固めるのが一番失敗しない道なのだと思います。全体として手抜きをしているわけでもなく、202,324 バイトの成果物に含まれる PNG は棒グラフ・円グラフ・7 ページ目の写真の 3 枚だけで、8 ページ中 5 ページにはビットマップが 1 枚もありませんでした。
アニメーションのほうは別の意味で意外でした。元ファイルには 7 ページに画面切り替え、5 ページに要素のアニメーションが付いていましたが、変換後はひとつも実行されません。開いた瞬間から静止しています。文句を言う準備をしていたのに、結果としては安心しました。他人のマシンで動きが期待どおりに走るかは元から分からないので、走らないほうが少なくとも予測できます。
注意が要るのは動画のページです。埋め込んだクリップは残らず、その位置にはグレーの破線の枠があり、中に英語で Video とだけ書かれています。PowerPoint 側で設定した表紙画像も使われていません。このページは実質的に穴が空いた状態になります。
変換中に警告は出ますが、「埋め込みオブジェクトを検出しました。可視の静的な外観のみ保持します」という 1〜2 行だけで、カテゴリごとにまとめられており、何ページ目のどのオブジェクトかは書かれていません。チェックリストではないので、結局は自分で見ることになります。
そこで自分は、作る段階で手を打つようにしました。重要な数値はグラフの中だけに置かず、隣のテキストボックスや箇条書きにも書いておく。こうしておけば、グラフが画像に固められても、数値は選べる側に残ります。表はそのまま表として残るので、数値が主役の資料は最初から表で組んでおくほうが確実です。
この考え方は Web 化に限りません。メール本文に貼るときも、チャットに投げるときも、スクリーンショットで転送されるときも、画像の中の文字は同じ運命をたどります。渡したい情報がどの種類のオブジェクトに乗っているか、そこだけ先に決めておけば、変換方法はあとからどうにでもなります。
