Un tableau qui se poursuit de page en page

Des lignes et des colonnes qui coulent sur autant de pages qu'il faut, avec en-tête répété, filets, fonds de couleur et cellules fusionnées.

Demandé avec "type": "table"

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.

C'est le tableau que vous connaissez : des lignes, des colonnes, et dans chaque case un texte, un prix ou une image. Quand il y a trop de lignes pour une page, la suite passe toute seule sur la page d'après, et la ligne de titre se réimprime en haut pour qu'on sache toujours ce qu'on lit. Vous choisissez la largeur des colonnes : un nombre fixe, une part de ce qui reste, ou juste ce qu'il faut pour le contenu. Les traits, les fonds gris ou colorés et les cases réunies en une seule se demandent en une phrase, pour tout le tableau d'un coup.

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.

Un article table décrit ses colonnes, ses lignes, et les deux boîtes dans lesquelles il coule : celle de la première page et celle des suivantes. Les largeurs se disent en points, en fraction de l'espace restant, ou se mesurent sur le contenu même des cellules. Un nombre de lignes de tête et de pied se répète sur chaque page. Les filets se déclarent par motif — le cadre, une ligne donnée, toutes les autres horizontales, une colonne comptée depuis la fin — et les fonds par zone, avec une priorité claire : une zone nommée l'emporte sur l'en-tête et le pied, qui l'emportent sur les lignes paires ou impaires, qui l'emportent sur le tableau entier ; à égalité, la dernière déclaration gagne, et le fond posé sur une cellule ou sur une ligne passe devant tout le reste. Une cellule porte un texte, une image, un dessin déclaré ou une page d'un PDF fourni, et couvre plusieurs colonnes ou plusieurs lignes.

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 : columns, objet à widths (tableau de {"points": n}, {"fraction": n}, "content" ou "longest_word") et total (nombre) ; rows, tableau de lignes ; first et next, deux rect. Facultatives : header et footer, entiers à 0 ; rules, tableau d'objets {"rule": …, "stroke": …} où le motif vaut "frame", {"horizontal": n}, {"horizontal_from_end": n}, "horizontal_other", {"vertical": n}, {"vertical_from_end": n} ou "vertical_other" ; fills, tableau d'objets {"area": …, "color": …} où la zone vaut "whole", "header", "footer", "even_rows", "odd_rows", {"row": n}, {"row_from_end": n}, {"column": n} ou {"column_from_end": n} ; id ; start, valant {"page": n}, "on_new_page" ou {"relative_to": …} (défaut : la première page) ; layer. Une ligne : cells obligatoire ; min_height, space (before, after, défaut 0), keep_with_next (défaut false) et fill facultatifs. Une cellule porte exactement un contenu parmi le texte (content, tableau de chaînes, avec font et font_size), image, drawing et pdf (avec page, entier, défaut 1) ; deux contenus, ou aucun, sont refusés. Autres clés de cellule, toutes facultatives : align, overlong, border (top, bottom, left, right, chacun un trait), fill, color, padding et margin (left, right, top, bottom, défaut 0), span et row_span (défaut 1), valign (top par défaut, middle, bottom), leading (défaut 1,2 × la taille), leader, align_on (un caractère).

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": "table",
      "columns": {"widths": [{"fraction": 1.0}, {"points": 80}], "total": 451},
      "first": {"llx": 72, "lly": 600, "urx": 523, "ury": 780},
      "next": {"llx": 72, "lly": 72, "urx": 523, "ury": 780},
      "header": 1,
      "rules": [{"rule": "frame", "stroke": {"width": 0.8}}],
      "rows": [
        {"cells": [
          {"content": ["Description"], "font": "sans", "font_size": 10},
          {"content": ["Amount"], "font": "sans", "font_size": 10, "align": "right"}
        ]},
        {"cells": [
          {"content": ["Rendering engine"], "font": "sans", "font_size": 10},
          {"content": ["4 250.00"], "font": "sans", "font_size": 10, "align": "right"}
        ]}
      ]
    }
  ]
}

La ligne qui l'envoie, en trois langages

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