Text in Absätzen, mit Einzügen und Tabstopps

Legen Sie mehrere Absätze in einen Rahmen, mit Erstzeileneinzug, Abstand dazwischen, Aufzählungslisten und sauberen Zahlenspalten.

In einem echten PDF ansehen

Listen aus einem Einzug und einem Tabstopp

Aufzählungen, nummerierte und verschachtelte Listen, jede aus einem nach links hängenden Einzug und einem Tabstopp gebaut statt aus einem eigenen Listenobjekt: Das Zeichen sitzt in dem Raum, den der Einzug öffnet, und jede Zeile unter der ersten beginnt dort, wo der Tabulator den Text hingesetzt hat.

Das PDF öffnen Das vollständige Beispiel ansehen

Auch zu sehen in: Eine Seite, deren Buchstaben je ein Byte kosten · In Spalten gegossener Text · Absatzeinzüge und -abstände

Zusammenfassung

Ein Brief, ein Vertrag, Geschäftsbedingungen: Text, der weiterläuft und sich dabei von selbst ordnet. Die Zeilen können am linken Rand stehen, in der Mitte sitzen oder sich auf beide Ränder zugleich strecken. Ein Aufzählungszeichen steht allein im Rand, während sein Text sauber darunter bündig steht. Und eine Reihe kleiner Punkte kann von einer Überschrift bis zu einem Preis laufen, wie in einem Inhaltsverzeichnis.

Technisch

Angefordert mit "type": "flow"

Ein flow-Element nimmt seinen Text als eine einzige Zeichenkette: Ein Zeilenumbruch beendet einen Absatz, ein Tabulator springt zum nächsten Tabstopp, und das Ergebnis gelangt als positionierter Text in den Inhaltsstream der Seite. Der ganze Block wird in einer Schrift und einer Größe gesetzt, was Raum für Absatzeinstellungen lässt, alle in Punkt gemessen: linker, rechter und Erstzeileneinzug, Abstand davor und danach, die Lage der ersten Grundlinie und der unter der letzten freigehaltene Raum, die Ausrichtung der letzten Zeile eines Absatzes und ein Füllzeichen. Tabstopps werden in relativen Schritten gesetzt, wie bei der Schreibmaschine, oder über ein explizites Lineal, jeder Stopp links, zentriert, rechts oder an einem Dezimalzeichen ausgerichtet. Die hängende Liste ist eine Kurzform, die linken Einzug, Erstzeileneinzug und den Stopp für den Fließtext in einem Zug setzt.

Anfrageschema

