write_added_to.json

Le fichier JSON de l'exemple « Un contrat reçu, complété sans déplacer un octet ». Un contrat de maintenance envoyé par quelqu'un d'autre, avec un emplacement de signature, une date et une ligne à soi posés sur sa dernière page et une annexe ajoutée après elle, chaque octet du contrat laissé à sa place.

JSON 85 lignes

Ce fichier est une requête : une application l'envoie par le réseau au serveur, qui crée le PDF et le renvoie. Il donne la même page que les versions Rust et Python de cet exemple. Une requête nomme chaque fichier qu'elle emploie, jamais le contenu de ces fichiers ; l'appel porte la requête et les fichiers ensemble. Une police que le serveur détient déjà, comme DejaVuSans, se nomme sans rien y joindre. Envoyez la requête à l'adresse que donne la page de l'API.

À quoi sert cet exemple

Un fournisseur envoie un contrat de maintenance en PDF de deux pages. Il doit repartir avec un emplacement de signature, la date, une ligne qui dit qui signe, et une annexe d'une page à la fin. Ouvrir le contrat et le réécrire rendrait un autre fichier : une signature qu'il portait déjà ne tiendrait plus, et personne ne pourrait prouver que le texte est toujours celui qui a été envoyé.

Ce que montre cet exemple

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
{
  "supplied_pdfs": { "add_to": { "pdf": "agreement.pdf", "over": [2] } },
  "items": [
    {
      "type": "rect",
      "rect": { "llx": 320.0, "lly": 120.0, "urx": 539.0, "ury": 210.0 },
      "fill": [0.93, 0.96, 1.0],
      "stroke": { "width": 1.0, "color": [0.2, 0.35, 0.7] },
      "pages": [1]
    },
    {
      "type": "flow",
      "rect": { "llx": 328.0, "lly": 180.0, "urx": 539.0, "ury": 196.0 },
      "content": "Signature",
      "font": "DejaVuSans",
      "font_size": 9.0,
      "first_baseline": { "points": 0.0 },
      "color": [0.2, 0.35, 0.7],
      "pages": [1]
    },
    {
      "type": "flow",
      "rect": { "llx": 320.0, "lly": 88.0, "urx": 539.0, "ury": 104.0 },
      "content": "Received on 2026-09-12",
      "font": "DejaVuSans",
      "font_size": 9.0,
      "first_baseline": { "points": 0.0 },
      "pages": [1]
    },
    {
      "type": "flow",
      "rect": { "llx": 56.0, "lly": 220.0, "urx": 539.0, "ury": 240.0 },
      "content": "Read and approved, subject to annex A.",
      "font": "DejaVuSans",
      "font_size": 11.0,
      "first_baseline": { "points": 0.0 },
      "pages": [1]
    },
    {
      "type": "flow",
      "rect": { "llx": 56.0, "lly": 750.0, "urx": 539.0, "ury": 770.0 },
      "content": "Annex A",
      "font": "DejaVuSans",
      "font_size": 18.0,
      "first_baseline": { "points": 0.0 },
      "pages": [2]
    },
    {
      "type": "flow",
      "rect": { "llx": 56.0, "lly": 710.0, "urx": 539.0, "ury": 730.0 },
      "content": "The lift in the north wing is serviced every month, not every quarter.",
      "font": "DejaVuSans",
      "font_size": 11.0,
      "first_baseline": { "points": 0.0 },
      "pages": [2]
    },
    {
      "type": "flow",
      "rect": { "llx": 56.0, "lly": 692.0, "urx": 539.0, "ury": 712.0 },
      "content": "This page, the signature area, the date and the line above it were",
      "font": "DejaVuSans",
      "font_size": 11.0,
      "first_baseline": { "points": 0.0 },
      "pages": [2]
    },
    {
      "type": "flow",
      "rect": { "llx": 56.0, "lly": 674.0, "urx": 539.0, "ury": 694.0 },
      "content": "added after the agreement arrived. The first 13 625 bytes of this file",
      "font": "DejaVuSans",
      "font_size": 11.0,
      "first_baseline": { "points": 0.0 },
      "pages": [2]
    },
    {
      "type": "flow",
      "rect": { "llx": 56.0, "lly": 656.0, "urx": 539.0, "ury": 676.0 },
      "content": "are the agreement exactly as it was sent.",
      "font": "DejaVuSans",
      "font_size": 11.0,
      "first_baseline": { "points": 0.0 },
      "pages": [2]
    }
  ]
}