🌳Dokumentenbaum: wie die Objekte zusammenhängen
Die Objekte im Body liegen in beliebiger Reihenfolge. Die Struktur entsteht allein durch Referenzen: der Trailer zeigt auf den Katalog, der Katalog auf den Seitenbaum, die Seiten auf Inhalt und Ressourcen. Klicke auf einen Knoten.
Aus der Beispiel-PDF geparst: startxref → xref → Trailer, dann jeder Referenz gefolgt. Gestrichelt = Rückverweis /Parent.
Objekt 3 · erreicht über /Kids[0]
Page
Ein Blatt: eine Seite. /Parent zeigt zurück (gestrichelt). Attribute wie /MediaBox, /Resources oder /Rotate sind vererbbar – fehlen sie, gilt der Wert des Elternknotens.
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 300 144] /Contents 4 0 R /Resources << /Font << /F1 5 0 R >> >> >>
🧬Größere Dokumente: balancierter Seitenbaum und Vererbung
trailer ── /Root ──► Catalog
├─ /Outlines ──► Lesezeichen
├─ /AcroForm ──► Formularfelder
├─ /Metadata ──► XMP-Stream
└─ /Pages ─────► Pages /Count 5
│ /MediaBox [0 0 595 842] ◄ vererbt (A4)
│ /Resources << … >> ◄ vererbt
├─ Page 1 (erbt beides)
├─ Pages /Count 3
│ ├─ Page 2
│ ├─ Page 3
│ └─ Page 4
└─ Page 5 /MediaBox [0 0 842 595]
(überschreibt: Querformat)💡 Warum ein Baum und keine Liste?
Ein Leser, der Seite 500 anzeigen will, steigt über
/Count gezielt ab, statt 499 Seiten zu laden. Erzeuger bauen den Baum deshalb meist balanciert.✅ Vererbbare Seitenattribute
/Resources, /MediaBox, /CropBox und /Rotate dürfen an einem Pages-Knoten stehen und gelten dann für alle Seiten darunter – eine Seite kann sie überschreiben (ISO 32000-1, Tabelle 30 und 7.7.3.4).⚠️ Seitennummer ≠ Objektnummer
Die Reihenfolge der Seiten ergibt sich nur aus
/Kids, nicht aus den Objektnummern oder der Lage in der Datei.📖Wichtige Einträge im Katalog
| Schlüssel | Bedeutung | Status |
|---|---|---|
| /Type | /Catalog | Pflicht |
| /Pages | Referenz auf die Wurzel des Seitenbaums | Pflicht |
| /Outlines | Lesezeichen-Baum (Gliederung) | optional |
| /Names | Namensbäume (benannte Ziele, eingebettete Dateien, JavaScript) | optional |
| /AcroForm | interaktives Formular (Felder) | optional, PDF 1.2 |
| /Metadata | XMP-Metadaten-Stream | optional, PDF 1.4 |
| /StructTreeRoot | Struktur-Baum für Tagged PDF (Barrierefreiheit) | optional, PDF 1.3 |
| /OCProperties | optionale Inhalte (Ebenen) | optional, PDF 1.5 |