Die erste Seite, gezeigt, während der Rest ankommt

Verlangen Sie, dass die Datei mit der ersten Seite zuerst geschrieben wird, sodass jemand, der sie über einen Link öffnet, Seite eins fast sofort sieht.

In einem echten PDF ansehen

Seite eins zeigen, bevor die Datei angekommen ist

Dasselbe Dokument zweimal geschrieben: einmal, wie es ist, einmal mit seiner ersten Seite am Anfang der Datei. Die Seite nennt für jedes der beiden die Zahl der Bytes, die ein Browser empfangen haben muss, bevor er Seite 1 zeigt.

Das PDF öffnen Das vollständige Beispiel ansehen

Zusammenfassung

Ein PDF wird von hinten nach vorn geschrieben: Was angibt, wo jede Seite beginnt, steht ganz am Ende der Datei. Die Anzeigesoftware wartet daher auf die ganze Datei, bevor sie etwas zeigen kann, und bei einem vierhundertseitigen Katalog, der über einen Link geöffnet wird, dauert dieses Warten Sekunden. Dasselbe Dokument lässt sich in einer anderen Reihenfolge schreiben, mit seiner ersten Seite und einer Tabelle, wo die anderen beginnen, am Anfang, sodass Seite eins erscheint, während der Rest noch ankommt. Die Datei wird etwas größer und braucht etwas länger zum Schreiben, und sie enthält genau dasselbe Dokument.

Technisch

Auf der obersten Ebene einer Anfrage geschrieben, unter "first_page_first"

Auf true gesetzt, schreibt first_page_first die Datei linearisiert: am Anfang ein Hinweis-Dictionary, dahinter die Objekte der ersten Seite samt den Ressourcen, die sie verwendet, und die Tabellen, die angeben, wo jede weitere Seite und jede Objektkategorie beginnt. Eine Anzeigesoftware, die das versteht, holt den Anfang per Range-Request und stellt Seite eins dar; eine, die es nicht versteht, liest die Datei auf gewöhnliche Weise und verliert nichts. Zwei Optionen lassen sich damit nicht kombinieren, und die Engine lehnt jede davon ab, statt eine Datei zu schreiben, die sich nicht öffnen ließe: compression.object_streams, weil eine linearisierte Datei den Byte-Offset jedes Objekts angibt und ein in einen Stream gepacktes Objekt keinen eigenen hat; und protection, weil der Schlüssel jedes Objekts aus dessen Nummer abgeleitet wird und die Linearisierung die Objekte neu nummeriert.

Anfrageschema

  • first_page_first — boolescher Wert, optional, standardmäßig false. Auf true gesetzt, wird die Datei mit der ersten Seite zuerst geschrieben; auf false gesetzt oder bei fehlendem Schlüssel erscheint sie in der gewöhnlichen Reihenfolge.
  • Daneben abgelehnt: protection und compression mit object_streams auf true. Beide Ablehnungen kommen von der Engine, die sagt, welches der beiden die Datei nicht fassen kann.

Eine vollständige Anfrage, die ein PDF erzeugt

{
  "first_page_first": true,
  "standard_fonts": [{ "name": "sans", "face": "helvetica" }],
  "items": [
    {
      "type": "text",
      "rect": { "llx": 60, "lly": 740, "urx": 535, "ury": 762 },
      "content": ["Page one, while the rest is still arriving"],
      "font": "sans",
      "font_size": 14
    }
  ]
}

Die Zeile, die es sendet, in drei Sprachen

Was gezeichnet wird, und wie es herauskommt

Alles, was sich auf eine Seite zeichnen lässt Das Gewicht der Datei und die Zeit, die sie braucht Ebenen, die die Anzeigesoftware zeigt oder ausblendet Ein Name, der für mehrere Ebenen zugleich steht Eine einmal gemachte Zeichnung, per Schaltfläche gezeigt Aus SVG-Dateien gelesene Zeichnungen Die Ebenensätze, die die Anzeigesoftware anbietet Ebenen, von denen die Anzeigesoftware jeweils eine zeigt

Wohin als Nächstes

Jeder JSON-Schlüssel einer Anfrage, auf einer Seite Die übrigen einundvierzig Einstellungen einer Anfrage

Die Preise ansehen Die Beispiele ansehen