Untereinander gelegte Blöcke, Seite um Seite

Stapeln Sie Absätze, Tabellen, Bilder und Linien in Lesereihenfolge; sie finden ihre Seiten selbst, und was nicht passt, läuft im nächsten Kasten weiter.

In einem echten PDF ansehen

Ein Bericht, der sich selbst setzt

Ein Titel, eine Linie, zwei Absätze, eine Überschrift, eine Tabelle mit sechsundzwanzig Zeilen und eine Fußnote, in Lesereihenfolge übergeben und von der Engine über zwei Seiten umbrochen.

Das PDF öffnen Das vollständige Beispiel ansehen

Auch zu sehen in: Ein ganzer Roman auf Englisch · Ein ganzer Roman auf Französisch · Seite eins zeigen, bevor die Datei angekommen ist

Zusammenfassung

Denken Sie an einen Bericht, den Sie schreiben, ohne je zu entscheiden, wo eine Seite endet. Sie geben einen Rahmen für das erste Blatt und einen für die folgenden — der erste ist oft kürzer, weil darüber ein Briefkopf steht. Ein Absatz teilt sich dann zwischen zwei Zeilen und eine Tabelle zwischen zwei Reihen, und die Kopfzeile der Tabelle wird über dem fortgesetzten Teil erneut gezeichnet. Sie können auch sagen, dass ein Block nie geteilt werden darf, und er wandert vollständig auf das nächste Blatt, statt geteilt zu werden. Und wo ein Absatz geteilt wird, sagen Sie, wie viele seiner Zeilen unten auf dem Blatt bleiben und wie viele oben auf das nächste wandern müssen, damit kein Leser je einem Schusterjungen oder einem Hurenkind begegnet.

Technisch

Angefordert mit "type": "stack"

Ein stack-Element legt eine Liste von Blöcken in Lesereihenfolge die Seite hinab und bricht die Seiten selbst um: Kein Block gibt eine Ordinate an, jeder steht unter dem, wo der Block darüber endete, und was keinen Platz mehr hat, läuft im nächsten Kasten weiter. Es nimmt zwei Kästen an: first, den Platz auf der Seite, auf der es beginnt, und next, den Platz auf jeder folgenden Seite. Ein Stapel mit Text lehnt zwei Kästen unterschiedlicher Breite ab — seine Zeilen werden einmal umbrochen, auf eine Breite. Fünf Arten von Blöcken gehören hinein: text, zeilenweise zwischen Seiten geteilt; table, zeilenweise geteilt, mit neu gezeichneten Kopfzeilen; image, in der angegebenen Größe gezeichnet und nie geteilt; rule, eine Linie über die Breite des Kastens; und space, frei gelassener Raum, der nichts zeichnet. Ein Textblock und ein Tabellenblock nehmen jeweils keep_together an, das den ganzen Block auf die nächste Seite verschiebt, statt ihn zu teilen. Ein Textblock nimmt außerdem orphans und widows an, die Mindestzahl an Zeilen eines seiner Absätze, die am Fuß eines Kastens bleiben, in dem er geteilt wird, und die Mindestzahl, die an den Kopf des folgenden Kastens getragen wird: Eine Teilung, die weniger zurücklassen oder hinübertragen würde, wird im Absatz nach oben verschoben, und der ganze Absatz rückt weiter, wenn selbst das scheitert. Beide werden innerhalb eines Absatzes gelesen und nirgends sonst, sodass ein Block, dessen Zeilen jeweils ein eigener Absatz sind, dort geteilt wird, wo der Kasten endet.

Anfrageschema

Erforderliche Schlüssel: blocks, ein Array von Blöcken; first, ein Objekt aus vier Koordinaten llx, lly, urx, ury; next, dasselbe Objekt für jede Seite nach der ersten. Ein Block hat eine von fünf Formen, jede durch ihren eigenen type benannt. text nimmt content an, EINE Vorlagenzeichenkette, in der ein Zeilenumbruch einen Absatz beendet und ein Tabulator den nächsten Stopp erreicht, dazu die Einstellungsschlüssel eines flow, flach daneben geschrieben (font, font_size, align, last_align, overlong, leading, word_spacing, break_after, break_at_punctuation, color, shadow, left_indent, right_indent, first_line_indent, space_before), dazu keep_together, orphans und widows, zwei ganze Zahlen über null, jede die Zeilenzahl, die die auf dieser Website laufende Version der Engine einhält — 2 —, wenn sie weggelassen wird. table nimmt den Rumpf eines table-Elements, flach geschrieben, ohne Kasten — der Stapel gibt ihm den verbleibenden Platz —, dazu keep_together. image nimmt image an, den Namen eines mitgelieferten Bildes, mit width und height in Punkt. rule nimmt nur stroke an und ist so hoch, wie diese Kontur breit ist. space nimmt nur height an. Optionale Schlüssel am Stapel: id, eine Zeichenkette, an der sich ein anderes Element ausrichtet; start, wo der Stapel beginnt, standardmäßig die erste Seite; layer, der Name einer deklarierten Ebene; guides, ein Objekt mit erforderlichem stroke, die dünnen Linien, mit denen die Kästen umrandet werden, in denen der Stapel gearbeitet hat — der Kasten, in dem die Blöcke aufgetragen wurden, das Band, das jeder Block einnahm, und darin der Streifen, auf dem jede Textzeile landete, und der Kasten, den jede Tabellenzelle malt —, fehlt es, wird nichts umrandet. Ablehnungen: first und next mit zwei verschiedenen Breiten, wenn ein Textblock vorhanden ist; ein orphans oder widows von null. Ein auf einem Block geschriebener Schlüssel, den dieser nicht liest, wird stillschweigend ignoriert, nicht abgelehnt.

Eine vollständige Anfrage, die ein PDF erzeugt

{
  "standard_fonts": [{"name": "sans", "face": "helvetica"}],
  "items": [
    {
      "type": "stack",
      "start": "on_new_page",
      "first": {"llx": 72, "lly": 72, "urx": 523, "ury": 700},
      "next": {"llx": 72, "lly": 72, "urx": 523, "ury": 780},
      "blocks": [
        {
          "type": "text",
          "content": "Conditions of carriage",
          "font": "sans",
          "font_size": 16,
          "keep_together": true
        },
        {"type": "space", "height": 8},
        {"type": "rule", "stroke": {"width": 0.8, "color": [0.7, 0.7, 0.75]}},
        {"type": "space", "height": 10},
        {
          "type": "text",
          "content": "Goods travel at the risk of the sender unless insured.",
          "font": "sans",
          "font_size": 10,
          "orphans": 3,
          "widows": 3
        }
      ]
    }
  ]
}

Die Zeile, die es sendet, in drei Sprachen

Text

Ein auf der Seite platzierter Textblock Text in Absätzen, mit Einzügen und Tabstopps Ein quer über die Seite gelegter Stempel Eine Wortzeile entlang eines Pfads gesetzt Eine Reihe von Glyphen, über ihre Nummer angefordert

Wohin als Nächstes

Jeder JSON-Schlüssel einer Anfrage, auf einer Seite Die übrigen zweiundzwanzig Dinge, die Sie zeichnen können

Die Preise ansehen Die Beispiele ansehen