문서 본문 구조
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으로 끝납니다.
TypeScript
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는 플러그인에서 정의한 데이터를 저장합니다.
이 가이드는 어떠셨나요?