Ein auf der Seite platzierter Textblock

Setzen Sie Text in ein gewähltes Rechteck, mit seiner Schrift, Größe und Farbe, und geben Sie einem Wort mitten im Satz einen eigenen Stil.

In einem echten PDF ansehen

In die Datei eingebettete Schriften

Text in einer in die Datei eingebetteten Schrift gesetzt, auf die tatsächlich verwendeten Buchstaben gekürzt und weiterhin durchsuchbar, kopierbar und vorlesbar.

Das PDF öffnen Das vollständige Beispiel ansehen

Auch zu sehen in: Wörter, die einer Kurve folgen · Durchgestrichene Preise, ein Schatten hinter dem Titel · Text, der sich an eine Form hält

Zusammenfassung

Als wäre der Rahmen mit Bleistift gezeichnet: Sie sagen, was hineinkommt, und der Text ordnet sich dort an, Zeile für Zeile, bis zum letzten Wort. Unterwegs lässt sich ein Wort hervorheben — größer, fett, unterstrichen, in einer anderen Farbe —, ohne den Satz darum herum zu brechen. Das ist das Bauteil, das überall verwendet wird, vom Kopf einer Rechnung bis zum Kleingedruckten am Fuß der Seite.

Technisch

Angefordert mit "type": "text"

Ein text-Element legt einen Textblock in ein in Punkt angegebenes Rechteck, in Seitenkoordinaten: Der Ursprung liegt links unten, und die senkrechte Achse zeigt nach oben. Die Abschnitte gelangen zwischen BT und ET in den Inhaltsstream der Seite, in den Schriftressourcen, die die Anfrage deklariert hat. Der Inhalt ist eine Liste von Abschnitten: Eine einfache Zeichenkette übernimmt den Stil des Blocks, während ein Objekt nur für sich selbst die Schrift, die Größe, den Zeilenabstand, die Farbe, die Linien (Unterstreichung, Durchstreichung, Überstreichung) oder die um seine Buchstaben gezogene Kontur überschreibt. Ein Abschnitt kann den Server auch nach dem Zeitpunkt der Erzeugung fragen, formatiert mit einem strftime-Muster in der genannten Zeitzone. Der Text akzeptiert die Platzhalter für die Seitennummerierung, aufgelöst, sobald die letzte Seite existiert; so entsteht eine Fußzeile „Seite 3 von 12“, die einmal für das ganze Dokument geschrieben wird.

Anfrageschema

