Les formes posées sur ce qu’une page dessine

Mettre des carrés, des cercles, des traits et des contours sur une page, chacun avec sa couleur, son bord et sa note.

Le résultat dans un vrai PDF

Tampons ajustés à un rectangle

Ce qu’un document dit de lui-même — DRAFT, COPY, PAID — posé en travers de rectangles de quatre formes différentes et mis à l’échelle de chacun, puis SPECIMEN donné une seule fois au document et posé sur chaque page paire.

Ouvrir le PDF Voir l’exemple complet

Également dans les exemples : Un contrat bâti sur trois modèles fournis · Une liste de réserves, chaque défaut marqué sur le plan · Un registre dont chaque page dit d’où elle vient

Résumé

Certaines marques se placent au-dessus d’une page plutôt que dedans : le cercle autour d’une clause, le trait qui relie un commentaire à une figure, le contour tracé autour d’une zone de plan. Le logiciel de lecture les montre par-dessus la page, les liste à côté d’elle, et on peut lui demander de ne pas les imprimer. Chacune contient une note que le logiciel de lecture affiche quand la souris s’arrête dessus.

Techniquement

Écrit au premier niveau d’une requête, sous "page_review_marks"

page_review_marks écrit le tableau /Annots d’une page : une entrée par page, qui liste ses formes dans l’ordre où elles sont écrites. Treize sortes de formes sont acceptées, chacune désignée par type : square et circle, inscrits dans le rectangle indiqué ; line, entre deux points ; polygon, une suite fermée de segments ; polyline, une suite ouverte ; redaction, qui désigne une partie de la page à retirer ; text_mark, qui surligne un passage de texte, le souligne, le barre ou le souligne d’un trait ondulé ; caret, qui marque l’endroit où insérer quelque chose ; ink, un tracé à main levée ; sticky_note, une icône dont le texte s’ouvre à côté d’elle dans le logiciel de lecture ; file_attachment, une icône qui ouvre un fichier contenu dans le document ; free_text, des mots placés dans un cadre qui leur est propre ; et stamp, un tampon apposé sur son cadre. Toutes les formes acceptent six clés communes, et quand une page reçoit plusieurs entrées, seule la dernière est prise en compte.

