@amaster.ai/pi-lark 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/skills/lark-apps/SKILL.md +39 -6
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +5 -4
- package/skills/lark-apps/references/lark-apps-create.md +6 -3
- package/skills/lark-apps/references/lark-apps-get.md +1 -1
- package/skills/lark-apps/references/lark-apps-list.md +1 -1
- package/skills/lark-apps/references/lark-apps-local-dev.md +27 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +1 -1
- package/skills/lark-base/SKILL.md +14 -6
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +17 -1
- package/skills/lark-base/references/lark-base-dashboard.md +17 -4
- package/skills/lark-base/references/lark-base-data-query-guide.md +8 -0
- package/skills/lark-base/references/lark-base-field-create.md +19 -8
- package/skills/lark-base/references/lark-base-field-json.md +5 -2
- package/skills/lark-calendar/SKILL.md +1 -1
- package/skills/lark-doc/SKILL.md +26 -61
- package/skills/lark-doc/references/genres/business-analysis.md +30 -0
- package/skills/lark-doc/references/genres/data-report.md +32 -0
- package/skills/lark-doc/references/genres/email.md +38 -0
- package/skills/lark-doc/references/genres/execution-plan.md +27 -0
- package/skills/lark-doc/references/genres/formal-doc.md +37 -0
- package/skills/lark-doc/references/genres/meeting-minutes.md +24 -0
- package/skills/lark-doc/references/genres/memo-brief.md +25 -0
- package/skills/lark-doc/references/genres/official-redhead.md +73 -0
- package/skills/lark-doc/references/genres/prd.md +26 -0
- package/skills/lark-doc/references/genres/proposal.md +24 -0
- package/skills/lark-doc/references/genres/research-report.md +32 -0
- package/skills/lark-doc/references/genres/retrospective.md +25 -0
- package/skills/lark-doc/references/genres/route-consumer.md +37 -0
- package/skills/lark-doc/references/genres/route-creative.md +36 -0
- package/skills/lark-doc/references/genres/route-knowledge.md +39 -0
- package/skills/lark-doc/references/genres/route-marketing.md +40 -0
- package/skills/lark-doc/references/genres/route-media.md +36 -0
- package/skills/lark-doc/references/genres/route-opinion.md +38 -0
- package/skills/lark-doc/references/genres/route-personal-brand.md +36 -0
- package/skills/lark-doc/references/genres/route-platform.md +9 -0
- package/skills/lark-doc/references/genres/route-report.md +10 -0
- package/skills/lark-doc/references/genres/route-workplace.md +17 -0
- package/skills/lark-doc/references/genres/sop-tutorial.md +41 -0
- package/skills/lark-doc/references/genres/technical-doc.md +39 -0
- package/skills/lark-doc/references/genres/wechat.md +39 -0
- package/skills/lark-doc/references/genres/weekly-report.md +24 -0
- package/skills/lark-doc/references/genres/white-paper.md +32 -0
- package/skills/lark-doc/references/genres/xiaohongshu.md +38 -0
- package/skills/lark-doc/references/lark-doc-create-workflow.md +121 -0
- package/skills/lark-doc/references/lark-doc-create.md +22 -48
- package/skills/lark-doc/references/lark-doc-fetch.md +75 -92
- package/skills/lark-doc/references/lark-doc-history.md +16 -15
- package/skills/lark-doc/references/lark-doc-md.md +5 -1
- package/skills/lark-doc/references/lark-doc-media-download.md +2 -1
- package/skills/lark-doc/references/lark-doc-script.md +76 -0
- package/skills/lark-doc/references/lark-doc-update.md +70 -222
- package/skills/lark-doc/references/lark-doc-whiteboard.md +5 -9
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +17 -12
- package/skills/lark-doc/references/lark-doc-xml.md +38 -167
- package/skills/lark-drive/SKILL.md +7 -5
- package/skills/lark-drive/references/lark-drive-apply-permission.md +1 -1
- package/skills/lark-drive/references/lark-drive-copy.md +87 -0
- package/skills/lark-drive/references/lark-drive-download.md +2 -1
- package/skills/lark-drive/references/lark-drive-export.md +3 -0
- package/skills/lark-drive/references/lark-drive-task-result.md +3 -0
- package/skills/lark-drive/references/lark-drive-update-title.md +78 -0
- package/skills/lark-event/SKILL.md +7 -4
- package/skills/lark-event/references/lark-event-vc.md +8 -2
- package/skills/lark-im/SKILL.md +8 -8
- package/skills/lark-im/references/lark-im-chat-list.md +9 -2
- package/skills/lark-im/references/lark-im-chat-members-list.md +7 -4
- package/skills/lark-im/references/lark-im-chat-messages-list.md +10 -3
- package/skills/lark-im/references/lark-im-chat-search.md +9 -2
- package/skills/lark-im/references/lark-im-feed-group-list-item.md +2 -2
- package/skills/lark-im/references/lark-im-feed-group-list.md +2 -2
- package/skills/lark-im/references/lark-im-feed-shortcut-list.md +1 -1
- package/skills/lark-im/references/lark-im-flag-list.md +2 -2
- package/skills/lark-im/references/lark-im-message-enrichment.md +1 -1
- package/skills/lark-im/references/lark-im-messages-resources-download.md +19 -25
- package/skills/lark-im/references/lark-im-messages-search.md +4 -5
- package/skills/lark-im/references/lark-im-threads-messages-list.md +8 -4
- package/skills/lark-mail/references/lark-mail-triage.md +19 -4
- package/skills/lark-minutes/SKILL.md +1 -1
- package/skills/lark-minutes/references/lark-minutes-search.md +6 -7
- package/skills/lark-shared/SKILL.md +3 -3
- package/skills/lark-sheets/SKILL.md +83 -82
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +13 -58
- package/skills/lark-sheets/references/lark-sheets-chart.md +2 -1
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +1 -1
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +5 -5
- package/skills/lark-sheets/references/lark-sheets-read-data.md +80 -6
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +21 -10
- package/skills/lark-sheets/references/lark-sheets-styles-put.md +93 -0
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +2 -2
- package/skills/lark-sheets/references/lark-sheets-workbook.md +4 -3
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +40 -12
- package/skills/lark-sheets/scripts/lark_detect_subtables.py +593 -0
- package/skills/lark-sheets/scripts/lark_inspect_workbook.py +188 -0
- package/skills/lark-sheets/scripts/lark_profile_table.py +614 -0
- package/skills/lark-sheets/scripts/lark_sheet_range.py +176 -0
- package/skills/lark-sheets/scripts/lark_sheet_read_cli.py +184 -0
- package/skills/lark-sheets/scripts/sheets_df.py +21 -3
- package/skills/lark-slides/SKILL.md +27 -44
- package/skills/lark-slides/references/lark-slides-add-slide.md +92 -0
- package/skills/lark-slides/references/lark-slides-create.md +77 -65
- package/skills/lark-slides/references/lark-slides-delete-slide.md +65 -0
- package/skills/lark-slides/references/lark-slides-edit-workflows.md +6 -7
- package/skills/lark-slides/references/lark-slides-media-upload.md +3 -25
- package/skills/lark-slides/references/lark-slides-replace-slide.md +22 -1
- package/skills/lark-slides/references/lark-slides-screenshot.md +31 -13
- package/skills/lark-slides/references/lark-slides-update-slide.md +146 -0
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +31 -8
- package/skills/lark-slides/references/slides_chart_demo.xml +1 -2
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +48 -4
- package/skills/lark-slides/references/troubleshooting.md +7 -8
- package/skills/lark-slides/references/validation-checklist.md +4 -4
- package/skills/lark-slides/references/xml-schema-quick-ref.md +23 -11
- package/skills/lark-slides/scripts/sxsd_validator.py +154 -10
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +360 -76
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +1138 -214
- package/skills/lark-whiteboard/SKILL.md +15 -8
- package/skills/lark-whiteboard/references/lark-whiteboard-export.md +4 -3
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +4 -4
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +19 -17
- package/skills/lark-whiteboard/routes/dsl.md +8 -2
- package/skills/lark-whiteboard/routes/mermaid.md +1 -1
- package/skills/lark-whiteboard/routes/svg-edit.md +5 -2
- package/skills/lark-whiteboard/routes/svg.md +3 -1
- package/skills/lark-whiteboard/scenes/mention.md +71 -0
- package/skills/lark-wiki/SKILL.md +5 -3
- package/skills/lark-wiki/references/lark-wiki-delete-space.md +6 -3
- package/skills/lark-doc/references/lark-doc-word-stat.md +0 -93
- package/skills/lark-doc/references/style/lark-doc-create-workflow.md +0 -47
- package/skills/lark-doc/references/style/lark-doc-style.md +0 -68
- package/skills/lark-doc/references/style/lark-doc-update-workflow.md +0 -48
- package/skills/lark-doc/scripts/doc_word_stat.py +0 -1243
- package/skills/lark-slides/references/lark-slides-replace-pages.md +0 -95
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -219
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +0 -126
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# slides +update-slide(整页更新已有页面)
|
|
2
|
+
|
|
3
|
+
把一整页 XML 交给某个已有页面,页面变成 `--content` 描述的样子。`slide_id` 和页序都不变。
|
|
4
|
+
|
|
5
|
+
## 命令
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 标准用法:整页 XML 从文件读(推荐:避免 shell 转义和长参数截断)
|
|
9
|
+
lark-cli slides +update-slide --as user \
|
|
10
|
+
--presentation "https://xxx.larkoffice.com/slides/SCtZ...ynae" \
|
|
11
|
+
--slide-id "piy" \
|
|
12
|
+
--content @page.xml
|
|
13
|
+
|
|
14
|
+
# XML 从 stdin 读
|
|
15
|
+
cat page.xml | lark-cli slides +update-slide --as user \
|
|
16
|
+
--presentation "$PRES" --slide-id "$SLIDE" --content -
|
|
17
|
+
|
|
18
|
+
# wiki 链接直接传(CLI 自动解析并校验 obj_type=slides)
|
|
19
|
+
lark-cli slides +update-slide --as user \
|
|
20
|
+
--presentation "https://xxx.larkoffice.com/wiki/wikcn..." \
|
|
21
|
+
--slide-id "piy" --content @page.xml
|
|
22
|
+
|
|
23
|
+
# 预览请求,不实际写入
|
|
24
|
+
lark-cli slides +update-slide --as user \
|
|
25
|
+
--presentation "$PRES" --slide-id "$SLIDE" --content @page.xml --dry-run
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 参数
|
|
29
|
+
|
|
30
|
+
| 参数 | 必需 | 说明 |
|
|
31
|
+
|------|------|------|
|
|
32
|
+
| `--presentation` | 是 | `xml_presentation_id`、`/slides/` URL 或 `/wiki/` URL |
|
|
33
|
+
| `--slide-id` | 是 | 要整页替换的页面 `slide_id` |
|
|
34
|
+
| `--content` | 是 | 这一页的完整目标 XML,单一 `<slide>` 根;支持字面量、`@file`、stdin `-`。别名:`--xml` / `--slide-xml` / `--slide-content` / `--content-xml` |
|
|
35
|
+
| `--revision-id` | 否 | 默认 `-1`(最新)。它只选择服务端执行所基于的快照,不是“页面有新编辑就拒绝”的乐观锁;传旧版本号会以旧快照重建页面并丢弃其后的编辑 |
|
|
36
|
+
| `--tid` | 否 | 调用方提供的任务/事务标识,CLI 原样透传;用于关联同一编辑任务或重试,不等同于版本前置条件,不能单独保证并发冲突时拒绝写入。一般留空 |
|
|
37
|
+
|
|
38
|
+
`@file` 和 `+xml-get --output` 一样**只接受当前目录下的相对路径**,绝对路径会被拒。
|
|
39
|
+
命令别名:`slides +update`(隐藏);服务别名:`lark-cli slide …` 等价于 `lark-cli slides …`。
|
|
40
|
+
|
|
41
|
+
如果要求“从读取之后页面一旦变化就不再写入”,不能只传 `--revision-id` 或 `--tid`。写入前必须再次用 `+xml-get` 回读最新版,比较读取期间是否发生变化;有变化时先基于最新版重新合并本次修改,再执行整页写回。当前 shortcut 不提供严格的 compare-and-swap 保证。
|
|
42
|
+
|
|
43
|
+
## 语义:`--content` 就是这一页的最终状态
|
|
44
|
+
|
|
45
|
+
**没写进 `--content` 的东西会从页面上消失。** 这不是补丁,是整页覆盖。
|
|
46
|
+
|
|
47
|
+
| 你在 `--content` 里怎么写 | 页面上的结果 |
|
|
48
|
+
|---|---|
|
|
49
|
+
| 元素带原来的 `id` | 按新 XML 更新这个元素 |
|
|
50
|
+
| 元素不带 `id` | 作为新元素插入到它所在的位置 |
|
|
51
|
+
| 原来有、`--content` 里没有的元素 | **删除** |
|
|
52
|
+
| `<style>` 改了 | 背景等页面样式跟着改 |
|
|
53
|
+
| 没写 `<note>` | 讲者备注被清空 |
|
|
54
|
+
|
|
55
|
+
一次请求就能同时做完改样式、插入、删除、换备注、换背景——这是 `+replace-slide` 逐元素 part 做不到的(它没法寻址背景,也没有 move 操作)。
|
|
56
|
+
|
|
57
|
+
## 标准读-改-写流程
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# 1. 读回当前页(拿到带 id 的完整 XML)
|
|
61
|
+
lark-cli slides +xml-get --as user \
|
|
62
|
+
--presentation "$PRES" --slide-id "$SLIDE" --output page.xml
|
|
63
|
+
|
|
64
|
+
# 2. 编辑 page.xml —— 保留想留下的元素的 id,删掉不要的整段,新元素不写 id
|
|
65
|
+
|
|
66
|
+
# 3. 整页写回
|
|
67
|
+
lark-cli slides +update-slide --as user \
|
|
68
|
+
--presentation "$PRES" --slide-id "$SLIDE" --content @page.xml
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
先 `--dry-run` 看请求,确认无误再执行。
|
|
72
|
+
|
|
73
|
+
> ⚠️ **第 1 步不要加 `--remove-attr-id`。** 那个参数会把所有元素的 `id` 去掉,再交给 `+update-slide` 的话,每个元素都会被当成新元素插入、原来的全部被删除——页面看起来一样,但所有元素换了新 id,锚在旧 id 上的评论和 block 直达链接全部失效,而且**不会有任何报错**。`--remove-attr-id` 只用于只读查看。
|
|
74
|
+
|
|
75
|
+
## 命令校验与空页限制
|
|
76
|
+
|
|
77
|
+
| 情况 | 报错 |
|
|
78
|
+
|---|---|
|
|
79
|
+
| 根元素不是 `<slide>`(例如直接给了 `<shape>`) | `--content root must be <slide>` → 改单个元素请用 `+replace-slide` |
|
|
80
|
+
| 根 `id` 和 `--slide-id` 不一致 | 拒绝。这通常是 A 页的 XML 要写到 B 页 —— 会毁掉 B 页 |
|
|
81
|
+
| 根 `id` 缺失 | 自动补上 `--slide-id`,不报错 |
|
|
82
|
+
| 根标签带命名空间前缀(`<sml:slide>`) | 拒绝。页面 id 没法贴到带前缀的标签上;写成 `<slide>`,需要命名空间就用默认 `xmlns` |
|
|
83
|
+
| `<slide>` 之后还有第二个根元素或多余文本 | 拒绝。服务端解析会静默丢掉它们 |
|
|
84
|
+
| XML 不合法 | 拒绝,带上出错位置 |
|
|
85
|
+
| `<slide/>`(自闭合,空页) | 命令本身可以解析,但提交前的强制版式 lint 会报 `blank_slide`;按本 Skill 不得调用接口提交空页 |
|
|
86
|
+
|
|
87
|
+
标为“拒绝”的情况由命令校验拦截,**不会发出任何请求**;空页则必须在调用命令前由强制版式 lint 拦截。
|
|
88
|
+
|
|
89
|
+
## 什么时候不要用它
|
|
90
|
+
|
|
91
|
+
- **只改一个元素** → 用 [`+replace-slide`](lark-slides-replace-slide.md),一条 `block_replace` part 更省,也不用带上整页
|
|
92
|
+
- **要改多个页面** → 对每一页各跑一次本命令
|
|
93
|
+
- **要新建页面** → `slides +create` 或 `xml_presentation.slide create`
|
|
94
|
+
|
|
95
|
+
## 提交前与写入后验证
|
|
96
|
+
|
|
97
|
+
和其他整页写入一样,把 `--content` 存成本地文件后先跑版式 lint。先取得当前已加载 `lark-slides/SKILL.md` 的父目录,记为 `<lark-slides-skill-dir>`;不要猜测全局安装路径:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
python3 "<lark-slides-skill-dir>/scripts/xml_text_overlap_lint.py" --input page.xml
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`summary.error_count` 必须为 0 才调接口;`warning_count > 0` 时写完要截图复核。
|
|
104
|
+
|
|
105
|
+
写入成功后,必须回读整份演示文稿的最新 XML,而不是只相信写接口的成功响应:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
lark-cli slides +xml-get --as user \
|
|
109
|
+
--presentation "$PRES" --output readback.xml
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
按当前已加载 `lark-slides/SKILL.md` 指向的 [validation-checklist.md](validation-checklist.md) 完成验证:核对总页数、目标页和关键元素(包括需要保留的 ID、文本、背景与备注),并对回读 XML 运行同一版式 lint;发现差异时先停止后续写入并重新基于最新版处理。
|
|
113
|
+
|
|
114
|
+
## 成功输出
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"ok": true,
|
|
119
|
+
"identity": "user",
|
|
120
|
+
"data": {
|
|
121
|
+
"xml_presentation_id": "slides_example_presentation_id",
|
|
122
|
+
"slide_id": "piy",
|
|
123
|
+
"revision_id": 43
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
| `data` 下的字段 | 说明 |
|
|
129
|
+
|------|------|
|
|
130
|
+
| `xml_presentation_id` | 实际写入的演示文稿 ID |
|
|
131
|
+
| `slide_id` | 与传入相同——整页覆盖不换页 id |
|
|
132
|
+
| `revision_id` | 写入后的新版本号 |
|
|
133
|
+
|
|
134
|
+
服务端拒绝这次写入时(`failed_reason` 非空)**不会**返回成功输出,而是报错并带上原因——单个 part 承载整页,任何失败都意味着页面没被写入。
|
|
135
|
+
|
|
136
|
+
- 原因包含 `not found`:先检查 `--presentation` 和 `--slide-id`,再用 `slides +xml-get` 回读当前页面 ID。页面可能已删除,或 ID 来自另一份演示文稿。
|
|
137
|
+
- 其他 invalid-parameter 错误:检查 `--content` 中不支持的元素、缺少 `<content/>` 的 `<shape>`,以及超出 960×540 的坐标。
|
|
138
|
+
|
|
139
|
+
## 常见错误
|
|
140
|
+
|
|
141
|
+
| 现象 | 原因 | 解决 |
|
|
142
|
+
|------|------|------|
|
|
143
|
+
| 3350001,原因包含 `not found` | `--presentation` 不匹配,或 `--slide-id` 对应的页面已被删除 | 检查 `--presentation` 和 `--slide-id`,再用 `slides +xml-get` 回读当前页面 ID |
|
|
144
|
+
| 3350001,其他 invalid param | `--content` 的 XML 结构有问题(如 `<shape>` 缺 `<content/>`、包含服务端不支持的元素) | 按 [troubleshooting.md](troubleshooting.md) 检查 `--content` 的 XML 结构 |
|
|
145
|
+
| 3350002 not found | `--revision-id` 传了不存在的版本号 | 用 `-1` 或真实存在的 `revision_id` |
|
|
146
|
+
| 1061004 / 403 | 当前身份对这份 PPT 没有编辑权限 | 检查是否拥有 `slides:presentation:update` 或 `slides:presentation:write_only` scope;wiki 链接另需 `wiki:node:read`;`--as bot` 还要求该 bot 对目标 PPT 有编辑权限 |
|
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## 用途
|
|
4
4
|
|
|
5
|
-
读取飞书幻灯片(PPT
|
|
5
|
+
读取飞书幻灯片(PPT)的完整演示文稿 XML,或通过 `--slide-id` / `--slide-number` 读取指定单页 XML。
|
|
6
6
|
|
|
7
7
|
## Shortcut
|
|
8
8
|
|
|
9
9
|
使用 `slides +xml-get` shortcut,可以把 XML 保存到本地文件,避免终端输出被截断。
|
|
10
10
|
|
|
11
|
-
|
|
12
11
|
```bash
|
|
13
12
|
lark-cli slides +xml-get --as user \
|
|
14
13
|
--presentation "slides_example_presentation_id" \
|
|
@@ -22,9 +21,12 @@ lark-cli slides +xml-get --as user \
|
|
|
22
21
|
|------|------|------|------|
|
|
23
22
|
| `--presentation` | string | 是 | 演示文稿的唯一标识符 |
|
|
24
23
|
| `--revision-id` | integer | 否 | 版本号,`-1` 表示最新版本 |
|
|
25
|
-
| `--output` | string |
|
|
26
|
-
| `--
|
|
27
|
-
| `--
|
|
24
|
+
| `--output` | string | 否 | XML 保存路径,必须使用相对路径;省略时 XML 在 stdout 的 JSON envelope 中返回 |
|
|
25
|
+
| `--raw` | flag | 否 | 直接把 XML 输出到 stdout,不包 JSON envelope;不能与 `--output`、`--jq` 或非 JSON `--format` 同时使用 |
|
|
26
|
+
| `--slide-id` | string | 否 | 只读取指定 `slide_id` 的单页 XML;不能与 `--slide-number` 或 `--remove-attr-id` 同时使用 |
|
|
27
|
+
| `--slide-number` | integer | 否 | 只读取指定的 1-based 页码;不能与 `--slide-id` 或 `--remove-attr-id` 同时使用 |
|
|
28
|
+
| `--remove-attr-id` | flag | 否 | 仅全文读取可用;移除 XML id 属性后读取,不适合后续精确块编辑 |
|
|
29
|
+
| `--json` | flag | 否 | `--format json` 的简写,json 为默认输出格式 |
|
|
28
30
|
|
|
29
31
|
|
|
30
32
|
### 基础示例
|
|
@@ -36,6 +38,27 @@ lark-cli slides +xml-get --as user \
|
|
|
36
38
|
--json
|
|
37
39
|
```
|
|
38
40
|
|
|
41
|
+
### 读取单页并保存
|
|
42
|
+
|
|
43
|
+
按页面 ID 和按页码二选一:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
lark-cli slides +xml-get --as user \
|
|
47
|
+
--presentation "slides_example_presentation_id" \
|
|
48
|
+
--slide-id "slide_example_id" \
|
|
49
|
+
--output .lark-slides/plan/slides_example_presentation_id/slide.xml \
|
|
50
|
+
--json
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 直接输出 XML 到管道
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
lark-cli slides +xml-get --as user \
|
|
57
|
+
--presentation "slides_example_presentation_id" \
|
|
58
|
+
--slide-number 1 \
|
|
59
|
+
--raw
|
|
60
|
+
```
|
|
61
|
+
|
|
39
62
|
### 指定版本读取
|
|
40
63
|
|
|
41
64
|
```bash
|
|
@@ -96,7 +119,7 @@ lark-cli slides xml_presentations get --as user --params '<json_params>'
|
|
|
96
119
|
"xml_presentation": {
|
|
97
120
|
"presentation_id": "slides_example_presentation_id",
|
|
98
121
|
"revision_id": 1,
|
|
99
|
-
"content": "<presentation xmlns=\"
|
|
122
|
+
"content": "<presentation xmlns=\"https://www.larkoffice.com/sml/2.0\" height=\"540\" width=\"960\">...</presentation>"
|
|
100
123
|
}
|
|
101
124
|
}
|
|
102
125
|
}
|
|
@@ -130,5 +153,5 @@ lark-cli slides xml_presentations get --as user --params '<json_params>'
|
|
|
130
153
|
## 相关命令
|
|
131
154
|
|
|
132
155
|
- [slides +create](lark-slides-create.md) - 创建空白 PPT
|
|
133
|
-
- [
|
|
134
|
-
- [
|
|
156
|
+
- [slides +add-slide](lark-slides-add-slide.md) - 添加幻灯片页面
|
|
157
|
+
- [slides +delete-slide](lark-slides-delete-slide.md) - 删除幻灯片页面
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<xs:schema
|
|
3
3
|
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
4
|
-
xmlns:sml="
|
|
5
|
-
targetNamespace="
|
|
4
|
+
xmlns:sml="https://www.larkoffice.com/sml/2.0"
|
|
5
|
+
targetNamespace="https://www.larkoffice.com/sml/2.0"
|
|
6
6
|
elementFormDefault="qualified"
|
|
7
7
|
attributeFormDefault="unqualified">
|
|
8
8
|
<xs:annotation>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
版本信息:
|
|
13
13
|
- Schema 版本: 2.0.0
|
|
14
|
-
- 命名空间:
|
|
14
|
+
- 命名空间: https://www.larkoffice.com/sml/2.0
|
|
15
15
|
- 发布日期: 2025-11-03
|
|
16
16
|
</xs:documentation>
|
|
17
17
|
</xs:annotation>
|
|
@@ -1052,7 +1052,7 @@
|
|
|
1052
1052
|
单页幻灯片结构
|
|
1053
1053
|
子元素:
|
|
1054
1054
|
- style: 页面样式(背景色等), style的fill默认颜色为白色rgba(255, 255, 255, 1)
|
|
1055
|
-
- data: 页面元素容器(shape/line/polyline/img/table/icon/chart/undefined)
|
|
1055
|
+
- data: 页面元素容器(shape/line/polyline/img/table/icon/embed/chart/undefined)
|
|
1056
1056
|
- note: 演讲者备注
|
|
1057
1057
|
</xs:documentation>
|
|
1058
1058
|
</xs:annotation>
|
|
@@ -1076,6 +1076,7 @@
|
|
|
1076
1076
|
<xs:element ref="sml:img"/>
|
|
1077
1077
|
<xs:element ref="sml:table"/>
|
|
1078
1078
|
<xs:element ref="sml:icon"/>
|
|
1079
|
+
<xs:element ref="sml:embed"/>
|
|
1079
1080
|
<xs:element ref="sml:chart"/>
|
|
1080
1081
|
<xs:element ref="sml:undefined"/>
|
|
1081
1082
|
</xs:choice>
|
|
@@ -1622,6 +1623,49 @@
|
|
|
1622
1623
|
</xs:complexType>
|
|
1623
1624
|
</xs:element>
|
|
1624
1625
|
|
|
1626
|
+
<!-- 嵌入内容元素 -->
|
|
1627
|
+
<xs:element name="embed">
|
|
1628
|
+
<xs:annotation>
|
|
1629
|
+
<xs:documentation>
|
|
1630
|
+
嵌入内容容器, 外层承载 Slides 摆放和效果属性, 内层承载外部标准内容。
|
|
1631
|
+
当前内层内容为标准 SVG, 必须使用 http://www.w3.org/2000/svg 命名空间。
|
|
1632
|
+
后续可扩展承载 HTML 等其他外部内容。
|
|
1633
|
+
|
|
1634
|
+
必需属性:
|
|
1635
|
+
- topLeftX/topLeftY: 左上角坐标
|
|
1636
|
+
- width/height: 显示尺寸
|
|
1637
|
+
|
|
1638
|
+
可选属性:
|
|
1639
|
+
- id: 唯一标识符
|
|
1640
|
+
- rotation: 旋转角度[0, 360)
|
|
1641
|
+
- flipX/flipY: 水平/垂直翻转
|
|
1642
|
+
- alpha: 不透明度[0,1]
|
|
1643
|
+
|
|
1644
|
+
子元素:
|
|
1645
|
+
- svg: 标准 SVG 根元素, 仅描述嵌入内容, 不承载 Slides 布局属性
|
|
1646
|
+
- reflection: 倒影样式, 无reflection标签代表无倒影, 空reflection标签代表使用默认样式
|
|
1647
|
+
- shadow: 阴影样式, 无shadow标签代表无阴影, 空shadow标签代表使用默认样式
|
|
1648
|
+
</xs:documentation>
|
|
1649
|
+
</xs:annotation>
|
|
1650
|
+
<xs:complexType>
|
|
1651
|
+
<xs:sequence>
|
|
1652
|
+
<xs:any namespace="http://www.w3.org/2000/svg" processContents="lax" minOccurs="1" maxOccurs="1"/>
|
|
1653
|
+
<xs:element name="reflection" type="sml:ReflectionType" minOccurs="0"/>
|
|
1654
|
+
<xs:element name="shadow" type="sml:ShadowType" minOccurs="0"/>
|
|
1655
|
+
</xs:sequence>
|
|
1656
|
+
|
|
1657
|
+
<xs:attribute name="id" type="xs:string" use="optional"/>
|
|
1658
|
+
<xs:attribute name="topLeftX" type="sml:XType" use="required"/>
|
|
1659
|
+
<xs:attribute name="topLeftY" type="sml:YType" use="required"/>
|
|
1660
|
+
<xs:attribute name="width" type="sml:PositiveSize" use="required"/>
|
|
1661
|
+
<xs:attribute name="height" type="sml:PositiveSize" use="required"/>
|
|
1662
|
+
<xs:attribute name="rotation" type="sml:RotationType" use="optional" default="0"/>
|
|
1663
|
+
<xs:attribute name="flipX" type="xs:boolean" use="optional" default="false"/>
|
|
1664
|
+
<xs:attribute name="flipY" type="xs:boolean" use="optional" default="false"/>
|
|
1665
|
+
<xs:attribute name="alpha" type="sml:AlphaType" use="optional" default="1"/>
|
|
1666
|
+
</xs:complexType>
|
|
1667
|
+
</xs:element>
|
|
1668
|
+
|
|
1625
1669
|
<!-- 表格元素 -->
|
|
1626
1670
|
<xs:element name="table">
|
|
1627
1671
|
<xs:annotation>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Troubleshooting
|
|
2
2
|
|
|
3
|
-
本文件覆盖 lark-slides 的通用创建前自检、XML 排障和常见失败处理。命令专属问题优先看对应 reference,例如 `+replace-slide`、`+media-upload
|
|
3
|
+
本文件覆盖 lark-slides 的通用创建前自检、XML 排障和常见失败处理。命令专属问题优先看对应 reference,例如 `+replace-slide`、`+media-upload`。
|
|
4
4
|
|
|
5
5
|
## XML Preflight
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- 特殊字符已转义:正文和标题里的 `&`、`<`、`>` 不能裸写;属性值里的裸 `&` 也必须写成 `&`。
|
|
10
10
|
- 属性引号安全:XML 属性、shell 引号、JSON 字符串包装之间没有互相打断。
|
|
11
11
|
- 结构合法:`<slide>` 下只放 `<style>`、`<data>`、`<note>`,文本都在 `<content>` 内。
|
|
12
|
-
- 图片路径正确:`<img src="@...">`
|
|
12
|
+
- 图片路径正确:`<img src="@...">` 占位符由 `+create` 和 `+add-slide` 处理。
|
|
13
13
|
|
|
14
14
|
## Failure Order
|
|
15
15
|
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
3. 检查失败页是否含未转义字符:`Q&A -> Q&A`,文本 `<` / `>` 写成 `<` / `>`,属性 URL `a=1&b=2 -> a=1&b=2`。
|
|
21
21
|
4. 检查标签闭合、属性引号、`<content>` 结构,以及 `<slide>` 直接子元素。
|
|
22
22
|
5. 页面空白、溢出、重叠或越界时,按 [validation-checklist.md](validation-checklist.md) 运行 `xml_text_overlap_lint.py`;先修复所有 `error`,再对 `warning` 指向的页面和元素做截图复核。
|
|
23
|
-
6. 如果使用 `--slides '[...]'
|
|
24
|
-
7. 局部问题用 `+replace-slide`
|
|
23
|
+
6. 如果使用 `--slides '[...]'` 字面量,怀疑 shell 转义或截断时改用文件输入:`+create --slide @page-01.xml --slide @page-02.xml`。
|
|
24
|
+
7. 局部问题用 `+replace-slide` 块级修正;整页结构要改时用 `+delete-slide` 删旧页 + `+add-slide` 建新页。
|
|
25
25
|
|
|
26
26
|
## Symptom Fixes
|
|
27
27
|
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
| 表格列宽不合理 | 调整 `colgroup` 中 `col` 的 `width` 值 |
|
|
35
35
|
| 图表没有显示 | 检查 `chartPlotArea` 和 `chartData` 是否都包含,`dim1` / `dim2` 数据数量是否匹配 |
|
|
36
36
|
| 图片被裁掉一部分 | `<img>` 的 `width` / `height` 是裁剪后尺寸;要整图显示就让 `width:height` 对齐原图比例 |
|
|
37
|
-
| 图片不显示 / `<img src>` 仍是 `@path` | `@`
|
|
37
|
+
| 图片不显示 / `<img src>` 仍是 `@path` | `@` 占位符由 `+create` 和 `+add-slide` 替换 |
|
|
38
38
|
| 新插入的 `<img>` 挡住原有元素 | `slide.get` 读原页,对照已有块坐标挑空白位置;空间不够就在同一批 `--parts` 里先移动/缩小现有块再插图 |
|
|
39
39
|
| 渐变背景变成白色 | 渐变必须用 `rgba()` 格式 + 百分比停靠点,如 `linear-gradient(135deg,rgba(30,60,114,1) 0%,rgba(59,130,246,1) 100%)` |
|
|
40
40
|
| 整体风格不统一 | 封面页和结尾页用同一背景,内容页保持一致的配色和字号体系 |
|
|
@@ -45,11 +45,10 @@
|
|
|
45
45
|
|--------------|------|----------|
|
|
46
46
|
| 400 XML 格式错误 | XML 语法错误 | 检查标签闭合、属性引号、特殊字符转义 |
|
|
47
47
|
| 400 请求包装错误 | `--data` 未按 schema 包装 | 检查是否传入 `xml_presentation.content` 或 `slide.content` |
|
|
48
|
-
| 创建成功但页面空白 / 内容缺失 / 布局错乱 | 常见于 `--slides '[...]'`
|
|
48
|
+
| 创建成功但页面空白 / 内容缺失 / 布局错乱 | 常见于 `--slides '[...]'` 字面量的 shell 转义或长参数传递问题 | 改用 `--slide @file`(每页一个文件)或 `--slides @deck.json`,并在创建后立即读取 XML 验证 |
|
|
49
49
|
| 403 权限不足 | scope 或文档权限不匹配 | 确认 scope 和文档权限;无权限时根据错误响应引导用户解决 |
|
|
50
50
|
| 404 演示文稿不存在 | `xml_presentation_id` 不正确或无权限 | 检查 token;wiki URL 需先解析真实 `obj_token` |
|
|
51
51
|
| 404 幻灯片不存在 | `slide_id` 不正确 | 重新读取 presentation 或 slide,确认最新 ID |
|
|
52
|
-
| 400 无法删除唯一幻灯片 | 演示文稿至少保留一页 | 先创建新页,再删除旧页 |
|
|
53
52
|
| 1061002 媒体上传 params error | slides 媒体上传参数不符合约定 | 用 `slides +media-upload`,不要手拼原生 `medias/upload_all`;slides 唯一可用 `parent_type` 是 `slide_file` |
|
|
54
53
|
| 1061004 forbidden | 当前用户对演示文稿无编辑权限 | 确认当前用户对目标 PPT 有编辑权限 |
|
|
55
54
|
| 3350001 | XML 非 well-formed、XML 结构不符合服务端要求,或 replace 片段问题 | 优先检查未转义字符;replace 场景再看 `block_id` 和 `<content/>` |
|
|
@@ -60,4 +59,4 @@
|
|
|
60
59
|
|
|
61
60
|
- 图片上传、`@path` 占位符、`file_token`:见 [lark-slides-media-upload.md](lark-slides-media-upload.md) 和 [lark-slides-create.md](lark-slides-create.md)。
|
|
62
61
|
- 块级替换、`block_id`、3350001 replace 细节:见 [lark-slides-replace-slide.md](lark-slides-replace-slide.md)。
|
|
63
|
-
-
|
|
62
|
+
- 追加/插入单页、`--before-slide-id` 和 `--slide @file` 绕开转义:见 [lark-slides-add-slide.md](lark-slides-add-slide.md)。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Validation Checklist
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
创建、大幅改写演示文稿或每次通过 `slides +update-slide` 整页写回后,必须做一次显式验证。目标是发现空白页、XML 损坏、内容截断、明显溢出、弱视觉层级和未验证输出。
|
|
4
4
|
|
|
5
5
|
小型已有页编辑也要做对应范围的验证:至少读取被改页面或全文 XML,确认目标元素已更新且未破坏周边结构。
|
|
6
6
|
|
|
@@ -47,7 +47,7 @@ python3 "<lark-slides-skill-dir>/scripts/xml_text_overlap_lint.py" --input <pres
|
|
|
47
47
|
- `element_ids`:相关 XML 元素 ID;
|
|
48
48
|
- `rule`:规则 ID、名称、阈值和比较关系;
|
|
49
49
|
- `measurement`:越界量、交叠面积、覆盖率等实测值;
|
|
50
|
-
- `related_objects
|
|
50
|
+
- `related_objects`:相关对象的类型、坐标框,以及指向当前输入 XML 节点的 XPath-like `xml_path`;
|
|
51
51
|
- `target`、`message`、`hint`:页码、语义说明和处理建议。
|
|
52
52
|
|
|
53
53
|
当 `sparse_container_content.measurement.content_coverage_ratio < rule.threshold` 时,需要结合同页截图判断留白是否有意设计;不要仅凭 warning 自动扩充内容。
|
|
@@ -57,7 +57,7 @@ python3 "<lark-slides-skill-dir>/scripts/xml_text_overlap_lint.py" --input <pres
|
|
|
57
57
|
| code | 含义 | 处理方式 |
|
|
58
58
|
|------|------|----------|
|
|
59
59
|
| `xml_not_well_formed` | XML 语法错误或文本未转义 | 修复标签闭合、属性引号、`&` / `<` / `>` 转义 |
|
|
60
|
-
| `sml_prefixed_tag` | SML 元素使用了命名空间前缀,如 `<ns0:slide>` 或 `<sml:shape>` | 使用 `<slide xmlns="
|
|
60
|
+
| `sml_prefixed_tag` | SML 元素使用了命名空间前缀,如 `<ns0:slide>` 或 `<sml:shape>` | 使用 `<slide xmlns="https://www.larkoffice.com/sml/2.0">` 的默认命名空间,或使用无前缀标签 |
|
|
61
61
|
| `sxsd_unsupported_tag` | 使用了 SXSD 不支持的标签 | 按 lint `hint` 替换为受支持标签;常见如 `textbox -> <shape type="text">`、`image -> <img>` |
|
|
62
62
|
| `sxsd_unsupported_attr` | 支持的标签上使用了不支持的属性 | 按 lint `hint` 改为支持的属性;常见如 `x -> topLeftX`、`fontColor -> color` |
|
|
63
63
|
| `iconpark_unsupported_icon_type` | `<icon>` 使用了 `iconpark-index.json` 中不存在的 `iconType` | 按 lint `hint` 改为名单内的 `iconType`,或先用 `scripts/iconpark_tool.py` 搜索 |
|
|
@@ -66,7 +66,7 @@ python3 "<lark-slides-skill-dir>/scripts/xml_text_overlap_lint.py" --input <pres
|
|
|
66
66
|
| `bbox_overlap` | 文本元素的估算绘制区域明显重叠 | 拉开文本坐标、缩小文本框/字号,或改成明确的分栏/分组结构 |
|
|
67
67
|
| `*_out_of_canvas` | 元素边界超出页面画布 | 根据 `measurement.overflow` 移回画布或缩小尺寸 |
|
|
68
68
|
| `blank_slide` | 页面没有画布内可见内容 | 补充主体内容;仅有空背景或空形状不能准出 |
|
|
69
|
-
| `sparse_container_content` | 大卡片内容覆盖率低于阈值 |
|
|
69
|
+
| `sparse_container_content` | 大卡片内容覆盖率低于阈值 | 按 `related_objects[].xml_path` 定位卡片;`element_id` 存在且唯一时也可按 ID 定位,再结合截图判断是否补充或放大内容 |
|
|
70
70
|
| `sparse_slide_content` | 全页有效内容覆盖率偏低 | 复核截图,确认是否为有意留白 |
|
|
71
71
|
|
|
72
72
|
## Screenshot QA
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## 最重要的规则
|
|
6
6
|
|
|
7
|
-
1. 协议标准写法应使用 `<presentation xmlns="
|
|
7
|
+
1. 协议标准写法应使用 `<presentation xmlns="https://www.larkoffice.com/sml/2.0">`;当前服务端实现可能兼容不带 `xmlns` 的输入,但不作为协议保证
|
|
8
8
|
2. `<presentation>` 直接子元素只有 `<title>`、`<theme>`、`<slide>`
|
|
9
9
|
3. `<slide>` 直接子元素只有 `<style>`、`<data>`、`<note>`
|
|
10
10
|
4. 页面中的文本通常通过 `<content>` 表达,而不是把 `<title>`、`<body>` 直接挂在 `<slide>` 下
|
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
## 最小可用示例
|
|
13
13
|
|
|
14
14
|
```xml
|
|
15
|
-
|
|
16
|
-
<presentation xmlns="http://www.larkoffice.com/sml/2.0" width="960" height="540">
|
|
15
|
+
<presentation xmlns="https://www.larkoffice.com/sml/2.0" width="960" height="540">
|
|
17
16
|
<slide>
|
|
18
17
|
<data>
|
|
19
18
|
<shape type="text" topLeftX="80" topLeftY="80" width="800" height="120">
|
|
@@ -81,7 +80,7 @@ XSD 中的 `title`、`headline`、`sub-headline`、`body`、`caption` 主要出
|
|
|
81
80
|
**子元素:**
|
|
82
81
|
|
|
83
82
|
- `<style>?` - 页面样式,目前可放 `<fill>`
|
|
84
|
-
- `<data>?` - 页面元素容器,可放 `shape`、`line`、`polyline`、`img`、`table`、`icon`、`chart`、`undefined`
|
|
83
|
+
- `<data>?` - 页面元素容器,可放 `shape`、`line`、`polyline`、`img`、`table`、`icon`、`embed`、`chart`、`undefined`
|
|
85
84
|
- `<note>?` - 演讲者备注,内部可放 `<content>`
|
|
86
85
|
|
|
87
86
|
这意味着 `<title>`、`<headline>`、`<body>`、`<caption>` 不能直接放在 `<slide>` 下。
|
|
@@ -227,17 +226,17 @@ XSD 中的 `title`、`headline`、`sub-headline`、`body`、`caption` 主要出
|
|
|
227
226
|
### img
|
|
228
227
|
|
|
229
228
|
```xml
|
|
230
|
-
<img src="
|
|
229
|
+
<img src="file_token_或_@本地路径" topLeftX="80" topLeftY="120" width="320" height="180"/>
|
|
231
230
|
```
|
|
232
231
|
|
|
233
232
|
`img` 使用 `topLeftX` / `topLeftY`,不是 `x` / `y`。
|
|
234
233
|
|
|
235
|
-
`src` 只支持:`slides +media-upload` 返回的 `file_token`,或 `@<本地路径>`
|
|
234
|
+
`src` 只支持:`slides +media-upload` 返回的 `file_token`,或 `@<本地路径>` 占位符(`+create --slides` 和 `+add-slide` 会自动上传并替换)。**禁止使用 http(s) 外链 URL**——飞书 slides 渲染端不会代理外链图,外链 src 在 PPT 里通常不显示。本地图片详见 [lark-slides-create.md](lark-slides-create.md#本地图片path-占位符) / [lark-slides-media-upload.md](lark-slides-media-upload.md)。
|
|
236
235
|
|
|
237
236
|
本地图片的两种姿势:
|
|
238
237
|
|
|
239
238
|
- 新建带图 PPT:`+create --slides` 里直接写 `src="@./pic.png"`,CLI 在创空白 PPT 后、加 slides 前自动上传并替换 token
|
|
240
|
-
- 给已有 PPT
|
|
239
|
+
- 给已有 PPT 加带图新页:`+add-slide --slide` 的 XML 里直接写 `src="@./pic.png"`,CLI 上传后替换 token 再提交页面
|
|
241
240
|
|
|
242
241
|
> **注意**:`width`/`height` 是**裁剪后**的显示尺寸。比例和原图不一致时会自动裁剪(无法靠属性关闭),想避免裁剪就让 `width:height` 对齐原图比例。
|
|
243
242
|
|
|
@@ -355,6 +354,20 @@ XSD 中的 `title`、`headline`、`sub-headline`、`body`、`caption` 主要出
|
|
|
355
354
|
|
|
356
355
|
详细用法见 [slides_xml_schema_definition.xml](slides_xml_schema_definition.xml)。
|
|
357
356
|
|
|
357
|
+
### embed
|
|
358
|
+
|
|
359
|
+
嵌入内容容器:外层 `<embed>` 承载 Slides 的摆放和效果属性(`topLeftX`/`topLeftY`/`width`/`height` 必填,`rotation`/`flipX`/`flipY`/`alpha` 可选),内层承载外部标准内容。当前内层内容为标准 SVG,`<svg>` 必须使用 `http://www.w3.org/2000/svg` 命名空间,且仅描述嵌入内容本身,不承载 Slides 布局属性。
|
|
360
|
+
|
|
361
|
+
```xml
|
|
362
|
+
<embed topLeftX="80" topLeftY="120" width="200" height="120">
|
|
363
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 120">
|
|
364
|
+
<circle cx="100" cy="60" r="40" fill="rgba(37, 99, 235, 1)"/>
|
|
365
|
+
</svg>
|
|
366
|
+
</embed>
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
`<embed>` 直接子元素为一个 `<svg>`(必需),以及可选的 `<reflection>`(倒影)与 `<shadow>`(阴影)。
|
|
370
|
+
|
|
358
371
|
## 颜色与样式
|
|
359
372
|
|
|
360
373
|
### fill
|
|
@@ -417,8 +430,7 @@ XSD 中的 `title`、`headline`、`sub-headline`、`body`、`caption` 主要出
|
|
|
417
430
|
## 完整示例
|
|
418
431
|
|
|
419
432
|
```xml
|
|
420
|
-
|
|
421
|
-
<presentation xmlns="http://www.larkoffice.com/sml/2.0" width="960" height="540">
|
|
433
|
+
<presentation xmlns="https://www.larkoffice.com/sml/2.0" width="960" height="540">
|
|
422
434
|
<title>季度报告</title>
|
|
423
435
|
<theme>
|
|
424
436
|
<textStyles>
|
|
@@ -466,7 +478,7 @@ XSD 中的 `title`、`headline`、`sub-headline`、`body`、`caption` 主要出
|
|
|
466
478
|
|
|
467
479
|
## 最佳实践
|
|
468
480
|
|
|
469
|
-
1. 始终带上命名空间 `xmlns="
|
|
481
|
+
1. 始终带上命名空间 `xmlns="https://www.larkoffice.com/sml/2.0"`
|
|
470
482
|
2. 用 `shape type="text"` + `content` 表达页面文本
|
|
471
483
|
3. 用 `topLeftX` / `topLeftY`、`startX` / `startY` 等 schema 中定义的属性名
|
|
472
484
|
4. 优先使用 `rgb` / `rgba` 颜色格式;渐变必须使用 `rgba()` 且带百分比停靠点
|
|
@@ -481,5 +493,5 @@ XSD 中的 `title`、`headline`、`sub-headline`、`body`、`caption` 主要出
|
|
|
481
493
|
## Schema 版本信息
|
|
482
494
|
|
|
483
495
|
- **版本**: 2.0.0
|
|
484
|
-
- **命名空间**:
|
|
496
|
+
- **命名空间**: https://www.larkoffice.com/sml/2.0
|
|
485
497
|
- **发布日期**: 2025-11-03
|