# API de Univer Docs

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

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

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

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

---

Univer Docs proporciona capacidades profesionales de composición tipográfica de documentos, con conceptos estrechamente alineados con Microsoft Word.

## Importación

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

## Operación de documentos

Para unidades de documentos, `unitId` corresponde al identificador único del documento y los documentos no tienen un `subUnitId`.

El contenido de texto del documento se almacena en la cadena `body.dataStream`, que no contiene información de estilo.

La información de estilo se almacena por separado en otra estructura de datos y se asocia con el contenido de texto a través de referencias de índice.

Para elementos como la línea saltos, saltos de página, secciones, párrafos y tablas, se utilizan diferentes caracteres especiales para marcarlos en el contenido del texto. Estos caracteres especiales se convierten en los elementos correspondientes durante la renderización.

> [!NOTE]
> ¿Quiere obtener más información sobre el diseño de estructuras de datos de documentos? Recomendamos leer [Arquitectura
> de documentos y diseño de módulos de Univer](/blog/univer-doc-architecture) y [Una exploración inicial del diseño
> tipográfico de documentos de Univer](/blog/doc-typesetting-design).

### Crear documento

Utilice `univerAPI.createDocument(data)` para crear un nuevo documento y obtener su envoltorio de fachada `FDocument`.

El parámetro es un objeto de datos de documento opcional que contiene los datos iniciales del documento. Si se pasa `{}`, se crea un documento vacío.

Cuando trabaje con la instancia subyacente `univer` directamente en lugar de la API de Facade, use `univer.createUnit(UniverInstanceType.UNIVER_DOC, data)`.

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

### Obtener ID de unidad de documento

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

### Obtener datos del documento

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

### Deshacerse del documento

Cuando ya no necesitemos el documento, podemos llamar al método `dispose` de la instancia de Univer para destruir la instancia.

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

## Operar texto

Modificar elementos de texto en el área de texto enriquecido

### Insertar texto

Para agregar texto especificado al final de esta área de texto.

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

### Eliminar texto

Eliminar texto según desplazamientos del documento.

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

## Modificar estilo

Establecer estilo de texto en un párrafo.

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

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

## Insertar salto de página

El carácter `\f` es un salto de página, utilizado para insertar un salto de página en el documento.

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

## Estadísticas del documento

Use el `DocumentDataModel` subyacente para calcular estadísticas de todo el documento o de rangos seleccionados.

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

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

`getStatistics()` devuelve recuentos de palabras, caracteres y párrafos. Use `ranges` para limitar el recuento al texto seleccionado y `signal` para cancelar un cálculo que ya no sea necesario.
