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 parmisquare,circle,line,polygon,polyline,redaction,text_mark,caret,ink,sticky_note,file_attachment,free_text,stamp. -
squareetcircle—llx,lly,urx,ury: nombres, tous obligatoires, le rectangle dans lequel la forme est inscrite.interior— couleur, facultative, ce qui la remplit.effect—plainoucloudy, 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é, sousfrometto, chacune valantnone(rien de dessiné, valeur d’une extrémité omise),square,circle,diamond,open_arrow,closed_arrow,butt,reverse_open_arrow,reverse_closed_arrowouslash.interior— couleur, facultative, ce qui remplit ces extrémités. -
polygonetpolyline—vertices: tableau de paires de nombres, obligatoire.interior— couleur, facultative.polygonprend aussieffect,polylineprend aussiendings. -
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 parmileft(par défaut),centeretright, 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_textetaligned, 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_outousquiggly, 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é. Unhighlightest peint dans sa couleurcolor, 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 sacolor.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 denote(par défaut),comment,key,help,new_paragraph,paragraphetinsert.open— booléen, facultatif, faux par défaut : indique si son texte s’affiche déplié à l’ouverture du document. Soncontentsest 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 desattachmentsde la requête, que l’icône ouvre.icon— l’une depush_pin(par défaut),graph,paperclipettag. -
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 soncontents, 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 : lafont, lafont_size, lacolor, l’alignet 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, etending, 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 aveccallout. -
stamp—llx,lly,urx,ury: nombres, tous obligatoires, le cadre qu’il occupe.words— objet, facultatif, la ligne apposée en travers du cadre : lecontent, lafont, lespan, leslant, lacoloret leshadowd’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,draftoufor_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, unewidthen points et undashfacultatif.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 uneredaction. 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[].flagsprend aussilocked, 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 ; ettoggle_no_view, qui inverseno_viewtant que le pointeur est sur la marque ou qu’elle est sélectionnée. Tous trois sont des booléens,falsepar défaut. -
L’
icond’une note autocollante prend aussicross_hairs,right_arrow,right_pointer,up_arrowetup_left_arrow. Une note qui fixe unstate—markedouunmarked, ouaccepted,rejected,cancelledoucompleted— donne cet état à la forme que nomme sonin_reply_to. Chaque forme prend aussirich_contents, ses mots comme corps d’un document XHTML ;opacity, de 0 à 1 ;grouped_with, lenamede la forme en tête du groupe qu’elle rejoint ; etpopup,{"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 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