write_pdfa1b.json

Le fichier JSON de l’exemple « Certificat de travail en PDF/A-1b ». Un certificat conforme à la première partie de la norme d’archivage, la plus stricte : PDF 1.4, un contenu entièrement opaque et toujours affiché, sans pièce jointe.

JSON 58 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 crée 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 transmet 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 dépositaire ou un registre qui a fixé ses règles il y a des années peut encore exiger nommément la première partie de la norme d’archivage. Un document envoyé dans une partie plus récente revient refusé, si bien rédigé soit-il, et il faut le recréer.

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
{
  "archive": "pdfa1b",
  "metadata": {
    "title": "Certificate of employment, 4 February 2026",
    "author": "HQF Development",
    "subject": "A record an archive keeps under the first edition of the standard",
    "producer": "hqf-pdf-server",
    "created": "2026-02-04T09:15:00+01:00"
  },
  "items": [
    {
      "type": "text",
      "rect": {"llx": 72, "lly": 756, "urx": 523, "ury": 782},
      "content": ["Certificate of employment"],
      "font": "DejaVuSans",
      "font_size": 20
    },
    {
      "type": "text",
      "rect": {"llx": 72, "lly": 736, "urx": 523, "ury": 750},
      "content": ["Reference 2026-0184, issued 4 February 2026"],
      "font": "DejaVuSans",
      "font_size": 10.5
    },
    {
      "type": "text",
      "rect": {"llx": 72, "lly": 600, "urx": 523, "ury": 716},
      "content": ["This sheet claims the first part of the archival standard, at the level that promises the look of the page and nothing else. Every face it draws with is carried inside the file, every colour says what it means, and nothing on the page waits on a program, a network or a font that happens to be installed. ", "The first part is also the strictest: nothing here is painted so that what lies behind it shows through, no part of the page can be switched off, and no file travels inside the document. A record that needs any of those claims a later part instead."],
      "font": "DejaVuSans",
      "font_size": 11,
      "leading": 16,
      "align": "justify"
    },
    {
      "type": "text",
      "rect": {"llx": 72, "lly": 512, "urx": 523, "ury": 580},
      "content": ["Employee\nPosition\nEmployed since\nHours"],
      "font": "DejaVuSans",
      "font_size": 11,
      "leading": 17
    },
    {
      "type": "text",
      "rect": {"llx": 200, "lly": 512, "urx": 523, "ury": 580},
      "content": ["Camille Marchand\nHead of the drawing office\n3 September 2018\nFull time, 35 hours a week"],
      "font": "DejaVuSans",
      "font_size": 11,
      "leading": 17
    },
    {
      "type": "text",
      "rect": {"llx": 72, "lly": 466, "urx": 523, "ury": 480},
      "content": ["Signed at Cabriès, for HQF Development."],
      "font": "DejaVuSans",
      "font_size": 11
    }
  ]
}