Des blocs posés les uns sous les autres, page après page

Empilez paragraphes, tableaux, images et traits : ce qui ne tient pas au bas d'une page continue sur la suivante, tout seul.

En mots de tous les jours

Écrit pour tout le monde. Il dit ce que cela pose sur une feuille de papier, et ne vous demande rien de plus.

Pensez à un rapport que vous écrivez sans jamais décider où une page finit. Vous mettez un titre, puis deux paragraphes, puis un tableau, puis une image, puis un trait, dans l'ordre où vous voulez qu'on les lise. Vous donnez un cadre pour la première feuille et un cadre pour les feuilles d'après — le premier est souvent plus court, parce qu'un en-tête se tient au-dessus. Tout se met alors en place tout seul : ce qui ne tient pas en bas d'une feuille continue en haut de la suivante, un paragraphe se coupe entre deux lignes et un tableau entre deux rangées, et la rangée de titres du tableau est redessinée au-dessus de la partie qui a continué. Vous pouvez aussi dire qu'un bloc ne doit jamais être coupé, et il passe entier à la feuille suivante plutôt que d'être partagé.

Pour un développeur

Écrit pour celui qui écrit le programme appelant : le modèle, les unités, et les réglages qui portent le poids.

Demandé avec "type": "stack"

Un article stack pose une suite de blocs les uns sous les autres, dans l'ordre de lecture, et coupe les pages tout seul : aucun bloc ne dit d'ordonnée, chacun se met sous ce à quoi le bloc du dessus est arrivé, et ce qui manque de place continue dans la boîte suivante. Il prend deux boîtes : first, la place sur la page où il commence, et next, la place sur chaque page d'après. Une pile qui porte du texte se voit refuser deux boîtes de deux largeurs — ses lignes sont coupées une fois, à une largeur. Cinq sortes de blocs y entrent : text, coupé entre deux pages ligne par ligne ; table, coupé rangée par rangée avec ses rangées de titres redessinées ; image, dessinée à la taille dite et jamais coupée ; rule, un trait sur toute la largeur de la boîte ; et space, de la place laissée vide qui ne dessine rien. Un bloc de texte et un bloc de tableau prennent chacun keep_together, qui pousse le bloc entier à la page suivante plutôt que de le couper.

Chaque clé, avec son défaut

La référence : quelles clés sont obligatoires, lesquelles sont facultatives, ce que vaut chacune par défaut et quelles combinaisons le serveur décline.

Clés obligatoires : blocks, un tableau de blocs ; first, un objet de quatre coordonnées llx, lly, urx, ury ; next, le même objet pour chaque page d'après la première. Un bloc prend l'une de cinq formes, chacune nommée par son propre type. text prend content, UNE chaîne de gabarit où un passage à la ligne finit un paragraphe et une tabulation atteint le taquet suivant, plus les clés de réglage d'un flow écrites à plat à côté (font, font_size, align, last_align, overlong, leading, word_spacing, break_after, color, shadow, left_indent, right_indent, first_line_indent, space_before), plus keep_together. table prend le corps d'un article table écrit à plat, sans dire de boîte — la pile lui donne la place qui reste — plus keep_together. image prend image, le nom d'une image fournie, avec width et height en points. rule prend stroke seul, et tient la hauteur de l'épaisseur de ce trait. space prend height seul. Clés facultatives sur la pile : id, une chaîne contre laquelle un autre article se place ; start, où la pile commence, la première page par défaut ; layer, le nom d'un calque déclaré. Refus : first et next de deux largeurs différentes quand un bloc de texte est présent.

Une requête entière qui le dessine

Envoyez ceci tel quel et un PDF revient. Rien n'en a été retiré.

{
  "standard_fonts": [{"name": "sans", "face": "helvetica"}],
  "items": [
    {
      "type": "stack",
      "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
        }
      ]
    }
  ]
}

La ligne qui l'envoie, en trois langages

Texte

Un bloc de texte posé sur la page Du texte en paragraphes, avec retraits et tabulations Un tampon en travers de la page

Où aller ensuite

Chaque clé d'une requête, en une page Les vingt autres choses que l'on peut dessiner

Voir les prix Voir les exemples

Glossaire

ordre de lecture
L'ordre dans lequel un document est fait pour être lu, qui n'est pas toujours celui dans lequel il a été dessiné. Sur une page à deux colonnes, l'encre peut descendre une colonne puis l'autre, ou passer de l'une à l'autre ; le logiciel qui lit la page à voix haute suit l'ordre déclaré plutôt que de deviner.
calque
Un groupe nommé de choses dessinées sur une page, que l'on affiche ou masque dans son logiciel de lecture, comme un calque posé sur un plan. Un plan peut garder ses cotes sur l'un et ses notes sur l'autre, et un calque peut être réglé pour s'afficher à l'écran et rester hors de l'impression.

Tous les mots que le site explique