本文データ構造
IDocumentBody
IDocumentBody は Univer Docs ドキュメントの本文フローを保存します。
実際のテキストは dataStream に保存され、スタイルや構造情報は別の配列に保存されます。それらはテキストのインデックスによって関連付けられます。
プロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
| dataStream | string | 本文のプレーンテキストストリーム。段落、セクション、テーブル、カスタムブロックは特殊文字で表現されます。 |
| textRuns? | ITextRun[] | インラインスタイル範囲。 |
| paragraphs? | IParagraph[] | 段落メタデータと段落スタイル。 |
| sectionBreaks? | ISectionBreak[] | セクション区切りのメタデータ。 |
| customBlocks? | ICustomBlock[] | プラグイン定義のブロックプレースホルダー。 |
| tables? | ICustomTable[] | 本文内のテーブルマーカー。テーブル定義は IDocumentData.tableSource に保存されます。 |
| columnGroups? | ICustomColumnGroup[] | カラムグループマーカー。 |
| blockRanges? | IDocumentBlockRange[] | callout、quote、code block などの構造化ブロック範囲。 |
| customRanges? | ICustomRange[] | ハイパーリンク、フィールド、ブックマーク、コメント、mention、プラグイン定義範囲。 |
| 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はプラグイン定義データを保存します。
このガイドはいかがですか?