# Estructura del cuerpo del documento

- Human documentation: [https://docs.univer.ai/es-ES/guides/docs/model/document-body](https://docs.univer.ai/es-ES/guides/docs/model/document-body)

- Agent Markdown: [https://docs.univer.ai/es-ES/guides/docs/model/document-body.md](https://docs.univer.ai/es-ES/guides/docs/model/document-body.md)

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

- Source: [docs/model/document-body.es-ES.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/model/document-body.es-ES.mdx)

---

## IDocumentBody

`IDocumentBody` almacena el contenido del flujo principal de un documento de Univer Docs.

El texto real se almacena en `dataStream`. Los estilos y la información estructural se almacenan en matrices paralelas y se vinculan al texto a través de índices.

### Propiedades

| Propiedad          | Tipo                     | Descripción                                                                                                                                             |
| ------------------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| dataStream         | `string`                 | Secuencia de texto sin formato del cuerpo del documento. Los caracteres especiales marcan párrafos, saltos de sección, tablas y bloques personalizados. |
| textRuns?          | `ITextRun[]`             | Rangos de estilo en línea.                                                                                                                              |
| paragraphs?        | `IParagraph[]`           | Metadatos de párrafo y estilos de párrafo.                                                                                                              |
| sectionBreaks?     | `ISectionBreak[]`        | Metadatos de salto de sección.                                                                                                                          |
| customBlocks?      | `ICustomBlock[]`         | Marcadores de posición de bloque definidos por complemento.                                                                                             |
| tables?            | `ICustomTable[]`         | Marcadores de tabla en el cuerpo del documento. Las definiciones de tablas se encuentran en `IDocumentData.tableSource`.                                |
| columnGroups?      | `ICustomColumnGroup[]`   | Marcadores de grupos de columnas.                                                                                                                       |
| blockRanges?       | `IDocumentBlockRange[]`  | Rangos de bloques estructurados, como bloques de texto, citas y códigos.                                                                                |
| customRanges?      | `ICustomRange[]`         | Rangos especiales, como hipervínculos, campos, marcadores, comentarios, menciones y rangos definidos por complementos.                                  |
| customDecorations? | `ICustomDecoration[]`    | Rangos de decoración, como resaltados de comentarios.                                                                                                   |
| payloads?          | `Record<string, string>` | Copiar y pegar temporalmente cargas útiles. Este campo no persiste.                                                                                     |

### dataStream

`dataStream` es la fuente de verdad para el cuerpo del texto. Un párrafo generalmente termina con `\r\n`.

```typescript
const body: IDocumentBody = {
  dataStream: 'Title\r\nHello Univer\r\n',
  paragraphs: [
    { startIndex: 5, paragraphId: 'p-title' },
    { startIndex: 19, paragraphId: 'p-body' },
  ],
}
```

### Caracteres especiales

Algunos elementos del documento están representados por caracteres de control en `dataStream` y expandidos por el renderizador:

| Carácter | Significado                                  |
| -------- | -------------------------------------------- |
| `\r\n`   | Salto de párrafo                             |
| `\n`     | Salto de sección                             |
| `\f`     | Salto de página                              |
| `\v`     | Salto de columna                             |
| `\t`     | Tab                                          |
| `\0`     | Fin del documento                            |
| `\b`     | Marcador de posición de bloque personalizado |

Las tablas y los rangos personalizados también usan caracteres de control internamente. Cuando trabaje con tablas, enlaces, comentarios y funciones a nivel de bloque, prefiera las API o comandos de Facade en lugar de caracteres de control escritos a mano.

## Relación con IDocumentData

`IDocumentBody` solo almacena el flujo de documentos principal. Los recursos externos se almacenan en `IDocumentData`:

* `tableSource` almacena definiciones de tablas.
* `drawings` almacena imágenes y objetos de dibujo.
* `headers` y `footers` contienen cada uno los suyos propios `IDocumentBody`.
* `lists` almacena definiciones de lista a las que se hace referencia mediante viñetas de párrafo.
* `resources` almacena datos definidos por complementos.