Schéma de la requête

  • page_review_marks — tableau, facultatif, vide par défaut.
  • page_review_marks[].page — entier ≥ 1, obligatoire. La page concernée par les formes.
  • page_review_marks[].shapes — tableau, obligatoire. Les formes que cette page contient, dans l’ordre où elles sont écrites.
  • shapes[].type — chaîne, obligatoire. Une valeur parmi square, circle, line, polygon, polyline, redaction, text_mark, caret, ink, sticky_note, file_attachment, free_text, stamp.
  • square et circle — llx, lly, urx, ury : nombres, tous obligatoires, le rectangle dans lequel la forme est inscrite. interior — couleur, facultative, ce qui la remplit. effect — plain ou cloudy, facultatif, la façon dont le bord est tracé.
  • line — x1, y1, x2, y2 : nombres, tous obligatoires. endings — objet, facultatif, ce que reçoit chaque extrémité, sous from et to, chacune valant none (rien de dessiné, valeur d’une extrémité omise), square, circle, diamond, open_arrow, closed_arrow, butt, reverse_open_arrow, reverse_closed_arrow ou slash. interior — couleur, facultative, ce qui remplit ces extrémités.
  • polygon et polyline — vertices : tableau de paires de nombres, obligatoire. interior — couleur, facultative. polygon prend aussi effect, polyline prend aussi endings.
  • redaction — llx, lly, urx, ury : nombres, tous obligatoires, la partie marquée. over — tableau, facultatif, les emplacements à l’intérieur, chacun de quatre coins dans le sens inverse des aiguilles d’une montre ; absent, c’est le rectangle lui-même qui est marqué. fill — couleur, facultative, ce dont l’emplacement vidé est rempli. overlay_text — chaîne, facultative, les mots imprimés là où était le contenu. repeating — booléen, facultatif, faux par défaut, si ces mots sont répétés jusqu’à remplir l’emplacement. aligned — une valeur parmi left (par défaut), center et right, la position de ces mots ; lu seulement quand il y a des mots.
  • Une marque de caviardage énonce ce qui doit partir. Elle ne l’enlève pas. Ce que décrivent fill, overlay_text et aligned, c’est la page telle qu’elle sera une fois qu’un logiciel de lecture aura appliqué la marque et réécrit le document : tant que cela n’a pas eu lieu, les mots sont toujours dans le fichier sous la marque, et une recherche les trouve.
  • text_mark — style : highlight, underline, strike_out ou squiggly, obligatoire. over — tableau, obligatoire : le passage marqué, avec une zone par ligne de texte, chacune donnée par ses quatre coins dans le sens inverse des aiguilles d’une montre ; un tableau vide est refusé. Un highlight est peint dans sa couleur color, qu’il doit indiquer, et cette couleur se multiplie avec la page pour que les lettres restent lisibles ; les trois autres marques sont tracées dans leur couleur, en noir si elles n’en indiquent aucune.
  • caret — llx, lly, urx, ury : nombres, tous obligatoires, le rectangle qu’occupe le signe d’insertion, rempli de sa color. inset — quatre nombres, facultatif, de combien il est tracé en retrait des bords gauche, bas, droit et haut. paragraph — booléen, facultatif, faux par défaut, si l’insertion est un nouveau paragraphe.
  • ink — strokes : tableau, obligatoire, les traits d’un gribouillis tracé à main levée, chacun étant un tableau de points de deux nombres dans l’ordre où la plume les a parcourus, au moins deux par trait.
  • sticky_note — x, y : nombres, obligatoires, le coin inférieur gauche de son icône, de vingt points de côté. icon — l’une de note (par défaut), comment, key, help, new_paragraph, paragraph et insert. open — booléen, facultatif, faux par défaut : indique si son texte s’affiche déplié à l’ouverture du document. Son contents est obligatoire : c’est le texte qu’elle affiche une fois ouverte.
  • file_attachment — x, y : nombres, obligatoires, le coin inférieur gauche de son icône, de vingt points de côté. file — chaîne, obligatoire, le nom d’un des attachments de la requête, que l’icône ouvre. icon — l’une de push_pin (par défaut), graph, paperclip et tag.
  • free_text — llx, lly, urx, ury : nombres, tous obligatoires, le cadre. text — chaîne, obligatoire, les mots placés dans le cadre, qui forment aussi son contents, sauf si la forme en indique d’autres ; un cadre qui ne peut pas contenir toutes leurs lignes est refusé. style — objet, obligatoire, la façon de les composer : la font, la font_size, la color, l’align et les retraits d’un bloc de texte composé, la couleur étant exprimée en nombres. callout — objet, facultatif, le trait qui relie le cadre à un endroit de la page : line, deux ou trois points, en commençant par cet endroit, et ending, l’un des styles d’extrémité de ligne, dessiné à cet endroit. typewriter — booléen, facultatif, faux par défaut, indique si les mots sont tapés directement sur la page, sans cadre ; incompatible avec callout.
  • stamp — llx, lly, urx, ury : nombres, tous obligatoires, le cadre qu’il occupe. words — objet, facultatif, la ligne apposée en travers du cadre : le content, la font, le span, le slant, la color et le shadow d’un élément de type tampon ; en son absence, le tampon affiche le contour du cadre. icon — facultatif, le tampon de la norme qu’il représente : approved, experimental, not_approved, as_is, expired, not_for_public_release, confidential, final, sold, departmental, for_comment, top_secret, draft ou for_public_release.
  • Champs communs à toutes les formes : contents — chaîne, facultative, la note que le logiciel de lecture affiche. name — chaîne, facultative, le nom sous lequel la forme est connue. color — couleur, facultative, celle du bord. border — objet, facultatif, une width en points et un dash facultatif. layer — chaîne, facultative, le calque déclaré sur lequel la forme est dessinée.
  • shapes[].flags — objet, facultatif. printed — booléen, si la forme est imprimée. hidden, no_view, no_zoom, no_rotate, invisible, read_only — booléens, faux par défaut.
  • shapes[].appearance — tableau, facultatif. Les formes avec lesquelles la marque est dessinée, à la place de celles que construit ce qu’elle déclare : les articles que contient un dessin nommé — path, rect, line — dans les coordonnées de la page. Rien n’est comparé à ce que la marque déclare. Elles ne contiennent pas de texte et peignent dans des couleurs données en nombres : un dégradé, un motif répété, un espace de couleur déclaré ou un état graphique est refusé.
  • overlay — tableau, facultatif, sur une redaction. Les formes avec lesquelles la zone vidée est dessinée une fois la marque appliquée : les mêmes articles sous la même règle, mesurés depuis le coin inférieur gauche de son rectangle plutôt que depuis celui de la page.
  • shapes[].flags prend aussi locked, qui interdit de déplacer, de redimensionner et de supprimer la marque tout en laissant sa note libre de changer ; locked_contents, qui interdit de changer sa note tout en la laissant libre de bouger ; et toggle_no_view, qui inverse no_view tant que le pointeur est sur la marque ou qu’elle est sélectionnée. Tous trois sont des booléens, false par défaut.
  • L’icon d’une note autocollante prend aussi cross_hairs, right_arrow, right_pointer, up_arrow et up_left_arrow. Une note qui fixe un state — marked ou unmarked, ou accepted, rejected, cancelled ou completed — donne cet état à la forme que nomme son in_reply_to. Chaque forme prend aussi rich_contents, ses mots comme corps d’un document XHTML ; opacity, de 0 à 1 ; grouped_with, le name de la forme en tête du groupe qu’elle rejoint ; et popup, {"llx", "lly", "urx", "ury", "open"}, la fenêtre où le logiciel de lecture affiche le texte de la forme.

