Univer Docs API
Univer Docs 提供专业级文档排版能力,相关概念会尽可能与 Microsoft Word 保持一致。
引入
TypeScript
import '@univerjs/docs/facade'import '@univerjs/docs-ui/facade'操作文档
文档单元中 unitId 对应的是文档的唯一标识,文档不存在 subUnitId。
文档的文本内容存储在 body.dataStream 字符串中,此字符串不包含样式信息。
样式信息单独存储在另外的数据结构中,并通过下标索引与文本内容关联。
对于换行、分页、章节、段落、表格等元素, 在文本内容中使用不同的特殊字符来标记,这些特殊字符在渲染时被转换为对应的元素。
想要进一步了解文档的数据结构设计吗?推荐阅读《Univer 文档架构及模块设计》 和《Univer 文档排版设计初探》。
创建文档
使用 univerAPI.createDocument(data) 创建新的文档,并获取对应的 FDocument facade 包装对象。
参数是一个可选的文档数据对象,包含了文档的初始数据。如果传入 {},则创建一个空文档。
如果直接使用底层 univer 实例而不是 Facade API,则使用 univer.createUnit(UniverInstanceType.UNIVER_DOC, data)。
TypeScript
const doc = univerAPI.createDocument(data)获取文档 unitId
TypeScript
const doc = univerAPI.getActiveDocument()const unitId = doc?.getId()获取文档数据
TypeScript
const doc = univerAPI.getActiveDocument()const saveData = doc.save()销毁文档
当我们不再需要文档时,可以调用 Univer 实例的 dispose 方法来销毁实例。
TypeScript
univer.dispose()操作文本
对富文本区域的文本元素进行操作
插入文本
将指定的文本添加到此文本区域的末尾。
TypeScript
const doc = univerAPI.getActiveDocument()doc?.insertText(0, 'Univer')删除文本
按文档偏移删除文本。
TypeScript
const doc = univerAPI.getActiveDocument()doc?.deleteRange({ startOffset: 0, endOffset: 1 })修改样式
设置段落中的文本样式。
TypeScript
const doc = univerAPI.getActiveDocument()const paragraph = doc?.getParagraphs()[0]paragraph?.setStyle({ textStyle: { cl: { rgb: '#FF0000', }, },})插入分页符
\f 为分页符,用于在文档中插入分页符。
TypeScript
const doc = univerAPI.getActiveDocument()doc?.insertText(0, '\f')文档统计
通过底层 DocumentDataModel 统计整篇文档或指定文本范围。
TypeScript
const doc = univerAPI.getActiveDocument()if (!doc) throw new Error('No active document')const statistics = await doc.getDocumentDataModel().getStatistics({ locale: univerAPI.Enum.LocaleType.ZH_CN,})console.log(statistics.words, statistics.charactersWithSpaces, statistics.paragraphs)getStatistics() 返回单词、字符和段落数量。通过 ranges 可仅统计选中文本,通过 signal 可取消已不再需要的计算。
你觉得这篇文档如何?