write_flow_break.json

Le fichier JSON de l'exemple « Couper un mot trop long ». Un mot plus long que la colonne qui le contient : la bibliothèque le laisse entier, ou le coupe au bord de la colonne.

JSON 98 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

Cet exemple compose deux fois le même paragraphe dans une colonne trop étroite pour l'un de ses mots : toute mise en page finit par rencontrer le mot qui ne rentre pas — un nom chimique, un mot composé allemand, une adresse web, une référence de commande à laquelle personne n'a pensé. Le mot surgit en production, sur un enregistrement sur mille, longtemps après que l'équipe a validé la mise en page, et il revient avec la référence suivante, quelle que soit la largeur donnée à la colonne. C'est le réglage overlong qui décide : overflow laisse le mot entier dépasser du bord, break le coupe après le dernier glyphe qui tient.

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
{
  "items": [
    {
      "type": "text",
      "rect": {
        "llx": 80.0,
        "lly": 750.4,
        "urx": 480.0,
        "ury": 760.0
      },
      "content": [
        "Overflow: the word is left whole, and runs past the edge."
      ],
      "font": "DejaVuSans",
      "font_size": 8.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 80.0,
        "lly": 650.0,
        "urx": 230.0,
        "ury": 740.0
      },
      "content": [
        "Paid by bank transfer, reference GB29NWBK60161331926819-2026-07-DEPOSIT, to be matched against the purchase order before the accounts are closed."
      ],
      "font": "DejaVuSans",
      "font_size": 11.0,
      "leading": 15.0,
      "overlong": "overflow"
    },
    {
      "type": "rect",
      "rect": {
        "llx": 80.0,
        "lly": 650.0,
        "urx": 230.0,
        "ury": 740.0
      },
      "stroke": {
        "width": 0.5,
        "color": [
          0.8,
          0.8,
          0.8
        ]
      }
    },
    {
      "type": "text",
      "rect": {
        "llx": 80.0,
        "lly": 610.4,
        "urx": 480.0,
        "ury": 620.0
      },
      "content": [
        "Break: the word is cut after its last glyph that fits."
      ],
      "font": "DejaVuSans",
      "font_size": 8.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 80.0,
        "lly": 510.0,
        "urx": 230.0,
        "ury": 600.0
      },
      "content": [
        "Paid by bank transfer, reference GB29NWBK60161331926819-2026-07-DEPOSIT, to be matched against the purchase order before the accounts are closed."
      ],
      "font": "DejaVuSans",
      "font_size": 11.0,
      "leading": 15.0,
      "overlong": "break"
    },
    {
      "type": "rect",
      "rect": {
        "llx": 80.0,
        "lly": 510.0,
        "urx": 230.0,
        "ury": 600.0
      },
      "stroke": {
        "width": 0.5,
        "color": [
          0.8,
          0.8,
          0.8
        ]
      }
    }
  ]
}