Une forme est posée par-dessus la page, pas dans ce que la page dessine : elle reste en dehors du texte qu’un lecteur copie, et en dehors de la structure que le document déclare sur lui-même.

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

{
  "attachments": [
    {
      "name": "statement_4711",
      "file_name": "statement-4711.xml",
      "description": "The statement as a data file",
      "media_type": "text/xml",
      "relationship": "data",
      "modified": "2026-08-03T09:15:00+02:00"
    }
  ],
  "page_review_marks": [
    {
      "page": 1,
      "shapes": [
        {
          "type": "square",
          "llx": 60,
          "lly": 640,
          "urx": 300,
          "ury": 700,
          "color": [0.8, 0.1, 0.1],
          "border": { "width": 2 },
          "effect": { "cloudy": { "intensity": 1.5 } },
          "contents": "The clause under discussion",
          "flags": { "printed": false }
        },
        {
          "type": "line",
          "x1": 320,
          "y1": 700,
          "x2": 520,
          "y2": 660,
          "endings": { "from": "circle", "to": "open_arrow" },
          "color": [0.8, 0.1, 0.1],
          "border": { "width": 1.5 },
          "contents": "Where the clause is answered"
        },
        {
          "type": "text_mark",
          "style": "highlight",
          "over": [[[60, 600], [240, 600], [240, 614], [60, 614]]],
          "color": [1.0, 0.85, 0.2],
          "contents": "The passage under discussion"
        },
        {
          "type": "text_mark",
          "style": "underline",
          "over": [[[60, 580], [240, 580], [240, 594], [60, 594]]],
          "color": [0.75, 0.1, 0.1]
        },
        {
          "type": "text_mark",
          "style": "strike_out",
          "over": [[[60, 560], [240, 560], [240, 574], [60, 574]]],
          "color": [0.75, 0.1, 0.1]
        },
        {
          "type": "text_mark",
          "style": "squiggly",
          "over": [[[60, 540], [240, 540], [240, 554], [60, 554]]],
          "color": [0.75, 0.1, 0.1]
        },
        {
          "type": "sticky_note",
          "x": 250,
          "y": 596,
          "icon": "comment",
          "color": [1.0, 0.85, 0.2],
          "contents": "Check this passage against the signed copy"
        },
        {
          "type": "file_attachment",
          "x": 520,
          "y": 596,
          "file": "statement_4711",
          "icon": "paperclip"
        },
        {
          "type": "free_text",
          "llx": 300,
          "lly": 540,
          "urx": 535,
          "ury": 560,
          "text": "Totals to check against the delivery note",
          "style": {
            "font": "sans",
            "font_size": 9,
            "color": [0.75, 0.1, 0.1],
            "left_indent": 4,
            "right_indent": 4
          },
          "color": [0.75, 0.1, 0.1],
          "callout": {
            "line": [[245, 567], [270, 550], [300, 550]],
            "ending": "open_arrow"
          }
        },
        {
          "type": "stamp",
          "llx": 300,
          "lly": 640,
          "urx": 500,
          "ury": 696,
          "icon": "approved",
          "words": {
            "content": "APPROVED",
            "font": "sans",
            "slant": "flat",
            "color": [0.1, 0.5, 0.2]
          },
          "contents": "Approved by the purchasing department"
        }
      ]
    }
  ],
  "standard_fonts": [{ "name": "sans", "face": "helvetica" }],
  "items": [
    {
      "type": "text",
      "rect": { "llx": 60, "lly": 740, "urx": 535, "ury": 765 },
      "content": ["A square laid over the clause, and kept off the paper"],
      "font": "sans",
      "font_size": 14
    }
  ]
}

La ligne qui l’envoie, en trois langages

La feuille, et ce qu’on pose dessous

La taille des pages Une taille propre à certaines pages L’unité dans laquelle une page est mesurée Où se place la feuille d’une page dans le dessin Les zones que la page déclare Dans quel sens une page s’affiche Comment une page arrive, et combien de temps elle reste Un PDF que vous envoyez, pris comme pages du document Jusqu’où un PDF fourni a le droit de se déplier Le modèle sous les pages Un filigrane posé sur une suite de pages Zones nommées à remplir sur une page

Où aller ensuite

Toutes les clés JSON d’une requête, en une page Les quarante et un autres réglages d’une requête

Voir les prix Voir les exemples