Erforderliche Schlüssel: rect; content, eine einzige Zeichenkette; font; font_size. Optional: align (standardmäßig left, außerdem right, center, justify); last_align, die Ausrichtung der letzten Zeile jedes Absatzes (fehlt sie: wie der Rest, außer bei justify, wo sie linksbündig steht); overlong (standardmäßig overflow, break); leading (standardmäßig 1,2 × font_size); break_after; break_at_punctuation; replacing, ein Objekt mit einzelnen Zeichen als Schlüsseln, jeweils mit dem Wert {"each": "…"}, der jedes Vorkommen ersetzt, oder {"run": "…"}, der jede zusammenhängende Folge dieses Zeichens als Ganzes ersetzt, angewandt vor dem Zeilenumbruch, wobei eine leere Zeichenkette das Zeichen entfernt; color (standardmäßig Schwarz); outline, ein Objekt aus width, einer erforderlichen Zahl in Punkt, color (standardmäßig Schwarz) und filled (standardmäßig false), die Buchstaben an ihren Rändern umrandet und hohl, sofern filled sie nicht auch deckend zeichnet; shadow (dx, dy, color, alle drei erforderlich); left_indent, right_indent, first_line_indent, Zahlen in Punkt, wobei die letzte einen negativen Wert annimmt, der die erste Zeile links aus den anderen heraushängen lässt; space_before, space_after; first_baseline, einer der Werte "leading" (Standard), "ascender", "cap_height" oder {"points": n}; last_baseline, einer der Werte "none" (Standard), "descender" oder {"points": n}, der Raum, den der Block unter seiner letzten Grundlinie freihält und an dem ein kastenfüllender Zeilenabstand gemessen wird, sodass zwei ungleich lange Blöcke auf einer Linie aus Farbe enden statt auf einer Linie aus Grundlinien; leader, ein Zeichen; tabs, ein Objekt aus method (standardmäßig relative, typewriter, ruler), size ({"fraction": n} oder {"points": n}, standardmäßig 7,5 % der Zeile), ruler (Array von Zahlen, standardmäßig leer), alignments (Array aus left, center, right, decimal, standardmäßig leer) und align_char (standardmäßig .); hanging_list, ein Objekt aus marker und body, beide Zahlen, beide erforderlich; fill_leading, ein Objekt mit einem erforderlichen limit, einer Zahl in Punkt, der Zeilenabstand, den die Zeilen annehmen, damit die letzte auf dem Boden des Rechtecks endet — die Zeilen werden auseinandergerückt und sonst nichts, der Raum um einen Absatz, der Abstand unter der letzten Grundlinie und die Höhe des Textes selbst bleiben, wo sie sind, und ein limit unter dem Zeilenabstand, den der Block annehmen würde, lässt diesen Zeilenabstand, wo er ist; fit_size, ein Objekt mit einem erforderlichen floor, einer Zahl in Punkt, die Größe, die der Block selbst berechnet, damit sein ganzer Text in das Rechteck passt — die versuchten Größen gehen von der verlangten abwärts, jede auf den Kasten umbrochen und daran gemessen, und die größte, die den Text fasst, ist die, in der er gesetzt wird; ein Kasten, den keine Größe füllen kann, setzt den Text in floor und lässt ihn überlaufen; fehlt es, wird der Block in der verlangten Größe gesetzt, was auch überläuft; pages (standardmäßig leer); id; relative_to; transform; rotate; layer. Gegenseitige Ablehnungen: hanging_list mit left_indent, first_line_indent, tabs.method oder tabs.ruler; fill_leading mit leading; transform mit rotate. leader nimmt anstelle eines Zeichens auch ein Objekt an: text, erforderlich, die wiederholte Zeichenkette beliebiger Länge, wobei ". " die Punkte auseinanderrückt; font und font_size, standardmäßig die des Blocks; color, standardmäßig die des Blocks; rise, wie viele Punkt über der Grundlinie die Wiederholungen sitzen, darunter, wo negativ, standardmäßig darauf; fit, wo die Wiederholungen in dem Raum stehen, den sie füllen: from_text (Standard), von den Wörtern nach außen gelegt; from_edge, am fernen Rand endend; grid, auf einem Raster in der Breite der Wiederholung, vom linken Rand des Kastens gezählt, sodass die Wiederholungen jeder Zeile in denselben Spalten stehen; stretch, so viele ganze Wiederholungen, wie passen, so verteilt, dass sie von einem Ende des Raums zum anderen reichen. character_spacing, horizontal_scaling und cut_mark werden gelesen wie bei einem Textblock. Drei Schlüssel führen den Text über sein Rechteck hinaus weiter: continued_in, ein Array von Rechtecken, jedes so breit wie rect, die Kästen, in denen der Text weiterläuft, sobald rect voll ist, der Reihe nach; max_lines, eine Ganzzahl, die höchste Zeilenzahl, die ein Kasten unabhängig von seiner Höhe aufnimmt, wobei null als eins gelesen wird; box_break, ein Zeichen, das im Text als Ende eines Kastens gelesen wird, seinen Absatz beendet, nichts zeichnet und den Rest des Textes in den nächsten Kasten schickt, wobei der Seitenvorschub "\f" das Zeichen ist, das ein anderswo geschriebener Text für einen Seitenwechsel trägt. Ein Block, der einen der drei nennt, legt in jeden Kasten die Zeilen, die er fasst, und zeichnet keine der Zeilen, die übrig bleiben, wenn der letzte Kasten voll ist; ein Kasten einer anderen Breite als rect wird abgelehnt. rule_stacking an einem flow- oder text-Element gibt an, ob die Linien oder die Buchstaben das jeweils andere bedecken: "over", der Standard, legt die Linien nach den Buchstaben und darüber, und "under" legt sie zuerst und malt die Buchstaben darüber.

Eine vollständige Anfrage, die ein PDF erzeugt

{
  "standard_fonts": [{"name": "serif", "face": "times_roman"}],
  "items": [
    {
      "type": "flow",
      "rect": {"llx": 72, "lly": 640, "urx": 523, "ury": 780},
      "content": "First paragraph, set in *one* font.\nSecond paragraph,   indented.",
      "font": "serif",
      "font_size": 11,
      "replacing": {"*": {"each": ""}, " ": {"run": " "}},
      "first_line_indent": 14,
      "space_after": 6,
      "first_baseline": "cap_height",
      "last_baseline": "descender",
      "overlong": "break",
      "tabs": {
        "method": "relative",
        "size": { "points": 36 },
        "ruler": [72, 180],
        "alignments": ["left", "decimal"]
      }
    },
    {
      "type": "flow",
      "rect": {"llx": 72, "lly": 600, "urx": 252, "ury": 630},
      "content": "Delivery\t12.50",
      "font": "serif",
      "font_size": 11,
      "leader": {"text": ". ", "fit": "grid"},
      "tabs": {"method": "ruler", "ruler": [180], "alignments": ["right"]}
    }
  ]
}

Die Zeile, die es sendet, in drei Sprachen

Text

Ein auf der Seite platzierter Textblock Ein quer über die Seite gelegter Stempel Eine Wortzeile entlang eines Pfads gesetzt Eine Reihe von Glyphen, über ihre Nummer angefordert Untereinander gelegte Blöcke, Seite um Seite

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