Imposia ドキュメント

React の HTML をブラウザーのページにして、プレビュー、印刷、PDF 保存までできます。

コンテンツを編集して印刷する機能を作ると、多くの場合「同じはず」の文書が 3 つできあがります。エディターがコンテンツを描画し、プレビューがそれを複製し、印刷経路が別の場所でもう一度組み立て直すためです。やがてプレビューは 12 ページ、PDF は 13 ページになりますが、どちらが正しいかは誰にも答えられません。どれを正とするか、何も決めていないからです。

Imposia はこの問いをなくします。手元の HTML と CSS をブラウザー内で 1 つのページ分割済み文書にし、プレビュー、ネイティブ印刷、PDF に保存のすべての面が、その同じ完成済み文書を参照します。

Imposia が生まれた理由 →

HTML がページになるまで

  1. アプリが HTML、CSS、ページ設定を Imposia に渡します。
  2. Core が一時的な iframe で次の版をページ分割します。
  3. ページ分割が完了すると、Imposia が表示中の文書を一度に置き換えます。

ページ分割に失敗した場合や、より新しい更新が先に始まった場合も、読者には直前に完成した文書が表示され続けます。作りかけのレイアウトが画面に現れることはありません。

1 つの確定したソースから作れるもの

出力取得方法受け取るもの
プレビューReact Viewercanonical iframe から表示される完成済みページ
印刷または PDFprint()ブラウザー標準の印刷ダイアログ。読者はここでプリンターまたはPDF に保存を選びます
EPUBexportEpub()任意の機能。ページと同時に確定した意味構造を保つソースから作るリフロー型 EPUB 3.3 Blob

サイズと速度

利用経路gzip サイズgzip 予算
Core · PageDocument63.2 KiB63.5 KiB
Core · Publication67.5 KiB68 KiB
Viewer · PageDocument11.8 KiB13 KiB
Client · PageDocument71.8 KiB72 KiB
React · PageViewer73.6 KiB74 KiB

サイズは 2026 年 9 月 27 日に 0.6.0 で測定し、React と React DOM は含みません。Core 全体のブラウザーファイルは gzip 68.4 KiB です。ページ分割の正確性修正による増加分を反映し、予算を 1〜1.5 KiB 引き上げました。サイズ最適化による削減ではありません。測定方法と予算変更の根拠。

項目結果
99 ページの記事をページ分割127 ms
その記事の単語を 1 つ変えて再確定127 ms
確定直後の最初の描画フレーム2.0 ms
すべてのエントリーに <style> がある 100 エントリーの Publication をページ分割97 ms

実行時間は 2026 年 9 月 24 日の Apple M4・Chromium 149 での 7 回の中央値です。pnpm build の後、サイズは pnpm bundle:size、時間は pnpm benchmark で再測定できます。

境界を確認する

Imposia は PDF バイトを返しません

print() はブラウザー自身の印刷フローを開きます。PDF レンダラーも、Node や CLI のレンダラーも、サーバー出版 API もありません。サーバー上で PDF バイトが必要なアプリケーションに Imposia は適していません。その場合はヘッドレスブラウザーかサーバーサイドレンダラーを使ってください。

Imposia はブラウザー内で動作し、ESM として提供されます。この構成がアプリケーションに合うなら、最初のページを作るへ進んでください。

On this page