# API Univer Docs

- Human documentation: [https://docs.univer.ai/fr-FR/guides/docs/features/core/docs-api](https://docs.univer.ai/fr-FR/guides/docs/features/core/docs-api)

- Agent Markdown: [https://docs.univer.ai/fr-FR/guides/docs/features/core/docs-api.md](https://docs.univer.ai/fr-FR/guides/docs/features/core/docs-api.md)

- Requested language: `fr-FR`

- Content language: `fr-FR`

- Documentation version: `1.2.0`

- Source: [docs/features/core/docs-api.fr-FR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/features/core/docs-api.fr-FR.mdx)

---

Univer Docs offre des fonctionnalités professionnelles de mise en page de documents, fondées sur des concepts proches de ceux de Microsoft Word.

## Importation

```typescript
import '@univerjs/docs/facade'
import '@univerjs/docs-ui/facade'
```

## Manipuler des documents

Pour les unités de document, `unitId` correspond à l’identifiant unique du document. Les documents ne possèdent pas de `subUnitId`.

Le contenu textuel du document est stocké dans la chaîne `body.dataStream`, qui ne contient aucune information de style.

Les informations de style sont stockées séparément dans une autre structure de données et associées au contenu textuel au moyen de références d’index.

Les éléments tels que les sauts de ligne, les sauts de page, les sections, les paragraphes et les tableaux sont représentés dans le contenu textuel par différents caractères spéciaux. Lors du rendu, ces caractères spéciaux sont convertis dans les éléments correspondants.

> [!NOTE]
> Vous souhaitez en savoir plus sur la conception des structures de données des documents ? Nous vous recommandons de
> lire [Univer Document Architecture and Module Design](/blog/univer-doc-architecture) et [An Initial Exploration of
> Univer Document Typesetting Design](/blog/doc-typesetting-design).

### Créer un document

Utilisez `univerAPI.createDocument(data)` pour créer un document et obtenir son objet wrapper de façade `FDocument`.

Le paramètre est un objet de données de document facultatif qui contient les données initiales du document. Si vous transmettez `{}`, un document vide est créé.

Si vous utilisez directement l’instance `univer` sous-jacente plutôt que l’API Facade, utilisez `univer.createUnit(UniverInstanceType.UNIVER_DOC, data)`.

```typescript
// [!code word:data]
const doc = univerAPI.createDocument(data)
```

### Obtenir le unitId d’un document

```typescript
const doc = univerAPI.getActiveDocument()
const unitId = doc?.getId()
```

### Obtenir les données d’un document

```typescript
const doc = univerAPI.getActiveDocument()
const saveData = doc.save()
```

### Supprimer un document

Lorsque le document n’est plus nécessaire, vous pouvez appeler la méthode `dispose` de l’instance Univer pour détruire celle-ci.

```typescript
univer.dispose()
```

## Manipuler du texte

Modifiez les éléments textuels dans la zone de texte enrichi.

### Insérer du texte

Ajoutez le texte indiqué à la fin de cette zone de texte.

```typescript
const doc = univerAPI.getActiveDocument()
doc?.insertText(0, 'Univer')
```

### Supprimer du texte

Supprimez du texte à partir des décalages dans le document.

```typescript
const doc = univerAPI.getActiveDocument()
doc?.deleteRange({ startOffset: 0, endOffset: 1 })
```

## Modifier le style

Définissez le style du texte dans un paragraphe.

```typescript
const doc = univerAPI.getActiveDocument()
const paragraph = doc?.getParagraphs()[0]

paragraph?.setStyle({
  textStyle: {
    cl: {
      rgb: '#FF0000',
    },
  },
})
```

## Insérer un saut de page

Le caractère `\f` représente un saut de page et permet d’en insérer un dans le document.

```typescript
const doc = univerAPI.getActiveDocument()
doc?.insertText(0, '\f')
```

## Statistiques du document

Utilisez le `DocumentDataModel` sous-jacent pour calculer les statistiques du document entier ou de plages sélectionnées.

```typescript
const doc = univerAPI.getActiveDocument()
if (!doc) throw new Error('No active document')

const statistics = await doc.getDocumentDataModel().getStatistics({
  locale: univerAPI.Enum.LocaleType.FR_FR,
})
console.log(statistics.words, statistics.charactersWithSpaces, statistics.paragraphs)
```

`getStatistics()` renvoie le nombre de mots, de caractères et de paragraphes. Utilisez `ranges` pour limiter le comptage au texte sélectionné et `signal` pour annuler un calcul devenu inutile.
