# Anotaciones y texto nativo

> Inserte anotaciones PDF compatibles y convierta texto nativo importado en cuadros de texto editables.

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

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

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

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

---

Las anotaciones editables son overlays persistentes. El texto importado sigue siendo nativo hasta que se promueve un fragmento visible mediante Facade.

## Insertar anotaciones

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

Facade permite insertar resaltado, subrayado, tachado, subrayado ondulado y tinta. La tinta requiere rutas no vacías; esta API no acepta otros subtipos de anotación del núcleo.

## Leer datos y estilos de anotación

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

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

`getMarkup()` y `getInk()` devuelven geometría independiente en puntos PDF. `setStyle()` actualiza el relleno, el trazo y la opacidad compatibles; la opacidad debe estar entre `0` y `1`.

## Sustituir texto nativo importado

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

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

`getTextSpans()` devuelve instantáneas del texto nativo visible y no suprimido. `replaceText()` suprime atómicamente la operación de origen e inserta un `FPdfTextBox` editable en la posición capturada.

`FPdfTextSpan` es un manejador de instantánea. Después de la sustitución queda obsoleto; enumere de nuevo `getTextSpans()` antes de la siguiente operación sobre texto nativo.
