核心功能

Univer Docs 的核心功能包含了文档编辑器、公式引擎、渲染引擎、设计系统和 UI 组件库等。它们共同构成了一个强大的文档处理平台,支持多种文档格式和复杂的文档操作。

特性

Univer Docs 的核心功能包括:

  • 文档渲染:支持 Univer Docs 的渲染和光标、选区的绘制。
  • 文档排版:支持全文排版,包括段落设置,段前后间距、段落对齐、缩进和悬挂等,也包括段落中的排版能力,标点挤压、标点悬挂、字偶间距、西文断词等。
  • 公式计算:支持 Univer 公式的添加和计算(开发中)。
  • 表格能力:支持插入基本表格和表格的编辑,新增、删除行类操作,编辑单元格等。
  • 文档风格:Univer Docs 不仅支持类似 Microsoft Word 的传统文档风格(包含分页、页眉页脚等),也支持类似 Notion 的现代文档风格。在现代文档风格中,无需分页,内容可以无限扩展,支持多种官方或第三方块级元素(如文本、图片、表格等)的混合排版(计划中)。
  • 页眉页脚:支持插入页眉页脚和编辑页眉页脚内容,可以区分首页及奇偶页等,仅传统文档支持。
  • 列表功能:支持有序、无序列表和任务列表的插入和编辑,支持列表的缩进和反缩进等。
  • 表情与符号:可从 Docs 功能区插入表情和符号。
  • 插件系统:支持插件系统,可以自定义插件,如公式插件、图片插件、图表插件等,这也是 Univer 核心架构能力之一。

插件模式

安装

Shell
pnpm add @univerjs/core @univerjs/engine-render @univerjs/engine-formula @univerjs/design @univerjs/ui @univerjs/docs @univerjs/docs-ui

使用

TypeScript
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import { FUniver } from '@univerjs/core/facade'import DesignZhCN from '@univerjs/design/locale/zh-CN'import { UniverDocsPlugin } from '@univerjs/docs'import { UniverDocsUIPlugin } from '@univerjs/docs-ui'import DocsUIZhCN from '@univerjs/docs-ui/lib/locale/zh-CN'import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'import { UniverRenderEnginePlugin } from '@univerjs/engine-render'import { UniverUIPlugin } from '@univerjs/ui'import UIZhCN from '@univerjs/ui/locale/zh-CN'import '@univerjs/docs/facade'import '@univerjs/docs-ui/facade'import '@univerjs/design/lib/index.css'import '@univerjs/ui/lib/index.css'import '@univerjs/docs-ui/lib/index.css'const univer = new Univer({  locale: LocaleType.ZH_CN,  locales: {    [LocaleType.ZH_CN]: mergeLocales(DesignZhCN, UIZhCN, DocsUIZhCN),  },})univer.registerPlugin(UniverRenderEnginePlugin)univer.registerPlugin(UniverFormulaEnginePlugin)univer.registerPlugin(UniverUIPlugin, {  container: 'app',})univer.registerPlugin(UniverDocsPlugin)univer.registerPlugin(UniverDocsUIPlugin)const univerAPI = FUniver.newAPI(univer)univerAPI.createDocument({})

插件与配置

@univerjs/core

本插件是 Univer 的核心库,提供了创建 Univer 实例、主题、语言等基础功能。

TypeScript
import type { IUniverConfig } from '@univerjs/core'import { LocaleType, Univer } from '@univerjs/core'const config: IUniverConfig = {  locale: LocaleType.ZH_CN,  darkMode: false,}const univer = new Univer(config)

参考:IUniverConfig

@univerjs/engine-render

本插件是 Univer 的渲染引擎,负责渲染、滚动条、光标和选区等的绘制。其提供了 UniverRenderEnginePlugin 插件。

参考:@univerjs/engine-render

@univerjs/engine-formula

本插件是 Univer 的公式引擎,负责公式的计算和处理。其提供了 UniverFormulaEnginePlugin 插件。

参考:@univerjs/engine-formula

@univerjs/design

本插件是 Univer 的设计系统,提供了所有的基础组件和样式。

详见: UI 章节

@univerjs/ui

本插件是 Univer 的 UI 基座。其提供了 UniverUIPlugin 插件。

UniverUIPlugin 提供了一些配置项,可用于基础布局的配置。

