write_pdfa2a.json

Die JSON-Datei des Beispiels „Eine getaggte Mitteilung zur Tarifänderung in PDF/A-2a“. Eine Mitteilung nach dem zweiten Teil der Archivnorm auf seiner höchsten Stufe: Vorlesesoftware folgt dem Text in der Reihenfolge, in der er gelesen werden soll.

JSON 82 Zeilen

Diese Datei ist eine Anfrage: Eine Anwendung sendet sie über das Netz an den Server, der das PDF erzeugt und zurücksendet. Sie erzeugt dieselbe Seite wie die Rust- und die Python-Fassung dieses Beispiels. Eine Anfrage nennt jede Datei, die sie verwendet, nie ihren Inhalt; der Aufruf trägt die Anfrage und die Dateien zusammen. Eine Schrift, die der Server bereits vorhält, etwa DejaVuSans, wird ohne Anhang genannt. Senden Sie die Anfrage an die Adresse, die die API-Seite angibt.

Wofür dieses Beispiel da ist

Eine Mitteilung über einen neuen Tarif muss jeden Kunden erreichen, auch die, denen eine Software die Seite vorliest, und eine öffentliche Stelle muss sie womöglich jahrelang aufbewahren. Eine einzige Datei muss beides leisten: Bestand haben und in der richtigen Reihenfolge gelesen werden.

Was dieses Beispiel zeigt

 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
{
  "archive": "pdfa2a",
  "metadata": {
    "title": "Notice of rate change, April 2026",
    "author": "HQF Development",
    "subject": "A record that says what it is made of, and keeps its looks for good",
    "producer": "hqf-pdf-server",
    "created": "2026-04-02T08:00:00+02:00"
  },
  "structure": {
    "lang": "en-GB",
    "children": [
      {
        "tag": "Document",
        "children": [
          {
            "tag": "Sect",
            "children": [
              {"tag": "H1", "content": "heading"},
              {"tag": "P", "content": "body"},
              {"tag": "P", "content": "closing"}
            ]
          }
        ]
      }
    ]
  },
  "items": [
    {
      "type": "flow",
      "rect": {"llx": 72, "lly": 750, "urx": 523, "ury": 782},
      "content": "Notice of rate change",
      "font": "DejaVuSans",
      "font_size": 20,
      "first_baseline": {"points": 0},
      "tag": "H1",
      "mark": "heading",
      "pages": [1]
    },
    {
      "type": "flow",
      "rect": {"llx": 72, "lly": 600, "urx": 523, "ury": 730},
      "content": "This notice claims the second part of the archival standard at its highest level. On top of the promise that the page keeps its looks, and on top of every mark of ink saying which letter it stands for, the file says what it is made of: this line is a heading, that block is a paragraph, and the rule across the foot is furniture that says nothing at all.\nSomething reading the notice aloud follows the order the tree gives rather than the order the ink was laid down in, and reading software on a telephone has something to reflow.",
      "font": "DejaVuSans",
      "font_size": 11,
      "leading": 16,
      "first_baseline": {"points": 0},
      "tag": "P",
      "mark": "body",
      "pages": [1]
    },
    {
      "type": "flow",
      "rect": {"llx": 72, "lly": 540, "urx": 523, "ury": 580},
      "content": "The new rate applies to every order acknowledged on or after 1 May 2026. Orders already acknowledged stand at the rate they were acknowledged at.",
      "font": "DejaVuSans",
      "font_size": 11,
      "leading": 16,
      "first_baseline": {"points": 0},
      "tag": "P",
      "mark": "closing",
      "pages": [1]
    },
    {
      "type": "rect",
      "rect": {"llx": 72, "lly": 70, "urx": 523, "ury": 71},
      "fill": [0, 0, 0],
      "artifact": "footer",
      "pages": [1]
    },
    {
      "type": "flow",
      "rect": {"llx": 72, "lly": 56, "urx": 523, "ury": 68},
      "content": "Page 1 of 1",
      "font": "DejaVuSans",
      "font_size": 9,
      "first_baseline": {"points": 0},
      "artifact": "footer",
      "pages": [1]
    }
  ]
}