オフィススイートなしで、文書をブラウザでプレビュー
BDF は、ブラウザ向けの文書プレビュースイートです。多様な形式に対応するコンバーター(Go/WASM)、gzip 圧縮後約 23 KB のブラウザ用レンダラー、中間形式で構成されます。
PDF が PostScript をベースにした印刷向けのポータブル文書形式であるのに対し、BDF は Canvas 2D の描画命令を基盤とした、ブラウザ表示向けの軽量な中間形式です。サーバーでの事前生成と、WASM を使ったブラウザ内でのリアルタイム変換に対応します。
BDF から描いた PDF
サーバーで変換するのと同じように、あらかじめ変換してあります。ページめくり、テキストの選択、検索、拡大ができます。
PDF で 240 KB、フォントを含む BDF で 142 KB。ページは表示の直前に Range リクエストで取得します。
文書変換が速く、メモリと電力も少なく
同じ Office ファイルを LibreOffice + Poppler と BDF の Go 変換器で処理して比較しました。
- 94%文書あたりの推定 SoC エネルギーを削減
- 470×合成 PPTX · 100 スライド の変換が高速
- 47×合成 PPTX · 100 スライド の最大 RSS が少ない
変換+サムネイル作成の経過時間(中央値)
-
小さい DOCX
LibreOffice + Poppler 0.69 sBDF(Go) 0.05 s -
小さい PPTX
LibreOffice + Poppler 1.01 sBDF(Go) 0.03 s -
小さい XLSX
LibreOffice + Poppler 0.65 sBDF(Go) 0.04 s -
合成 XLSX · 4 シート × 3,000 行
LibreOffice + Poppler 1.55 sBDF(Go) 0.23 s -
合成 PPTX · 100 スライド
LibreOffice + Poppler 56.38 sBDF(Go) 0.12 s
最大 RSS(中央値)
-
小さい DOCX
LibreOffice + Poppler 161.8 MiBBDF(Go) 43.4 MiB -
小さい PPTX
LibreOffice + Poppler 147.3 MiBBDF(Go) 38.2 MiB -
小さい XLSX
LibreOffice + Poppler 123.7 MiBBDF(Go) 36.0 MiB -
合成 XLSX · 4 シート × 3,000 行
LibreOffice + Poppler 288.3 MiBBDF(Go) 48.7 MiB -
合成 PPTX · 100 スライド
LibreOffice + Poppler 1,918.9 MiBBDF(Go) 40.8 MiB
1 文書あたりの推定 SoC エネルギー
-
小さい DOCX・小さい PPTX・小さい XLSX の文書あたり平均
LibreOffice + Poppler 4.27 JBDF(Go) 0.24 J
3 ラウンドの範囲(J/文書): LibreOffice + Poppler 3.30–7.16、BDF 0.24–0.25。
Apple Silicon の Mac を AC 電源で使用。時間と最大 RSS は、変換と先頭ページの 256 px サムネイル作成までを新規プロセスで計測した 5 回の中央値。大きな XLSX・PPTX は合成データです。エネルギーは 小さい DOCX・小さい PPTX・小さい XLSX の変換を 3 ラウンド繰り返し、powermetrics の CPU・GPU・ANE の SoC 推定値からアイドル分を差し引いて文書あたりで算出。コンセントでの実測値ではありません。
文書の種類ごとに、合った形で
シートはスクロールできるシートのまま、本はページをめくって。どれも同じレンダラが描きます。
対応する形式は 29 種類。Visio、Illustrator、Photoshop、TIFF、HTML、Markdown、フォントファイルなども: 形式の一覧
手元のファイルで試す
ファイルはブラウザの中で変換します。アップロードはされません。
システムに組み込む
構成ごとのサンプルプロジェクトが 3 つ。どれも小さな Go のサーバーとページです。
なぜ BDF か
オフィススイートを動かさない
ヘッドレスの LibreOffice も cgo も外部プログラムも不要。変換器は 1 つのバイナリに入る Go のパッケージです。
内容に合った形で見せる
スライドや図面には固定ページ、ブックには無限のシート、文章にはページか一続きの列。
ブラウザ表示に特化
命令は Canvas 2D に対応。フォント、画像、展開はブラウザに任せます。
多くの形式を 1 つのレンダラで
検索、テキスト選択、読み上げ用のテキストは、どの形式でも同じように使えます。
必要な変換器だけを選べる
変換器は形式ごとに独立した Go のパッケージ。サービスに要るものだけを組み込めます。ブラウザ用のモジュールも種類ごとに分かれています。
ブラウザの検索も、読み上げも
文字は画像の上に本物のテキストとして重ねてあるので、ブラウザ自身のページ内検索(Ctrl+F)で見つかり、スクリーンリーダーは見出し・リスト・表を読み上げます。









