COSとは?
COS(Carousel Object Syntax、カルーセルオブジェクト構文)は、 PDF およびFDFファイルで使用される構文で、次の文書で詳しく解説されています。 ISO 32000-2:2020. PDFファイルの内部構造を調べると、そこにあるのがCOSです。
「Carousel」は、この構文が最初に導入された際のAcrobat 1.0のコードネームでした。
8種類のCOSオブジェクト型
COSの構文は小さく、PDF内のほとんどすべては8つの基本オブジェクト型のいずれかです。これらを見分けられるようになると、PDFの中身が単なるノイズには見えなくなります。
- ブール値と数値。素のまま記述されます。
- 文字列。丸括弧内に書くか、山括弧内に16進数で書きます。
- 名前。/Type や /Page のように、先頭にスラッシュを付けて記述します。
- 配列は角括弧、辞書は二重山括弧で囲みます。
- ストリーム。辞書に続けて、生または圧縮済みのバイト列ブロックが続きます。
- null オブジェクト。
ページ内容、フォント、画像、 メタデータ もすべてこれらの要素から構成されています。ストリームには圧縮されたページ記述や埋め込み画像が含まれるため、ファイルデータの大部分が格納されます。
オブジェクトの探索方法
オブジェクトには番号が振られ、ファイル末尾のクロスリファレンステーブルに各オブジェクトのバイトオフセットが記録されます。リーダーは末尾から読み始めてトレーラーを読み、クロスリファレンステーブルを見つけてから、必要なオブジェクトへ直接ジャンプします。そのため、PDFは最初から最後まで順に解析しなくても開くことができます。 後のバージョンでは、そのテーブル自体を圧縮された オブジェクトストリーム として保存する場合があり、 インクリメンタルアップデート は最初のテーブルを書き換えずに2つ目のテーブルを後ろに追加します。