ひとりで受託をしていて、いちばん制御できないのは提案書を送ってから相手が読み終わるまでの区間だった。ある客先では送った Word の数字が二か所書き換えられて社内を回り、検収はその写しで通った。別の客先では「PDF がうちの古いマシンだと画像がぼやける、目次も押せない」と言われた。逆方向に二回転んだので、送る形式を習慣で決めるのをやめた。
いまは送信前に三つだけ確認している。相手が編集できるか、開くのに何をインストールする必要があるか、添付として何バイトか。この三つで Word・PDF・読み取り専用の HTML のどれを送るかはだいたい決まる。
編集可否はセキュリティではなくバージョンの話だ。Word は書き換えられるのが設計どおりで、一緒に中身を詰めている段階ではそれが正しい。確定後に Word を送るのは「どちらが正本か」を自分で管理すると宣言するのに等しい。PDF は敷居を上げるが塞ぎはしない。三つめの選択肢が読み取り専用の単一 HTML で、相手はダブルクリックしてブラウザで開き、読めて選べてコピーもできるが、編集モードは存在しない。
三つめが成立するかどうかは、書き出されたファイルが本当に自己完結しているかで決まる。なので一度ばらして確かめた。よくある提案書に似せて自分で一本作った。A4 七ページ、36 行の長い表、画像三枚、脚注四つ、三階層の番号付きリスト、ヘッダーとフッター付き。会社名も伝票番号も金額も全部こちらで作った架空のものだ。変換には ImgIng(https://imging.ai/ )を使った。変換はブラウザ内でローカルに走る。ネットワークパネルを六回分眺めたが、処理中の非 GET リクエストは 0 件で、ファイルは端末から出ていない。
出力は 85,903 バイトの HTML 一枚。まず外部参照を数えた。外部スクリプト 0、外部スタイルシート 0、ネット越しの画像 0。画像三枚は base64 で埋め込まれていて、ファイル容量の 31% を占めている。解凍ライブラリ名や OOXML の名前空間、zip の base64 先頭も検索したが、どれも 0 件。元のパッケージとパーサーを同梱する方式ではない。
いちばん気になっていたのは次の検証だ。単一ファイルを名乗る書き出しには、本文をスクリプトに詰め込んで実行時に描くものが少なくない。スクリプトが禁止された業務端末では真っ白になる。デスクトップで JavaScript を完全に切って開き直したところ、ページ数は七のまま、本文領域をスクリプト有効時と行単位で比較して差分は 0 行、全選択で 3,178 文字をコピーできた。元文書の本文 286 段落に対して 286 段落が一致している。
代償もはっきり出た。別サンプルとして本文フォントを手元にないものに差し替え、Word の作法どおりフォント本体を文書に埋め込んだ。ところが出力側のフォント埋め込み宣言は 0 件。埋めたフォントは付いてこず、フォント名の文字列だけが残る。同じ英語見出しが、フォントあり 575.3×81 px、なし 411.9×33 px。サンプルの中国語本文段落は高さが 45.6% 変わった。しかもページの高さは変換時に元文書から算出して書き込まれており、実際のフォントで再計算されない。結果としてそのサンプルでは一ページ分の中身がページ境界を突き抜け、次の段落が半行切れた。
つまりこの形式が運べるのは内容と構造であって、組版ではない。表紙の見出しをフォントで持たせている提案書は、相手の環境では同じ見え方にならない。本文・番号・表のように構造で持っている部分は逆にかなり安定していた。
スライド側は別の取引になる。八枚で 202,324 バイト、全ページ 1280×720 で元ファイルと同じ比率、回転している四つのオブジェクトの角度も一致、表は表のまま。SmartArt はベクターで、五段階のラベルはすべて選択できる。一方で棒グラフと円グラフは丸ごと PNG に固定されていて、軸のラベルやデータ値は出力ファイル内に 0 回しか出てこない。選べるのは凡例だけだ。アニメーションと画面切り替えは実行されず、出力側のアニメーション定義の数は 0 だった。
送る前に必ず見る箇所が三つある。フッターのページ番号(こちらの七ページは全部「1 / 10」と出ていた)、ワードアートの見出し(空白になる)、本文に埋めた Excel オブジェクト(プレビュー画像ごと消える)。ツール側の警告は「埋め込みオブジェクトを検出」という種別単位の一行だけで、何ページ目の何かは教えてくれない。
最後に答えられないことも書いておく。手元に Word を入れていないので、Word で開いた場合とどれだけ近いかは分からないし、印象で結論を出すつもりもない。言えるのは、七つのページ区切りが文書内の六つの手動改ページと一致していることだけだ。

