write_checked_invoice.json

Le fichier JSON de l'exemple « Une facture qui demande avant de revendiquer ». La bibliothèque lit la facture telle qu'elle est et nomme, clause par clause, tout ce qui la sépare de Factur-X. Deux choses font obstacle, puis une, puis plus aucune — et c'est seulement alors qu'un fichier est écrit.

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

Cette requête nomme des fichiers qu'elle ne contient pas : invoice_xml. 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

Tout autre document ici atteint une norme en la déclarant : le fichier dit qu'il est Factur-X, et il est écrit en Factur-X. Déclarer est facile ; avoir raison ne l'est pas. Un document peut nommer une facture qu'il n'a jamais jointe, revendiquer un niveau de détail que le XML à l'intérieur ne suit pas, et tenir dans un contenant que la norme n'autorise pas — et sortir en disant les trois, pour revenir refusé par le service comptable auquel il 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
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
{
  "items": [
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 760.0,
        "urx": 520.0,
        "ury": 779.2
      },
      "content": [
        "Invoice No. 2026-0207"
      ],
      "font": "DejaVuSans",
      "font_size": 16.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 728.0,
        "urx": 520.0,
        "ury": 740.0
      },
      "content": [
        "Issued by HQF Development"
      ],
      "font": "DejaVuSans",
      "font_size": 10.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 708.0,
        "urx": 520.0,
        "ury": 721.2
      },
      "content": [
        "Issued 14 July 2026 — due within 30 days"
      ],
      "font": "DejaVuSans",
      "font_size": 11.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 686.0,
        "urx": 520.0,
        "ury": 699.2
      },
      "content": [
        "Rendering engine licence ................... 12 400.00 EUR"
      ],
      "font": "DejaVuSans",
      "font_size": 11.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 664.0,
        "urx": 520.0,
        "ury": 677.2
      },
      "content": [
        "VAT at 20 % ................................. 2 480.00 EUR"
      ],
      "font": "DejaVuSans",
      "font_size": 11.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 642.0,
        "urx": 520.0,
        "ury": 656.4
      },
      "content": [
        "Total due .................................. 14 880.00 EUR"
      ],
      "font": "DejaVuSans",
      "font_size": 12.0
    }
  ],
  "metadata": {
    "title": "Invoice No. 2026-0207",
    "author": "HQF Development",
    "subject": "An electronic invoice, measured before it was claimed",
    "producer": "hqf-pdf",
    "created": "2026-07-14T09:30:00+02:00"
  },
  "archive": "pdfa3b",
  "invoice": {
    "xml": "invoice_xml",
    "profile": "BASIC",
    "version": "1.0",
    "relationship": "data",
    "issued": "2026-07-14T09:30:00+02:00"
  },
  "check": [
    "pdfa3b"
  ]
}