Fast Web View: Wie ein PDF angezeigt wird, bevor es fertig heruntergeladen ist
Spec: ISO 32000-2, Annex FISO 32000-2 Annex F
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“Ein linearisiertes PDF ist so umorganisiert, dass die erste Seite und ein kleiner Navigationsindex ganz am Anfang der Datei stehen. Ein Reader kann daher die erste Seite zeichnen, während der Rest des Dokuments noch eintrifft, und direkt zu Seite 147 springen, ohne zuvor die Seiten 2 bis 146 zu lesen.
Das ist die Funktion, die die meisten Leser unter ihrem geläufigen Namen kennen: Fast Web View.
Warum das wichtig ist
Abschnitt betitelt „Warum das wichtig ist“Stellen Sie sich einen 200-seitigen Bericht auf einem Telefon mit einem Balken Empfang vor. Ohne Linearisierung benötigt der Reader oft das allerletzte Ende der Datei, bevor er überhaupt etwas zeichnen kann, weil der Hauptindex, der angibt, wo jedes Objekt liegt, traditionell hinten sitzt. Sie sehen also einen Ladekreis, während zweihundert Seiten heruntergeladen werden, nur um die erste zu lesen.
Mit Linearisierung ist die Datei so angeordnet, dass die Antwort auf „Was steht auf Seite eins?” das Erste ist, was über die Leitung kommt. Der Leser zeichnet die erste Seite in einer Sekunde und ruft den Rest erst ab, wenn Sie scrollen oder springen. Über eine schnelle Verbindung bemerken Sie das vielleicht nie. Über eine langsame oder volumenbegrenzte Verbindung ist es der Unterschied zwischen einem nutzbaren Dokument und einem abgebrochenen Tab.
Die Kurzfassung
Abschnitt betitelt „Die Kurzfassung“- Eine linearisierte Datei ist an den Anfang geladen: Die erste Seite und eine Hinweistabelle stehen zuerst, vor dem restlichen Body.
- Die Hinweistabelle ist eine Karte von Bereichen. Sie sagt dem Reader, welche Byte-Bereiche zu welcher Seite und zu den gemeinsam genutzten Objekten gehören, sodass der Reader den Server um genau diese Ausschnitte bitten kann – dann löst die Querverweistabelle jede Objektnummer zu ihrem exakten Offset auf.
- Das setzt Byte-Range-Anfragen voraus – der Reader ruft Ausschnitte der Datei bei Bedarf ab, nicht das Ganze.
- Die Bytes sind inhaltlich identisch mit einem normalen PDF. Die Linearisierung ändert die Reihenfolge und den Index, nicht die Seiten selbst.
- Es ist ein expliziter, umschaltbarer Schritt in NextPDF – erzeugt durch einen echten dreistufigen Neuaufbau, nicht durch ein Flag, das auf das Beste hofft.
Wie NextPDF dabei vorgeht
Abschnitt betitelt „Wie NextPDF dabei vorgeht“Sie können eine Seite nicht an den Anfang laden, bevor Sie genau wissen, wie groß alles ist, denn die Hinweistabelle erfasst Byte-Offsets, und ein Offset ist erst dann korrekt, wenn die Länge jedes Objekts endgültig feststeht. Diese Zirkularität – Offsets hängen von Größen ab, Größen hängen vom Layout ab – ist der Grund, warum ein Linearisierer in Durchläufen arbeitet statt in einem einzigen Durchgang.
NextPDF löst das mit einem deterministischen dreistufigen Neuaufbau. Der erste Durchlauf misst, der zweite entscheidet über die Platzierung, der dritte schreibt die echten Bytes mit den nun bekannten, fest eingebackenen Offsets.
- MEASURESerialise every object once to learn its exact byte length. Offsets are circular — they depend on sizes — so sizes are pinned first.
- PLACEDecide the order: first page and its dependencies up front, then the rest. Reserve space for the linearization parameter dictionary and the hint table.
- FILLWrite the final bytes. Each reserved field is filled with values computed after MEASURE and PLACE — the first-page length, the hint-table location, the main cross-reference offset — derived from the measured sizes and the chosen placement.
Die Ausgabe trägt ein Linearisierungs-Parameter-Dictionary als ihr erstes Objekt und eine oder mehrere Hinweistabellen, die die Seiten indizieren, genau so, wie es der Standard vorschreibt (Spec: ISO 32000-2, Annex FISO 32000-2 Annex F). Diese Hinweistabellen arbeiten neben einer traditionellen Querverweistabelle – sie erfassen die Byte-Bereiche und Positionen, die ein Reader abrufen muss, während die Querverweistabelle der Index ist, der jede Objektnummer zu ihrem exakten Byte-Offset zuordnet. Der Linearisierer von NextPDF gibt die klassische Tabellenform aus und entfernt dabei jeden Querverweis-Stream, sodass der Leser, sobald ein Ausschnitt eintrifft, ein Objekt direkt über seinen Offset aus dieser Tabelle auflöst (Spec: ISO 32000-2, §7.5.4ISO 32000-2 §7.5.4).
Ein nützliches mentales Modell: Ein normales PDF ist ein Buch, dessen Inhaltsverzeichnis auf den hinteren Umschlag geklebt ist. Ein linearisiertes PDF verschiebt dieses Inhaltsverzeichnis nach vorn und fügt einen seitenweisen Seitenzahl-Index hinzu, sodass Sie jede Seite direkt aufschlagen können. Die Kapitel bleiben unverändert. Nur die Navigation ist umgezogen.
Praktisches Beispiel
Abschnitt betitelt „Praktisches Beispiel“Die Linearisierung ist ein expliziter, umschaltbarer Schritt. Sie fordern sie an; die Engine führt den Neuaufbau durch und gibt eine Fast-Web-View-Datei aus.
<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Contracts\OutputDestination;
$document = Document::createStandalone();$document->setTitle('Annual Report');
for ($page = 1; $page <= 200; $page++) { $document->addPage(); $document->setFont('helvetica', '', 12); $document->cell(0, 12, "Page {$page}", newLine: true);}
// Linearization is requested explicitly — an operability choice, not a default.// enableLinearization() takes no arguments; it is the on-switch. The engine// runs the MEASURE -> PLACE -> FILL rebuild and emits a Fast-Web-View file// with the first page and hint table at the front.$document->enableLinearization();
$bytes = $document->output(dest: OutputDestination::String);Der Seiteninhalt ist exakt das, was Sie verfasst haben. Der Unterschied liegt in der Dateireihenfolge der Bytes, die Sie empfangen, und in der Hinweistabelle, die nun nahe dem Anfang sitzt.
Sie verifizieren das Ergebnis so, wie es ein Fremder täte – mit einem externen Prüfprogramm:
$ qpdf --check-linearization report.pdfreport.pdf: no linearization errorsqpdf --check-linearization sucht nicht nur nach einem Flag. Es leitet die Offsets,
die die Datei behauptet, neu her und bestätigt, dass sie zutreffen: dass die
Objekte der ersten Seite wirklich dort liegen, wo das Linearisierungs-Dictionary es
angibt, dass die Hinweistabelle auf die richtigen Bytes zeigt und dass die Struktur
Annex F entspricht. Eine Datei, die über ihr eigenes Layout lügt, fällt bei dieser
Prüfung durch, selbst wenn sie auf den ersten Blick linearisiert aussieht.
Häufiges Missverständnis
Abschnitt betitelt „Häufiges Missverständnis“Die häufige Annahme ist, dass die Linearisierung die Datei komprimiert oder den Download insgesamt schneller macht. Sie tut weder das eine noch das andere. Eine linearisierte Datei ist oft ein paar Bytes größer, weil sie die zusätzlichen Hinweistabellen trägt. Die Gesamtübertragungszeit für das gesamte Dokument bleibt im Wesentlichen unverändert.
Was sich ändert, ist der Zeitpunkt, zu dem das erste nützliche Pixel erscheint. Die Linearisierung optimiert die Time-to-first-page, nicht die Gesamtzahl der Bytes. Es ist eine Latenzfunktion, keine Komprimierungsfunktion. Die erste Seite früh zu streamen und die Datei schnell herunterzuladen sind unterschiedliche Ziele, und die Linearisierung dient dem ersten.
Ein zweites Missverständnis ist, dass jeder Webserver eine linearisierte Datei streamen wird. Der Reader muss Byte-Bereiche abrufen, was bedeutet, dass der Server HTTP-Range-Anfragen erfüllen muss. Die meisten tun das, aber ein Server, der stets die gesamte Datei zurückgibt, verwandelt Fast Web View wieder in ein langsames Warten auf die ganze Datei – die Datei ist bereit zu streamen, aber der Transport ist es nicht.
Grenzen und Abgrenzungen
Abschnitt betitelt „Grenzen und Abgrenzungen“NextPDF bietet volle Core-Unterstützung für die Erzeugung linearisierter Dateien: einen produktiven dreistufigen Linearisierer, der das Parameter-Dictionary und die Hinweistabellen ausgibt und eine externe Annex-F-Prüfung besteht.
| Edition | Availability |
|---|---|
| Core | Volle Unterstützung. NextPDF erzeugt linearisierte (Fast-Web-View-)Ausgabe durch einen produktiven dreistufigen MEASURE → PLACE → FILL-Neuaufbau, konform zu ISO 32000-2 Annex F. |
| Pro | Not in this edition |
| Enterprise | Not in this edition |
Zwei Abgrenzungen sind erwähnenswert. Erstens ist die Linearisierung eine Eigenschaft einer Revision. In dem Moment, in dem Sie eine inkrementelle Aktualisierung anhängen – eine Signatur, eine Formularausfüllung, eine Bearbeitung –, gehen die angehängten Bytes ans Ende und die Datei ist nicht mehr streng linearisiert, bis sie neu aufgebaut wird. Das ist ein normaler Kompromiss, kein Defekt; siehe inkrementelle Aktualisierungen dazu, warum Anhängen das richtige Verhalten für signierte Dokumente ist.
Zweitens kontrolliert die Engine die Datei. Sie kontrolliert nicht das Netzwerk. Fast Web View löst sein Versprechen nur ein, wenn die ausliefernde Verbindung Byte-Range-Anfragen erfüllt; die Bytes können perfekt linearisiert sein und dennoch als ein langsamer Klumpen eintreffen, wenn der Server darauf besteht, die gesamte Datei zu senden.
Verwandte Dokumente
Abschnitt betitelt „Verwandte Dokumente“- Die Anatomie einer PDF-Datei – der Header, der Body, die Querverweistabelle und der Trailer, die die Linearisierung umordnet. Lesen Sie dies zuerst, um zu sehen, was umgeordnet wird.
- Speicher und Streaming – Streaming auf der Schreibseite, eine andere Achse: wie NextPDF den Speicher flach hält, während es Bytes erzeugt, im Gegensatz dazu, wie ein Leser sie einliest.
- Inkrementelle Aktualisierungen und ihre Bedeutung – warum eine spätere Bearbeitung ans Ende angehängt wird und was das für das an den Anfang geladene Layout einer linearisierten Datei bedeutet.
- Streams und Filter – was in den Body-Objekten liegt, auf die die Hinweistabelle zeigt, und wie sie komprimiert werden.
Glossar
Abschnitt betitelt „Glossar“- Linearisierung – der Neuaufbau, der die erste Seite und einen Navigationsindex an den Anfang lädt, sodass ein Reader rendern und navigieren kann, bevor die gesamte Datei eintrifft. Der Name des Standards für das Ergebnis.
- Fast Web View – der verbraucherseitige Name für ein linearisiertes PDF; die beiden Begriffe beschreiben dieselbe Datei.
- Hinweistabelle – die Struktur innerhalb einer linearisierten Datei, die die Byte-Bereiche und -Positionen jeder Seite und der gemeinsam genutzten Objekte erfasst, sodass ein Reader weiß, welche Ausschnitte er anfordern muss; die Querverweistabelle ordnet dann eine Objektnummer ihrem exakten Byte-Offset zu.
- Linearisierungs-Parameter-Dictionary – das erste Objekt in einer linearisierten Datei; es deklariert die zentralen Offsets (Länge der ersten Seite, Position der Hinweistabelle, Position des Haupt-Querverweises), die das Abrufen bei Bedarf ermöglichen.
- Byte-Range-Anfrage – eine HTTP-Anfrage nach einem Ausschnitt einer Datei statt nach dem Ganzen; der Transportmechanismus, von dem Fast Web View abhängt.
- Time-to-first-page – wie lange es dauert, bis ein Leser die erste Seite sieht. Die Latenz, die die Linearisierung optimiert, abzugrenzen von der gesamten Download-Zeit.