TypeScript
interface IUniverUIConfig {  // 容器元素,可以是字符串或者 DOM 元素。  container?: string | HTMLElement  // 是否显示头部  header?: boolean  // 是否显示头部工具栏  toolbar?: boolean  // 头部工具栏的类型。'classic': 默认经典模式;'grid': 两行网格模式;'collapsed': 紧凑模式;'simple':不分组模式  ribbonType?: RibbonType  // 是否显示右键菜单  contextMenu?: boolean  // 是否禁用自动聚焦  disableAutoFocus?: true  // 依赖注入的覆盖配置  override?: DependencyOverride  // 菜单配置  menu?: MenuConfig}

其中,menu 配置项可以用于简单地设置某些特定菜单项的显示或隐藏等状态:

TypeScript
univer.registerPlugin(UniverDocsUIPlugin, {  menu: {    'doc.command.set-inline-format-bold': {      hidden: true,    },    'doc.command.set-inline-format-italic': {      hidden: true,      disabled: true,    },  },})

这里的 'doc.command.set-inline-format-bold' 和 'doc.command.set-inline-format-italic' 是命令的名称,表示对应的菜单项。

参考:@univerjs/docs-ui

@univerjs/docs

本插件是 Univer Docs 的核心插件。其提供了 UniverDocsPlugin 插件。

参考:@univerjs/docs

@univerjs/docs-ui

本插件是 Univer Docs 的 UI 插件,包含了文档编辑器的 UI 组件和交互。其提供了 UniverDocsUIPlugin 插件。

参考:@univerjs/docs-ui

预设模式

安装

Shell
pnpm add @univerjs/presets @univerjs/preset-docs-core

使用

TypeScript
import { UniverDocsCorePreset } from '@univerjs/preset-docs-core'import UniverPresetDocsCoreZhCN from '@univerjs/preset-docs-core/locales/zh-CN'import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'import '@univerjs/preset-docs-core/lib/index.css'const { univer, univerAPI } = createUniver({  locale: LocaleType.ZH_CN,  locales: {    [LocaleType.ZH_CN]: mergeLocales(UniverPresetDocsCoreZhCN),  },  presets: [UniverDocsCorePreset()],})univerAPI.createDocument({})

预设与配置

@univerjs/presets

本预设提供了创建 Univer 应用所需的 createUniver 方法,以及暴露了 @univerjs/core 和 @univerjs/design 的所有方法和对象。

createUniver 方法接受一个配置对象,包含主题、语言、预设等选项,返回一个 Univer 实例 univer 和用于调用 Facade API 的 FUniver 实例 univerAPI。

TypeScript
interface ICreateUniverParameter {  // Univer 实例的主题,默认使用 defaultTheme  theme: IStyleSheet  // 是否使用暗黑模式,默认为 false。  darkMode?: boolean  // Univer 实例的语言环境  locale: LocaleType  region?: LocaleType  // 要使用的语言环境对象,键为语言环境类型,值为对应的语言环境对象  locales: ILocales  // Univer 实例的日志级别  logLevel?: LogLevel  // 要使用的预设列表。  presets: IPresets[]  // 要使用的插件列表。  plugins: IPlugins[]}

参考:createUniver

@univerjs/preset-docs-core

本预设是 Univer Docs 的核心预设,包含了文档编辑器、公式引擎、渲染引擎等电子文档必要的核心功能。

TypeScript
interface IUniverDocsCorePresetConfig {  // 容器元素,可以是字符串或者 DOM 元素  container?: string | HTMLElement  // 是否显示头部  header?: boolean  // 是否显示头部工具栏  toolbar?: boolean  // 头部工具栏的类型。'classic': 默认经典模式;'grid': 两行网格模式;'collapsed': 紧凑模式;'simple':不分组模式  ribbonType?: RibbonType  // 是否显示底部。  footer?: boolean  // 是否显示右键菜单  contextMenu?: boolean  // 是否禁用自动聚焦  disableAutoFocus?: true  // 菜单配置  menu?: MenuConfig  // ... 更多配置项}

其中,menu 配置项可以用于简单地设置某些特定菜单项的显示或隐藏等状态:

TypeScript
UniverDocsCorePreset({  menu: {    'doc.command.set-inline-format-bold': {      hidden: true,    },    'doc.command.set-inline-format-italic': {      hidden: true,      disabled: true,    },  },})

这里的 'doc.command.set-inline-format-bold' 和 'doc.command.set-inline-format-italic' 是命令的名称,表示对应的菜单项。

参考:@univerjs/preset-docs-core

视图控制

视图工具栏包含页面设置、缩放和全屏入口。缩放选择器与底部缩放条显示相同的文档视图比例;调整比例不会修改文字格式。

先使用 Docs 菜单 ID 定义共用的 MenuConfig,再按接入模式应用配置:

TypeScript
import type { MenuConfig } from '@univerjs/ui'const menu: MenuConfig = {  'ribbon.start.format': { order: -1 },  'doc.command.set-inline-format-bold': {    order: 0,    gridLayout: { row: 2, column: 2 },  },  'doc.command.set-inline-format-italic': {    gridLayout: { row: 2, column: 1 },  },}

按接入模式将以下选项合并到已有的初始化配置中,保留其他插件、语言、主题和容器配置,不要重复注册同一插件。

TypeScript
import { UniverUIPlugin } from '@univerjs/ui'univer.registerPlugin(UniverUIPlugin, {  ribbonType: 'grid',  menu,})

初始化后,使用 updateMenuConfig() 更新已有实例:

TypeScript
import '@univerjs/ui/facade'univerAPI.updateMenuConfig(menu)

order 按数值从小到大排列同级节点;gridLayout 仅用于网格 Ribbon,坐标在各自的两行分组内从 1 开始。运行时更新会保留未指定的属性并立即刷新 UI。插件模式下,将 menu 传给 UniverUIPlugin,并先导入 @univerjs/ui/facade 再调用 Facade。网格字段及自定义按钮示例见菜单布局指南。

粘贴选项

Docs 支持保留源格式、匹配目标格式和仅保留文本三种粘贴方式。匹配目标格式会采用目标文字及段落样式,同时保留粗体、斜体等受支持的强调格式。仅保留文本会移除图片和超链接,表格转为制表符分隔的文本。粘贴后可通过选项切换最近一次粘贴的方式;浏览器禁止读取剪贴板时,使用键盘快捷键或系统粘贴。

桌面端 Ribbon 的粘贴下拉菜单位于撤销、重做旁,编辑形状文本时会隐藏。桌面端和移动端右键菜单中的选择性粘贴均位于格式分组。

在传统文档中编辑页眉或页脚时,会出现用于插入、导航、首页/奇偶页选项和位置设置的上下文 Ribbon。可插入当前页码、总页数以及本地化日期和时间。页码字段按各个渲染页面显示对应值。插入日期/时间时,勾选自动更新会保存为字段,取消勾选则插入固定文本。日期/时间字段在打开文档或执行“更新字段”时刷新,不会作为时钟持续走动。现代文档不使用分页页眉页脚。

文档大纲

左侧大纲用于跳转到标题,不会在正文中插入目录。省略 toc 时,现代文档默认开启,传统文档默认关闭;显式设置 true 或 false 可覆盖默认值。空间不足或表格与大纲重叠时,面板会收起,空间恢复后重新展开。

将该选项合并到现有初始化配置中,不要重复注册同一插件。

TypeScript
import { UniverDocsUIPlugin } from '@univerjs/docs-ui'univer.registerPlugin(UniverDocsUIPlugin, { toc: true })

标题折叠

现代文档(documentStyle.documentFlavor: DocumentFlavor.MODERN)会在具有章节内容的一级至五级标题旁显示三角按钮。折叠后保留标题,隐藏其后直到下一个同级或更高级标题之前的内容,包括子标题、表格和图片。每个表格单元格和现代文档分栏都有独立的标题层级。

标题折叠不受 toc 控制。传统文档和嵌入式文本编辑器不显示折叠控件。展开父标题时,子标题会保留各自的折叠状态。

标题折叠示意

先折叠子标题,再折叠并展开父标题,子章节会保持折叠。

标题将文字、表格和图片组织为章节。

折叠状态随文档保存,并与协作者共享。

导出与复用

同级标题开始新的章节,不受上一章节折叠的影响。

IParagraph.headingCollapsed 随 Univer 快照保存,仅 true 表示折叠。正文内容仍在快照中,折叠支持撤销、重做和协同,并与其他编辑者共享。隐藏内容中的选区会移到可见标题。该约定不保证 Office 导入导出保留折叠状态。

通过代码修改时,使用文档 ID 和快照中稳定的 paragraphId 执行已注册的命令。设为 collapsed: false 可展开。

TypeScript
import { SetHeadingCollapsedCommand } from '@univerjs/docs'const changed = await univerAPI.executeCommand(SetHeadingCollapsedCommand.id, {  unitId: documentId,  paragraphId: headingParagraphId,  collapsed: true,})

状态未变或目标无效时,命令返回 false,例如传统文档、被祖先标题隐藏的标题、折叠空章节或无编辑权限。详见命令契约。

你觉得这篇文档如何?

© 2026 DreamNum Co., Ltd.