Erforderliche Schlüssel: rect, ein Objekt aus vier Koordinaten llx, lly, urx, ury, jeweils eine Zahl oder ein in Anführungszeichen gesetzter Ausdruck (+ - * / ( ), Variablen {page_width}, {page_height}, {current_page}, {total_pages}, {llx}, {lly}, {urx}, {ury}, maximale Tiefe 100); content, ein Array von Abschnitten; font, eine Zeichenkette, die eine von der Anfrage deklarierte Schrift nennt (standard_fonts, fonts, type1_fonts, type3_fonts, font_chains, font_variants); font_size, eine Zahl in Punkt. Ein Abschnitt hat drei Formen: eine bloße Zeichenkette; ein Objekt {"text": …} mit optionalen font, font_size, leading, underline, strikethrough, overline, color und outline, jeweils nur für diesen Abschnitt geltend; ein Objekt {"date": "strftime pattern"} mit optionaler zone (ein IANA-Name; fehlt er, wird der Zeitpunkt in Weltzeit gestempelt). Optionale Schlüssel am Block: align (standardmäßig left, right, center, justify); overlong (standardmäßig overflow, ein überbreites Wort läuft über den Rand; break schneidet es ab); leading (standardmäßig 1,2 × font_size); break_after, die Zeichen, nach denen eine Zeile umbrechen darf (standardmäßig wird an Leerzeichen und weichen Trennstrichen umbrochen); break_at_punctuation, boolescher Wert, standardmäßig false, mit dem eine Zeile zusätzlich dort umbrechen darf, wo ihre Interpunktion es zulässt, nach einem Schrägstrich oder Bindestrich im Wortinneren; replacing, ein Objekt mit einzelnen Zeichen als Schlüsseln, jedes zugeordnet entweder {"each": "…"}, das an die Stelle jedes Vorkommens tritt, oder {"run": "…"}, das einmal an die Stelle jeder ununterbrochenen Folge dieses Zeichens tritt, vor dem Zeilenumbruch, wobei eine leere Zeichenkette das Zeichen entfernt; die Abschnitte werden als ein einziger Text gelesen: Was ein Zeichen ersetzt, erhält den Stil des Abschnitts, in dem es steht, und eine Folge des Zeichens, die von einem Abschnitt in den nächsten reicht, wird nur einmal ersetzt, im Stil des Abschnitts, in dem sie beginnt; underline, strikethrough, overline, boolesche Werte, standardmäßig false; color (standardmäßig Schwarz); outline, ein Objekt aus width, einer erforderlichen Zahl in Punkt, color (standardmäßig Schwarz) und filled (standardmäßig false), die Kontur um die Buchstaben jedes Abschnitts, der keine eigene nennt, hohl, sofern filled sie nicht auch deckend zeichnet; shadow, ein Objekt, dessen dx, dy und color alle erforderlich sind; pages, ein Array von ab eins gezählten Ganzzahlen, standardmäßig leer, also jede Seite; id, eine Zeichenkette, auf die ein anderes Element verweist; relative_to, ein Objekt aus id, edge (top oder bottom), offset und einem optionalen part (standardmäßig der zuletzt gesetzte Teil); transform, sechs Zahlen; rotate, Grad gegen den Uhrzeigersinn um die Mitte des Rechtecks; layer, der Name einer deklarierten Ebene; clip, ein Objekt mit erforderlichem segments und einer rule (standardmäßig nonzero, even_odd), die Form, durch die der Block gesehen wird; graphics_state, der Name eines deklarierten Zustands, unter dem der ganze Block samt Schatten gezeichnet wird. Gegenseitige Ablehnungen: transform zusammen mit rotate; ein clip mit leeren Segmenten. underline, strikethrough und overline nehmen am Block oder an einem Abschnitt auch ein Objekt {"position": …, "thickness": …} anstelle von true an: Die Linie wird dann mit ihrer Oberkante so viele Punkt von der Grundlinie gezeichnet, darunter, wo die Zahl negativ ist, und so dick. Drei weitere Schlüssel legen fest, wie die Buchstaben stehen: character_spacing, eine Zahl in Punkt, die jede Glyphe zusätzlich zur Breite der Schrift erhält, über null rückt die Buchstaben auseinander, unter null zusammen; horizontal_scaling, ein Prozentsatz dieser Breite, mit dem die Glyphen gezeichnet werden, 80 verschmälert sie auf vier Fünftel und 120 verbreitert sie um ein Fünftel, ihre Höhe bleibt unberührt, eine Skalierung von null oder darunter wird abgelehnt; cut_mark, ein Zeichen, das am Ende einer Zeile gezeichnet wird, wo "overlong": "break" ein für den Kasten zu breites Wort schneidet, wobei seine Breite beim Platzieren des Schnitts frei gehalten wird. Die Zeilen werden auf die Breiten umbrochen, die die ersten beiden ergeben. invisible, ein boolescher Wert, standardmäßig false, wobei true jeden Buchstaben dorthin setzt, wo er gezeichnet würde, und nichts davon malt, sodass die Wörter ausgewählt, durchsucht und kopiert, aber nie gesehen werden: die Wortebene über dem Bild einer gescannten Seite, welche outline der Block auch angibt. described, wo kein Element des Strukturbaums den Block besitzt, ein Objekt aus expansion, actual_text, alt und lang, was der Abschnitt über sich selbst sagt; neben tag oder artifact wird es abgelehnt.

Eine vollständige Anfrage, die ein PDF erzeugt

{
  "standard_fonts": [{"name": "sans", "face": "helvetica"}],
  "items": [
    {
      "type": "text",
      "rect": {"llx": 72, "lly": 740, "urx": 523, "ury": 780},
      "content": ["Invoice 1964413", {"text": " — paid", "color": [0.1, 0.45, 0.25]}],
      "font": "sans",
      "font_size": 16,
      "outline": {"width": 0.4, "color": [0.1, 0.45, 0.25], "filled": true}
    }
  ]
}

Die Zeile, die es sendet, in drei Sprachen

Text

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 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