Ejecuciones de texto y párrafos
Modelo basado en índices
Univer Docs no almacena texto enriquecido como un árbol anidado. Almacena texto sin formato en body.dataStream1 y luego utiliza rangos de índice para adjuntar estilo y estructura al texto.
Las estructuras basadas en índices más comunes son:
ITextRun: rango de estilos de texto en línea.IParagraph: metadatos de párrafo y estilo de párrafo.ISectionBreak: salto de sección metadatos.
ITextRun
ITextRun describe el estilo de un rango de texto continuo.
| Propiedad | Tipo | Descripción |
|---|---|---|
| st | number | Índice inicial, inclusive. |
| ed | number | Índice final, exclusivo. |
| sId? | string | ID de estilo referenciado. |
| ts? | ITextStyle | Estilo de texto en línea objeto. |
const body: IDocumentBody = { dataStream: 'Hello Univer\r\n', textRuns: [ { st: 0, ed: 5, ts: { bl: 1 }, }, { st: 6, ed: 12, ts: { cl: { rgb: '#2563eb' } }, }, ],}En este ejemplo, Hello está en negrita y Univer es azul. El salto de párrafo \r\n no está incluido en los rangos de estilo.
IParagraph
IParagraph describe metadatos a nivel de párrafo. startIndex apunta a la posición del salto de párrafo en dataStream.
| Propiedad | Tipo | Descripción |
|---|---|---|
| startIndex | number | Índice del salto de párrafo. |
| paragraphId | string | ID de párrafo estable. |
| paragraphStyle? | IParagraphStyle | Estilo de párrafo como alineación, sangría, interlineado y tipo de encabezado. |
| bullet? | IBullet | Metadatos del marcador de lista. |
const body: IDocumentBody = { dataStream: 'Hello Univer\r\nSecond line\r\n', paragraphs: [ { startIndex: 12, paragraphId: 'p-1', paragraphStyle: { namedStyleType: NamedStyleType.HEADING_1, }, }, { startIndex: 25, paragraphId: 'p-2', }, ],}ISectionBreak
ISectionBreak también usa un índice para conectar la configuración a nivel de sección al flujo de texto. Puede anular el tamaño de página, los márgenes, los encabezados, los pies de página, las columnas y la dirección del texto de una sección.
const body: IDocumentBody = { dataStream: 'First section\nSecond section\r\n', sectionBreaks: [ { startIndex: 13, pageSize: { width: 595, height: 842 }, marginTop: 72, marginBottom: 72, }, ],}Notas
- Mantenga los índices alineados con
dataStream. Los índices incorrectos pueden hacer que los rangos de estilo, los párrafos, las selecciones o la representación se vuelvan inconsistentes. - Prefiera las API y los comandos de Facade para editar un documento activo.
- Cuando genere instantáneas manualmente, primero cree
dataStreamy luego calcule los rangos y las posiciones de los párrafos a partir de esa cadena.
Footnotes
-
Las posiciones cuentan unidades UTF-16 de JavaScript, no caracteres visibles:
"😀".lengthes 2. Un intervalo de texto[st, ed)excluye el final, a diferencia de los rangos de celdas que lo incluyen. ↩
¿Cómo es esta guía?