Czym jest COS?
COS (Carousel Object Syntax) to składnia stosowana przez PDF oraz pliki FDF, szczegółowo udokumentowana w ISO 32000-2:2020. Podczas analizowania struktury wewnętrznej pliku PDF właśnie z COS masz do czynienia.
"Carousel" było kryptonimem programu Acrobat 1.0, kiedy ta składnia została po raz pierwszy wprowadzona.
Osiem typów obiektów COS
COS ma prostą składnię i niemal wszystko w pliku PDF jest jednym z ośmiu podstawowych typów obiektów. Gdy nauczysz się je rozpoznawać, wnętrze PDF-a przestaje wyglądać jak szum:
- Wartości logiczne i liczby, zapisane wprost.
- Napisy (strings), w okrągłych nawiasach lub jako wartości szesnastkowe w nawiasach ostrych.
- Nazwy (names), zapisywane z poprzedzającym ukośnikiem, na przykład \/Type lub \/Page.
- Tablice (arrays) w nawiasach kwadratowych i słowniki (dictionaries) w podwójnych nawiasach ostrych.
- Strumienie (streams), czyli słownik, po którym następuje blok bajtów w postaci surowej lub skompresowanej.
- Obiekt null.
Zawartość stron, czcionki, obrazy oraz metadane są zbudowane właśnie z tych elementów. Strumień zawiera większość danych pliku, ponieważ przechowuje skompresowane opisy stron i osadzone obrazy.
Jak odnajduje się obiekty
Obiekty są ponumerowane, a tabela odnośników (cross-reference) na końcu pliku zapisuje przesunięcie bajtowe każdego z nich. Czytnik zaczyna od końca, odczytuje trailer, znajduje tabelę odnośników, a następnie przeskakuje bezpośrednio do potrzebnego obiektu. Dzięki temu PDF można otworzyć bez analizowania go od początku do końca. Późniejsze wersje mogą zapisać tę tabelę jako skompresowany strumień obiektów (object stream) zamiast tego, a aktualizacja przyrostowa dołącza drugą tabelę, zamiast nadpisywać pierwszą.