Структура тела документа
IDocumentBody
IDocumentBody хранит основное потоковое содержимое документа Univer Docs.
Сам текст хранится в dataStream. Стили и структурная информация хранятся в параллельных массивах и связываются с текстом по индексам.
Свойства
| Свойство | Тип | Описание |
|---|---|---|
| dataStream | string | Поток обычного текста тела документа. Абзацы, разрывы разделов, таблицы и пользовательские блоки обозначаются специальными символами. |
| textRuns? | ITextRun[] | Диапазоны стилей символов. |
| paragraphs? | IParagraph[] | Метаданные и стили абзацев. |
| sectionBreaks? | ISectionBreak[] | Метаданные разрывов разделов. |
| customBlocks? | ICustomBlock[] | Заполнители блоков, определяемых плагинами. |
| tables? | ICustomTable[] | Маркеры таблиц в теле документа. Определения таблиц хранятся в IDocumentData.tableSource. |
| columnGroups? | ICustomColumnGroup[] | Маркеры групп колонок. |
| blockRanges? | IDocumentBlockRange[] | Диапазоны структурированных блоков, таких как выноски, цитаты и блоки кода. |
| customRanges? | ICustomRange[] | Специальные диапазоны: гиперссылки, поля, закладки, комментарии, упоминания и диапазоны, определяемые плагинами. |
| customDecorations? | ICustomDecoration[] | Диапазоны оформления, например подсветка комментариев. |
| payloads? | Record<string, string> | Временные полезные данные для копирования и вставки. Это поле не сохраняется. |
dataStream
dataStream — источник достоверных данных для текста тела документа. Абзац обычно заканчивается последовательностью \r\n.
const body: IDocumentBody = { dataStream: 'Title\r\nHello Univer\r\n', paragraphs: [ { startIndex: 5, paragraphId: 'p-title' }, { startIndex: 19, paragraphId: 'p-body' }, ],}Специальные символы
Некоторые элементы документа представлены в dataStream управляющими символами, которые средство отрисовки преобразует в соответствующие элементы:
| Символ | Значение |
|---|---|
\r\n | Разрыв абзаца |
\n | Разрыв раздела |
\f | Разрыв страницы |
\v | Разрыв колонки |
\t | Табуляция |
\0 | Конец документа |
\b | Заполнитель пользовательского блока |
Таблицы и пользовательские диапазоны также используют управляющие символы внутри структуры. При работе с таблицами, ссылками, комментариями и блочными функциями рекомендуется использовать Facade API или команды, а не вводить управляющие символы вручную.
Связь с IDocumentData
IDocumentBody хранит только основной поток документа. Внешние ресурсы хранятся в IDocumentData:
tableSourceхранит определения таблиц.drawingsхранит изображения и графические объекты.headersиfootersсодержат собственные объектыIDocumentBody.listsхранит определения списков, на которые ссылаются маркеры абзацев.resourcesхранит данные, определяемые плагинами.
Насколько полезно это руководство?