Was ist COS?
COS (Carousel Object Syntax) ist die von PDF und FDF-Dateien verwendete Syntax, die ausführlich dokumentiert ist in ISO 32000-2:2020. Wenn du in eine PDF-Datei hineinschaust, ist es COS, was du siehst.
"Carousel" war der Codename für Acrobat 1.0, als diese Syntax erstmals eingeführt wurde.
Die acht COS-Objekttypen
COS ist eine kleine Syntax, und fast alles in einer PDF ist einer von acht grundlegenden Objekttypen. Sobald du sie erkennen kannst, hört das Innere einer PDF auf, wie Rauschen auszusehen:
- Booleans und Zahlen, schlicht geschrieben.
- Strings, in runden Klammern oder als Hexadezimalwerte in spitzen Klammern.
- Names, mit einem Schrägstrich am Anfang, etwa \/Type oder \/Page.
- Arrays in eckigen Klammern und Dictionaries in doppelten spitzen Klammern.
- Streams, ein Dictionary gefolgt von einem Block aus Rohdaten oder komprimierten Bytes.
- Das Null-Objekt.
Seiteninhalt, Schriften, Bilder und Metadaten werden alle aus diesen Bausteinen zusammengesetzt. Ein Stream enthält den Großteil der Dateidaten, weil er komprimierte Seitenbeschreibungen und eingebettete Bilder enthält.
Wie die Objekte wiedergefunden werden
Objekte sind nummeriert, und eine Cross-Reference-Tabelle am Ende der Datei speichert den Byte-Offset jedes Objekts. Ein Reader beginnt am Ende, liest den Trailer, findet die Cross-Reference-Tabelle und springt dann direkt zu dem benötigten Objekt. So kann eine PDF-Datei geöffnet werden, ohne sie vollständig von Anfang bis Ende zu parsen. Spätere Versionen können diese Tabelle als komprimierten object stream speichern und ein inkrementelle Aktualisierung hängt eine zweite Tabelle an, statt die erste zu überschreiben.