Linearized
Linearized PDF(「fast web view」または「最適化」PDFとも呼ばれる)は、ドキュメント全体をダウンロードすることなく、Web上でページごとに効率的にアクセスできるように特別に構成されたPDFファイル構造です。
Linearized PDF(「fast web view」または「最適化」PDFとも呼ばれる)は、ドキュメント全体をダウンロードすることなく、Web上でページごとに効率的にアクセスできるように特別に構成されたPDFファイル構造です。 ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で定義されているように、linearizationはPDFの内部コンポーネントを再構成し、最初のページとその関連リソースをファイルの先頭に配置します。この最適化により、PDFビューアはドキュメントの残りの部分がバックグラウンドでダウンロードを続けている間に、最初のページを表示できるようになります。
LinearizationはPDF仕様で定義された厳密なルールに従って、PDFドキュメントの内部構造を再配置する特定のファイル構成技術です。オブジェクトが任意の順序でファイル全体に散在する可能性がある標準的なPDFとは異なり、linearized PDFはオブジェクトをシーケンシャルアクセスに最適化された所定の順序で配置します。ファイルはlinearization dictionaryで始まり、これにはhint tablesが含まれています。hint tablesはバイトオフセット情報を提供し、ビューアがバイト範囲リクエストを使用してWebサーバーから特定のページを迅速に検索およびリクエストできるようにします。
Linearized PDFは、単純に「圧縮」または「最適化」されたPDFとは異なります。圧縮はファイルサイズを削減しますが、linearizationはプログレッシブレンダリングのためにドキュメントのオブジェクト構造を特別に再構成します。Linearized PDFは、ファイルの最初のオブジェクトにlinearization parameter dictionaryが存在するかどうかを確認することで識別できます。このオブジェクトはobject 1として番号付けされた間接オブジェクトでなければなりません。
WebベースのPDF表示アプリケーションを構築する開発者にとって、linearizationはユーザーエクスペリエンスを大幅に向上させ、体感的なロード時間を短縮します。ユーザーは数メガバイトのドキュメントが完全にダウンロードされるのを待つのではなく、数秒以内に最初のページを読み始めることができます。これは、モバイルアプリケーション、オンラインドキュメントリポジトリ、および帯域幅が制限されているか、ドキュメントサイズが大きいシナリオで特に重要です。
技術的な実装の観点から、linearizationはHTTPバイト範囲リクエストを可能にし、アプリケーションが現在表示されているページに必要なPDFの部分のみを取得できるようにします。これにより、サーバーの帯域幅消費が削減され、多数の同時ユーザーにPDFを提供する際のスケーラビリティが向上します。ただし、開発者はlinearizationの維持には特別な処理が必要であることに注意する必要があります。linearized PDFへの変更は通常linearizationを破壊するため、専用のツールやライブラリを使用してドキュメントを再linearize化する必要があります。
Linearizationは、PDFの内部構造を4つの主要なセクションに再構成します。最初のセクションには、linearization dictionary、document catalog、および最初のページを表示するために必要なすべてのオブジェクト(ページオブジェクト自体、フォント、画像、その他のリソースを含む)が含まれます。2番目のセクションには、ページ番号をバイトオフセットにマッピングするhint tablesが含まれており、任意のページへのランダムアクセスが可能になります。3番目のセクションには残りのページのオブジェクトが含まれ、4番目のセクションには共有オブジェクトとcross-reference tableが含まれます。
WebサーバーがLinearized PDFのリクエストを受信すると、最初にファイルヘッダーと最初のページセクションを送信します。PDFビューアはlinearization dictionaryを使用してファイルの構造を理解し、すぐに最初のページのレンダリングを開始します。ユーザーが後続のページに移動すると、ビューアはhint tablesを参照して、サーバーからリクエストするバイト範囲を決定します。サーバーはHTTP 206 Partial Content応答を使用して、その特定のバイト範囲のみで応答し、効率的なオンデマンドページ取得を可能にします。
Linearized PDFを作成するには、開発者はlinearizationをサポートするPDFライブラリまたはツールを使用する必要があります。正しい構造を手動で作成することは非常に複雑だからです。Linearizationプロセスには、バイトオフセットの計算、hint tablesの作成、およびすべてのオブジェクトが適切な順序で配置されることの保証が含まれます。Java、Pythonなどの一般的なPDFライブラリは、通常、ドキュメント作成後の後処理操作としてlinearizationを提供します。
- Cross-reference table – PDFファイル内のオブジェクト番号をバイト位置にマッピングするインデックス構造。ランダムアクセスに不可欠です
- Object stream – 複数のPDFオブジェクトを含む圧縮されたストリーム。圧縮を改善できますが、linearization戦略に影響を与えます
- Byte-range request – クライアントがファイルの特定部分をリクエストできるようにするHTTPメカニズム。効率的なlinearized PDFの配信を可能にします
- Incremental update – ファイル全体を書き直すのではなく、変更を追加してPDFを変更する方法。通常、linearizationを破壊します
- Document catalog – PDFのオブジェクト階層のルートオブジェクト。高速アクセスのためにlinearized PDFの早い段階で表示される必要があります
- (N.A.) (2020)
- (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html
