# Аннотации и нативный текст

> Вставляйте поддерживаемые аннотации PDF и преобразуйте импортированный нативный текст в редактируемые текстовые поля.

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

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

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

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

---

Редактируемые аннотации являются сохраняемыми наложениями. Импортированный текст остаётся нативным, пока видимый текстовый фрагмент не будет преобразован через фасад.

## Вставка аннотаций

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

Фасад поддерживает выделение, подчёркивание, зачёркивание, волнистое подчёркивание и рукописные аннотации. Для рукописной аннотации нужны непустые пути; другие подтипы ядра этот API не принимает.

## Чтение данных и стиля аннотации

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

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

`getMarkup()` и `getInk()` возвращают отдельную геометрию в пунктах PDF. `setStyle()` обновляет поддерживаемые заливку, штрих и непрозрачность; непрозрачность должна быть от `0` до `1`.

## Замена импортированного нативного текста

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

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

`getTextSpans()` возвращает снимки видимого и не скрытого нативного текста. `replaceText()` атомарно скрывает исходную операцию и вставляет редактируемое поле `FPdfTextBox` в сохранённой позиции.

`FPdfTextSpan` является дескриптором снимка. После замены он устаревает, поэтому перед следующей операцией снова вызовите `getTextSpans()`.
