Paragraph 和 Run¶
featherdoc::Paragraph 是 Word 段落的编辑句柄。
featherdoc::Run 是段落内部文本片段的编辑句柄,用于处理 run 级格式、
语言和文字方向元数据。
常用任务入口¶
编辑文本 run 或段落布局时,可以从这里开始:
替换整个段落:调用
Paragraph::set_text(...)。在段落里追加带样式文本:调用
add_run(...),再设置 run 字体、颜色、 语言或文字方向元数据。插入相邻内容:使用
insert_paragraph_before(...)、insert_paragraph_after(...)、insert_run_before(...)或insert_run_after(...)。保留附近格式:先使用
insert_*_like_*辅助方法,再改文本。调整版式:使用段落对齐、双向布局和缩进 API。
成功/失败语义¶
返回形态 |
成功含义 |
失败或无变化含义 |
|---|---|---|
|
|
|
|
包含请求的格式、布局、语言或方向值。 |
空值表示该属性未显式设置或无法解析。 |
|
返回句柄指向插入或追加的段落/run 节点。 |
后续格式设置应使用该返回句柄。 |
迭代器引用 |
|
遍历已有内容时,推进前先调用 |
短示例¶
auto paragraph = doc.body_template().append_paragraph("Status:");
auto value = paragraph.add_run(" approved", featherdoc::formatting_flag::bold);
value.set_font_family("Aptos");
paragraph.set_alignment(featherdoc::paragraph_alignment::center);
类型化签名导读¶
写代码前可以先看这一组完整签名。涉及索引的 API 都使用从 0 开始的索引。
返回 bool 的方法表示底层 XML 节点是否成功修改。
签名 |
参数 |
返回语义 |
|---|---|---|
|
|
当前节点成功重写时返回 |
|
|
返回追加后的新 |
|
|
返回插入在当前段落前的新段落句柄。 |
|
|
返回插入在当前段落后的新段落句柄。 |
|
|
段落属性成功更新时返回 |
|
|
段落缩进成功更新时返回 |
|
|
返回插入在当前 run 前的新 |
|
|
返回插入在当前 run 后的新 |
|
|
run 属性成功更新时返回 |
|
|
语言元数据成功更新时返回 |
|
|
run 方向元数据成功更新时返回 |
段落文本与迭代¶
方法 |
返回值 |
用途 |
|---|---|---|
|
|
将段落迭代器推进到下一个段落。 |
|
|
检查段落迭代器是否还能继续推进。 |
|
|
替换当前段落的全部文本。 |
|
|
删除当前段落。 |
|
|
访问当前段落中的 run 迭代器。 |
|
|
在段落末尾追加一个 run,并可附带基础格式。 |
|
|
在当前段落前插入新段落。 |
|
|
在当前段落后插入新段落。 |
|
|
在当前段落前插入段落,并复制段落属性。 |
|
|
在当前段落后插入段落,并复制段落属性。 |
段落布局¶
方法 |
返回值 |
用途 |
|---|---|---|
|
|
读取段落的从右到左布局元数据。 |
|
|
启用或关闭段落从右到左布局。 |
|
|
清除显式段落双向布局设置。 |
|
|
读取段落对齐方式。 |
|
|
设置段落对齐方式。 |
|
|
清除显式段落对齐方式。 |
|
|
读取左右缩进,单位是 twips。 |
|
|
读取首行缩进或悬挂缩进。 |
|
|
设置左缩进。 |
|
|
设置右缩进。 |
|
|
设置首行缩进。 |
|
|
设置悬挂缩进。 |
Run 文本与样式¶
方法 |
返回值 |
用途 |
|---|---|---|
|
|
读取当前 run 的文本。 |
|
|
替换当前 run 的文本。 |
|
|
删除当前 run。 |
|
|
在当前 run 前插入新 run。 |
|
|
在当前 run 后插入新 run。 |
|
|
在当前 run 前插入 run,并复制 run 属性。 |
|
|
在当前 run 后插入 run,并复制 run 属性。 |
|
|
读取 run 样式 ID。 |
|
|
读取主要字体。 |
|
|
设置主要字体。 |
|
|
读取文本颜色。 |
|
|
读取基础文字样式。 |
|
|
读取删除线样式。 |
|
|
读取上标或下标样式。 |
|
|
读取字号,单位是 point。 |
底层 w:sz 按 1..UINT32_MAX 范围内的严格无符号 half-point 文本解析。
空值、符号、尾随字符、零和越界值都会返回空 optional,不再接受部分合法前缀。
文本修改事务与句柄¶
Paragraph::set_text(...)、Run::set_text(...)、add_run(...)、相邻
段落/run 插入,以及 insert_*_like_* 都先构建完整的未发布 XML。节点名、属性名、
属性值、文本、换行和格式复制中的任一分配失败都会返回 false 或空句柄,不留下
空段落、空 run 或不完整格式;原 XML 和已有句柄保持不变。中文、emoji、前后空白及
CR/LF/CRLF 文本均按 UTF-8 处理。
成功执行 Paragraph::set_text(...) 后,原 Paragraph 句柄仍有效,但被替换的
旧 Run 及其后代句柄失效;应从该段落重新获取 run。成功执行
Run::set_text(...) 后,原 Run 句柄仍有效。插入和追加成功只新增返回句柄所指向
的子树,不会使未删除的兄弟句柄失效。
Run 语言与方向¶
方法 |
返回值 |
用途 |
|---|---|---|
|
|
读取主要语言元数据。 |
|
|
读取东亚语言元数据。 |
|
|
读取双向文本语言元数据。 |
|
|
设置主要语言元数据。 |
|
|
设置东亚语言元数据。 |
|
|
设置双向文本语言元数据。 |
|
|
读取 run 的从右到左方向元数据。 |
|
|
启用或关闭 run 的从右到左方向元数据。 |
示例¶
auto paragraph = doc.body_template().append_paragraph("Title");
paragraph.set_alignment(featherdoc::paragraph_alignment::center);
auto emphasized = paragraph.add_run(
" approved",
featherdoc::formatting_flag::bold);
emphasized.set_language("en-US");
auto &run = paragraph.runs();
if (run.has_next()) {
run.next().set_font_family("Aptos");
}