PDF 構文 オブジェクトストリーム
PDF構文 (PDF Syntax ISO 32000-2)
PDF1.7は、ISO技術委員会によって2008年1月に“ISO 32000-1規格”として承認されました。2017年7月にはPDF2.0の規格ISO3200-2が承認され、2020年12月にはそれが第二稿に更新されました。
ここでは32000-2規格に基づいたPDF1.7の構文(構造)について説明しています。
PDFファイルは8-bitデータを単位として構成されていて一般の文書編集アプリケーションで開くことができその内容を読取ることができます。ただし、バイナリのデータもそのまま(表示可能な文字に変換されずに)格納されていますので文字化けしているように表示されますが、これはPDFの仕様です。
ここではそのデータの一部を読み解くことでPDF文書へのデータ追加などPDF再構成の意味を説明し、PDF-ToolsでのPDFデータ解析や編集をより詳細にできるようにします。
ここでは32000-2規格に基づいたPDF1.7の構文(構造)について説明しています。
PDFファイルは8-bitデータを単位として構成されていて一般の文書編集アプリケーションで開くことができその内容を読取ることができます。ただし、バイナリのデータもそのまま(表示可能な文字に変換されずに)格納されていますので文字化けしているように表示されますが、これはPDFの仕様です。
ここではそのデータの一部を読み解くことでPDF文書へのデータ追加などPDF再構成の意味を説明し、PDF-ToolsでのPDFデータ解析や編集をより詳細にできるようにします。
「PDF 構文 メタデータ」<<< >>>「PDF 構文 クロスリファレンス ストリーム」
「PDF 構文 メタデータ」<<<
9.オブジェクト ストリーム (Object Stream)
オブジェクトストリームは、一連の間接オブジェクトを保存できるストリームオブジェクトです。
オブジェクトストリームの目的は、ストリーム圧縮フィルターによって提供される機能を使用して、ストリーム以外の間接オブジェクトをよりコンパクトに格納できるようにすることです。なお、オブジェクトストリームは、PDF1.5で最初に導入されました。
次のオブジェクトは、オブジェクトストリームに保存されません。
- ストリーム・オブジェクト
- 世代番号がゼロ以外のオブジェクト
- ドキュメントの暗号化ディクショナリ(Encryption Dictionary)
- オブジェクトストリームの長さを表すオブジェクト
- リニアライズ(Webように最適化)されたPDFにおける、ドキュメントカタログディクショナリ、リニアライズディクショナリ、およびページオブジェクト
オブジェクト ストリーム ディクショナリにはストリーム オブジェクトの通常のキーに加えて、オブジェクト ストリームを説明する下表のエントリが追加されています。
「オブジェクト ストリーム」と「ストリーム オブジェクト」は違いますので注意してください。
キー | タイプ | 値 |
---|---|---|
Type | name | (必須)"ObjStm"を指定 |
N | integer | (必須)ストリームに含まれる、オブジェクトの数 |
First | integer | (必須)伸張(デコード)されたストリームの最初のオブジェクトのオフセット値 |
Extends | stream | (オプション)ストリームを拡張します。 |
オブジェクトのタイプは「2.5オブジェクト」を参照してください。
ストリームのFirst項目で示された位置からはN組の整数のペアが記載されます。このペアの最初の整数はオブジェクト番号で、2つめの整数は次のオブジェクトへのオフセット値です。
これらの情報が通常のクロスリファレンス テーブルと同様の情報となります。
オブジェクト番号は増加するよう指定され重複しません。
「PDF 構文 メタデータ」<<< >>>「PDF 構文 クロスリファレンス ストリーム」
「PDF 構文 メタデータ」<<<