# OfficialDocument · 公文生成命令

提供 composeOfficialDocument：校验公文数据后在一次可撤销的编辑中替换整篇文档。通常通过 createClassicOfficialDocumentPlugin 安装。

提供 composeOfficialDocument：校验公文数据后在一次可撤销的编辑中替换整篇文档。通常通过 createClassicOfficialDocumentPlugin 安装。

`@quirekit/official-document/classic` · **Commercial**

## 编辑器适用范围
层次：**Classic 产品适配**
| 编辑器 | 状态 | 所需装配与边界 |
| --- | --- | --- |
| Classic | 直接支持 | 这是可选的 Classic 产品扩展，加入 createClassicEditor 的 extensions。宿主继续负责资源、持久化与相应样式；它不是 plugins 中的产品插件。 |
| Block | 未支持 | Block 不消费 Classic 产品 contribution、plugins 或分页装配。请使用共享能力和 Block 适配入口，不能直接复制此入口的 Classic 配置。 |

“直接支持”指已有上述产品装配；具体交互、宿主服务和格式支持仍有各自条件。[状态与接入规则](/plugins/compatibility)。许可独立显示。

## 接入

当前 `@quirekit/official-document/classic` 的包元数据标为 private。本站使用工作区源码；外部项目需先取得对应分发包，不能把下面的公开导出理解为已经能从公共 npm 安装。

此入口属于商业组件。使用前先取得相应分发与授权；安装命令仅适用于已配置该分发源的项目。

先使用 [Classic 基础装配](/plugins/reference/classic-editor-kit)。这里的单项适配器用于自定义预设或替换子项；不能向已有装配再追加同名扩展。

```ts
import { OfficialDocument } from '@quirekit/official-document/classic'
```

安装时按包声明选择兼容版本，外部可用版本以分发源为准。本站使用工作区 Alpha；许可标签来自入口所属包，使用条件见[支持与许可](/support)。

## 按编辑器接入

以下片段沿用已挂载的宿主元素 `element`，宿主负责容器尺寸与保存；退出页面时调用 `instance.destroy()`。已有预设装配的能力不要再重复追加；需要宿主端口的入口应先完成下方配置。

### Classic

这是可选的 Classic 产品扩展，加入 createClassicEditor 的 extensions。宿主继续负责资源、持久化与相应样式；它不是 plugins 中的产品插件。

```ts
import { createClassicEditor } from '@quirekit/classic-editor'
import '@quirekit/classic-editor/styles.css'
import { OfficialDocument } from '@quirekit/official-document/classic'

const instance = createClassicEditor({
  element,
  extensions: [OfficialDocument],
})
```

### Block

Block 不消费 Classic 产品 contribution、plugins 或分页装配。请使用共享能力和 Block 适配入口，不能直接复制此入口的 Classic 配置。

## 配置

此入口没有独立的配置字段。文档属性通过领域命令设置；产品预设可能继续装配其他可配置子扩展。

## 命令与运行方式

以下命令由此扩展直接提供，均在当前 Editor 上调用。命令是否可用由已安装 schema、当前选区与保护策略决定；可以先用 `editor.can()` 查询。

| 命令 | 参数签名 |
| --- | --- |
| `composeOfficialDocument` | `composeOfficialDocument(data: { version?: 1; title?: string; format?: "letter"; copyNumber?: string; secrecy?: { term?: string; level: "秘密" \| "机密" \| "绝密"; }; urgency?: "特急" \| "加急" \| "特提" \| "平急"; documentNumber?: string; signers?: string[]; adoption?: string; recipients?: string[]; attachments?: string[]; signature?: { type: "agency"; } \| { seals?: string[]; diameter?: number; type: "sealed"; } \| { height?: number; type: "stamp"; stamps: { image?: string; position: string; }[]; } \| { name: string; type: "leader"; position: string; } \| { type: "none"; }; date?: string; note?: string; attendees?: { label: "出席" \| "请假" \| "列席"; names: string[]; }[]; imprint?: { date?: string; cc?: string[]; office?: string; }; kind: "resolution" \| "decision" \| "order" \| "communique" \| "announcement" \| "public-notice" \| "opinion" \| "notice" \| "circular" \| "report" \| "request" \| "reply" \| "proposal" \| "letter" \| "minutes"; issuer: { joint?: string[]; mark?: string; agency: string; }; body: ({ type: "paragraph"; text: string; } \| { text?: string; title: string; type: "heading"; level: number; } \| { title?: string; header?: string[][]; columns?: { width?: number; align?: "start" \| "center" \| "end"; }[]; fontSize?: 16 \| 14 \| 12; type: "table"; rows: string[][]; } \| { width?: number; caption?: string; type: "image"; src: string; })[]; })` |

这里只展示参数签名。接界面时见[命令与控件](/build/commands)，正文变更继续经过同一事务与历史。

## 下一步

返回[全部插件](/plugins)，或阅读[配置插件](/plugins/configuration)区分配置、文档属性与命令。

继续[Classic 快速接入](/classic/quick-start)和[配置与生命周期](/classic/configuration)。开发自己的产品界面与服务时，见[产品插件开发](/build/product-plugin)。
