# Structure du corps du document

- Human documentation: [https://docs.univer.ai/fr-FR/guides/docs/model/document-body](https://docs.univer.ai/fr-FR/guides/docs/model/document-body)

- Agent Markdown: [https://docs.univer.ai/fr-FR/guides/docs/model/document-body.md](https://docs.univer.ai/fr-FR/guides/docs/model/document-body.md)

- Requested language: `fr-FR`

- Content language: `fr-FR`

- Documentation version: `1.2.0`

- Source: [docs/model/document-body.fr-FR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/model/document-body.fr-FR.mdx)

---

## IDocumentBody

`IDocumentBody` stocke le contenu du flux principal d’un document Univer Docs.

Le texte proprement dit est stocké dans `dataStream`. Les styles et les informations structurelles sont stockés dans des tableaux parallèles et reliés au texte au moyen d’index.

### Propriétés

| Propriété          | Type                     | Description                                                                                                                                               |
| ------------------ | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| dataStream         | `string`                 | Flux de texte brut du corps du document. Des caractères spéciaux marquent les paragraphes, les sauts de section, les tableaux et les blocs personnalisés. |
| textRuns?          | `ITextRun[]`             | Plages de style en ligne.                                                                                                                                 |
| paragraphs?        | `IParagraph[]`           | Métadonnées et styles des paragraphes.                                                                                                                    |
| sectionBreaks?     | `ISectionBreak[]`        | Métadonnées des sauts de section.                                                                                                                         |
| customBlocks?      | `ICustomBlock[]`         | Espaces réservés pour les blocs définis par les plugins.                                                                                                  |
| tables?            | `ICustomTable[]`         | Marqueurs de tableau dans le corps du document. Les définitions des tableaux se trouvent dans `IDocumentData.tableSource`.                                |
| columnGroups?      | `ICustomColumnGroup[]`   | Marqueurs de groupes de colonnes.                                                                                                                         |
| blockRanges?       | `IDocumentBlockRange[]`  | Plages de blocs structurés, comme les encadrés, les citations et les blocs de code.                                                                       |
| customRanges?      | `ICustomRange[]`         | Plages spéciales, comme les liens hypertextes, les champs, les signets, les commentaires, les mentions et les plages définies par les plugins.            |
| customDecorations? | `ICustomDecoration[]`    | Plages de décoration, comme la mise en évidence des commentaires.                                                                                         |
| payloads?          | `Record<string, string>` | Charges utiles temporaires pour le copier-coller. Ce champ n’est pas conservé.                                                                            |

### dataStream

`dataStream` est la source de vérité pour le texte du corps. Un paragraphe se termine généralement par `\r\n`.

```typescript
const body: IDocumentBody = {
  dataStream: 'Title\r\nHello Univer\r\n',
  paragraphs: [
    { startIndex: 5, paragraphId: 'p-title' },
    { startIndex: 19, paragraphId: 'p-body' },
  ],
}
```

### Caractères spéciaux

Certains éléments du document sont représentés par des caractères de contrôle dans `dataStream`, puis développés par le moteur de rendu :

| Caractère | Signification                            |
| --------- | ---------------------------------------- |
| `\r\n`    | Saut de paragraphe                       |
| `\n`      | Saut de section                          |
| `\f`      | Saut de page                             |
| `\v`      | Saut de colonne                          |
| `\t`      | Tabulation                               |
| `\0`      | Fin du document                          |
| `\b`      | Espace réservé pour un bloc personnalisé |

Les tableaux et les plages personnalisées utilisent également des caractères de contrôle en interne. Lorsque vous travaillez avec des tableaux, des liens, des commentaires et des fonctionnalités au niveau des blocs, privilégiez les API Facade ou les commandes plutôt que la saisie manuelle de caractères de contrôle.

## Relation avec IDocumentData

`IDocumentBody` stocke uniquement le flux principal du document. Les ressources externes sont stockées dans `IDocumentData` :

* `tableSource` stocke les définitions des tableaux.
* `drawings` stocke les images et les objets de dessin.
* `headers` et `footers` contiennent chacun leur propre `IDocumentBody`.
* `lists` stocke les définitions de listes auxquelles font référence les puces des paragraphes.
* `resources` stocke les données définies par les plugins.
