write_pdfa3u.json

Le fichier JSON de l’exemple « Relevés de compteur en PDF/A-3u avec leur tableau joint ». Les relevés de compteur d’un trimestre, qu’une personne lit sur la page et qu’un logiciel de facturation reprend dans le tableau joint au même fichier.

JSON 54 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.

Cette requête nomme des fichiers qu’elle ne contient pas : readings. Chacun voyage à côté de la requête, dans le même appel, comme une pièce fournie nommée exactement comme la requête la nomme ici — la description dit quel nom joue quel rôle, vous nommez donc vos fichiers comme vous voulez. Une requête qui nomme un fichier dont l’appel ne contient rien est refusée.

À quoi sert cet exemple

Les relevés de compteur d’un trimestre ont deux lecteurs : une personne qui vérifie les chiffres sur la page, et un logiciel de facturation qui a besoin des mêmes chiffres sans que personne ne les retape. Deux fichiers séparés divergent dès la première correction de l’un d’eux.

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
{
  "archive": "pdfa3u",
  "metadata": {
    "title": "Meter readings, first quarter 2026",
    "author": "HQF Development",
    "subject": "A record that carries the figures behind it and reads back word for word",
    "producer": "hqf-pdf-server",
    "created": "2026-04-05T07:30:00+02:00"
  },
  "attachments": [
    {
      "name": "readings",
      "file_name": "readings.csv",
      "media_type": "text/csv",
      "relationship": "data",
      "description": "The readings the page states, as a machine reads them",
      "modified": "2026-04-05T07:25:00+02:00"
    }
  ],
  "items": [
    {
      "type": "text",
      "rect": {"llx": 72, "lly": 756, "urx": 523, "ury": 782},
      "content": ["Meter readings, first quarter 2026"],
      "font": "DejaVuSans",
      "font_size": 20
    },
    {
      "type": "text",
      "rect": {"llx": 72, "lly": 620, "urx": 523, "ury": 736},
      "content": ["This record claims the third part of the archival standard at the level between the plain one and the tagged one: it may carry a file of any kind, and every mark of ink on its pages says which letter it stands for. ", "The figures below are also carried inside the file, as the comma-separated table a machine reads. A person opens the record and reads the page; a program opens the same record and takes the figures without reading anything at all."],
      "font": "DejaVuSans",
      "font_size": 11,
      "leading": 16,
      "align": "justify"
    },
    {
      "type": "text",
      "rect": {"llx": 72, "lly": 540, "urx": 300, "ury": 596},
      "content": ["January\nFebruary\nMarch"],
      "font": "DejaVuSans",
      "font_size": 11,
      "leading": 17
    },
    {
      "type": "text",
      "rect": {"llx": 300, "lly": 540, "urx": 523, "ury": 596},
      "content": ["4 118 kWh\n3 902 kWh\n3 447 kWh"],
      "font": "DejaVuSans",
      "font_size": 11,
      "leading": 17
    }
  ]
}