# Annotations et texte natif

> Insérez les annotations PDF prises en charge et transformez le texte natif importé en zones de texte modifiables.

- Human documentation: [https://docs.univer.ai/fr-FR/guides/pdfs/features/core/annotations-and-native-text](https://docs.univer.ai/fr-FR/guides/pdfs/features/core/annotations-and-native-text)

- Agent Markdown: [https://docs.univer.ai/fr-FR/guides/pdfs/features/core/annotations-and-native-text.md](https://docs.univer.ai/fr-FR/guides/pdfs/features/core/annotations-and-native-text.md)

- Requested language: `fr-FR`

- Content language: `fr-FR`

- Documentation version: `1.2.0`

- Source: [pdfs/features/core/annotations-and-native-text.fr-FR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/pdfs/features/core/annotations-and-native-text.fr-FR.mdx)

---

Les annotations modifiables sont des overlays persistants. Le texte importé reste natif jusqu'à la promotion d'une plage visible avec la façade.

## Insérer des annotations

```ts
const highlight = page.insertAnnotation({
  annotationType: univerAPI.Enum.PdfAnnotationType.HIGHLIGHT,
  left: 36,
  top: 72,
  width: 180,
  height: 18,
  markup: {
    color: '#fde047',
    opacity: 0.6,
  },
})
```

La façade accepte le surlignage, le soulignement, le texte barré, le soulignement ondulé et l'encre. L'encre nécessite des tracés non vides ; les autres sous-types d'annotation du noyau ne sont pas acceptés.

## Lire les données et le style d'une annotation

```ts
const markup = highlight.getMarkup()
const style = highlight.getStyle()

highlight.setStyle({
  stroke: { color: '#ca8a04', width: 1 },
  opacity: 0.75,
})
```

`getMarkup()` et `getInk()` retournent une géométrie détachée en points PDF. `setStyle()` modifie le remplissage, le trait et l'opacité pris en charge ; l'opacité doit être comprise entre `0` et `1`.

## Remplacer le texte natif importé

```ts
const matchingSpan = page
  .getTextSpans()
  .find((span) => span.getText().includes('Draft'))

if (matchingSpan) {
  const textBox = matchingSpan.replaceText('Final')
  textBox.setTextStyle({ bold: true })
}
```

`getTextSpans()` retourne des snapshots du texte natif actuellement visible et non masqué. `replaceText()` masque atomiquement l'opération source et insère un `FPdfTextBox` modifiable à la position capturée.

Un `FPdfTextSpan` est un handle de snapshot. Après le remplacement, il est obsolète ; énumérez de nouveau `getTextSpans()` avant l'opération suivante sur le texte natif.
