Un bloc de texte posé sur la page

Écrire du texte dans un rectangle choisi, avec sa police, sa taille et sa couleur, et mettre en valeur un mot au milieu d'une phrase.

Résumé

Comme si le cadre avait été tracé au crayon : vous dites ce qui va dedans, et le texte s'y range tout seul, ligne après ligne, jusqu'au dernier mot. En chemin, un mot peut être mis en valeur — plus grand, en gras, souligné, d'une autre couleur — sans casser la phrase autour de lui. C'est le morceau qui sert partout, du titre d'une facture à la mention en petit en bas de page.

Techniquement

Demandé avec "type": "text"

Un article text pose un bloc de texte dans un rectangle donné en points, dans le repère de la page : l'origine est en bas à gauche et l'axe vertical monte. Les fragments entrent dans le flux de la page entre BT et ET, avec les polices déclarées par la requête. Le contenu est une suite de fragments : une chaîne simple prend le style du bloc, un objet redéfinit pour lui seul la police, la taille, l'interligne, la couleur, les filets (souligné, barré, surligné) ou le trait qui cerne ses lettres. Un fragment peut aussi demander au serveur l'instant du rendu, mis en forme au format strftime dans le fuseau nommé. Le texte accepte les substituants de pagination, résolus une fois la dernière page connue, ce qui donne un pied de page « page 3 sur 12 » écrit une seule fois pour tout le document.

Schéma de la requête

Clés obligatoires : rect, un objet de quatre coordonnées llx, lly, urx, ury, chacune un nombre ou une expression entre guillemets (+ - * / ( ), variables {page_width}, {page_height}, {current_page}, {total_pages}, {llx}, {lly}, {urx}, {ury}, profondeur maximale 100) ; content, un tableau de passages ; font, une chaîne nommant une police que la requête a déclarée (standard_fonts, fonts, type1_fonts, type3_fonts, font_chains, font_variants) ; font_size, un nombre de points. Un passage prend trois formes : une simple chaîne ; un objet {"text": …} avec au choix font, font_size, leading, underline, strikethrough, overline, color et outline, valables pour ce seul passage ; un objet {"date": "strftime pattern"} avec un zone facultatif (un nom IANA ; absent, le moment est daté à l'heure universelle). Clés facultatives du bloc : align (left par défaut, right, center, justify) ; overlong (overflow par défaut, un mot trop large dépasse le bord ; break le coupe) ; leading (1.2 × font_size par défaut) ; break_after, les caractères après lesquels une ligne peut être coupée (par défaut, les coupures tombent aux espaces et aux traits d'union conditionnels) ; underline, strikethrough, overline, booléens à false ; color (noir par défaut) ; outline, un objet à width, un nombre de points obligatoire, color (noir par défaut) et filled (false par défaut), le trait qui cerne les lettres de tout passage qui n'en nomme pas : elles restent creuses tant que filled ne les remplit pas aussi ; shadow, un objet dont dx, dy et color sont tous obligatoires ; pages, un tableau d'entiers comptés à partir de 1, vide par défaut, ce qui vaut pour toutes les pages ; id, une chaîne à laquelle un autre élément se réfère ; relative_to, un objet de id, edge (top ou bottom), offset et un part facultatif (par défaut : la dernière partie posée) ; transform, six nombres ; rotate, degrés dans le sens inverse des aiguilles d'une montre autour du centre du rectangle ; layer, le nom d'un calque déclaré ; clip, un objet avec un segments obligatoire et une rule (nonzero par défaut, even_odd), la forme à travers laquelle le bloc est vu ; graphics_state, le nom d'un état déclaré sous lequel le bloc entier, ombre comprise, est dessiné. Refus croisés : transform avec rotate ; un clip dont les segments sont vides.

Une requête entière qui crée un PDF

{
  "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}
    }
  ]
}

La ligne qui l'envoie, en trois langages

Texte

Du texte en paragraphes, avec retraits et tabulations Un tampon en travers de la page Une ligne de mots posée le long d'un chemin Des blocs posés les uns sous les autres, page après page

Où aller ensuite

Toutes les clés JSON d'une requête, en une page Les vingt-deux autres choses que l'on peut dessiner

Voir les prix Voir les exemples