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。
成功/失败语义
返回形态 |
成功含义 |
失败或无变化含义 |
bool
|
true 表示当前段落或 run 的 XML 节点已修改。
|
false 表示当前节点缺失、不支持,或没有发生变化。
|
std::optional<T>
|
包含请求的格式、布局、语言或方向值。 |
空值表示该属性未显式设置或无法解析。 |
Paragraph / Run
|
返回句柄指向插入或追加的段落/run 节点。 |
后续格式设置应使用该返回句柄。 |
迭代器引用 |
Paragraph & 和 Run & 表示当前迭代位置。
|
遍历已有内容时,推进前先调用 has_next()。 |
短示例
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 节点是否成功修改。
签名 |
参数 |
返回语义 |
bool set_text(const std::string &text) const
|
text:替换后的段落或 run 文本。
|
当前节点成功重写时返回 true。 |
Run add_run(const std::string &text, formatting_flag formatting = formatting_flag::none)
|
text:追加文本。formatting:可选基础格式标记。
|
返回追加后的新 Run 句柄。 |
Paragraph insert_paragraph_before(const std::string &text, formatting_flag formatting = formatting_flag::none)
|
text:插入段落文本。formatting:可选首个 run 格式。
|
返回插入在当前段落前的新段落句柄。 |
Paragraph insert_paragraph_after(const std::string &text, formatting_flag formatting = formatting_flag::none)
|
text:插入段落文本。formatting:可选首个 run 格式。
|
返回插入在当前段落后的新段落句柄。 |
bool set_alignment(paragraph_alignment alignment) const
|
alignment:文档中列出的段落对齐枚举值。
|
段落属性成功更新时返回 true。 |
bool set_indent_left_twips(std::uint32_t indent_twips) const
|
indent_twips:左缩进,单位是 twips。
|
段落缩进成功更新时返回 true。 |
Run insert_run_before(const std::string &text, formatting_flag formatting = formatting_flag::none)
|
text:插入 run 文本。formatting:可选基础格式标记。
|
返回插入在当前 run 前的新 Run 句柄。 |
Run insert_run_after(const std::string &text, formatting_flag formatting = formatting_flag::none)
|
text:插入 run 文本。formatting:可选基础格式标记。
|
返回插入在当前 run 后的新 Run 句柄。 |
bool set_font_family(std::string_view font_family) const
|
font_family:主要西文字体名称。
|
run 属性成功更新时返回 true。 |
bool set_language(std::string_view language) const
|
language:类似 zh-CN 或 en-US 的语言标签。
|
语言元数据成功更新时返回 true。 |
bool set_rtl(bool enabled = true) const
|
enabled:为 true 时标记 run 为从右到左。
|
run 方向元数据成功更新时返回 true。 |
段落文本与迭代
方法 |
返回值 |
用途 |
next()
|
Paragraph &
|
将段落迭代器推进到下一个段落。 |
has_next() const
|
bool
|
检查段落迭代器是否还能继续推进。 |
set_text(const std::string &text) const
|
bool
|
替换当前段落的全部文本。 |
remove()
|
bool
|
删除当前段落。 |
runs()
|
Run &
|
访问当前段落中的 run 迭代器。 |
add_run(text, formatting_flag formatting = none)
|
Run
|
在段落末尾追加一个 run,并可附带基础格式。 |
insert_paragraph_before(text, formatting)
|
Paragraph
|
在当前段落前插入新段落。 |
insert_paragraph_after(text, formatting)
|
Paragraph
|
在当前段落后插入新段落。 |
insert_paragraph_like_before()
|
Paragraph
|
在当前段落前插入段落,并复制段落属性。 |
insert_paragraph_like_after()
|
Paragraph
|
在当前段落后插入段落,并复制段落属性。 |
段落布局
方法 |
返回值 |
用途 |
bidi() const
|
std::optional<bool>
|
读取段落的从右到左布局元数据。 |
set_bidi(bool enabled = true) const
|
bool
|
启用或关闭段落从右到左布局。 |
clear_bidi() const
|
bool
|
清除显式段落双向布局设置。 |
alignment() const
|
std::optional<paragraph_alignment>
|
读取段落对齐方式。 |
set_alignment(paragraph_alignment alignment) const
|
bool
|
设置段落对齐方式。 |
clear_alignment() const
|
bool
|
清除显式段落对齐方式。 |
indent_left_twips() const / indent_right_twips() const
|
std::optional<std::uint32_t>
|
读取左右缩进,单位是 twips。 |
first_line_indent_twips() const / hanging_indent_twips() const
|
std::optional<std::uint32_t>
|
读取首行缩进或悬挂缩进。 |
set_indent_left_twips(indent_twips) const
|
bool
|
设置左缩进。 |
set_indent_right_twips(indent_twips) const
|
bool
|
设置右缩进。 |
set_first_line_indent_twips(indent_twips) const
|
bool
|
设置首行缩进。 |
set_hanging_indent_twips(indent_twips) const
|
bool
|
设置悬挂缩进。 |
Run 文本与样式
方法 |
返回值 |
用途 |
get_text() const
|
std::string
|
读取当前 run 的文本。 |
set_text(const std::string &text) const
|
bool
|
替换当前 run 的文本。 |
remove()
|
bool
|
删除当前 run。 |
insert_run_before(text, formatting)
|
Run
|
在当前 run 前插入新 run。 |
insert_run_after(text, formatting)
|
Run
|
在当前 run 后插入新 run。 |
insert_run_like_before()
|
Run
|
在当前 run 前插入 run,并复制 run 属性。 |
insert_run_like_after()
|
Run
|
在当前 run 后插入 run,并复制 run 属性。 |
style_id() const
|
std::optional<std::string>
|
读取 run 样式 ID。 |
font_family() const
|
std::optional<std::string>
|
读取主要字体。 |
set_font_family(font_family) const
|
bool
|
设置主要字体。 |
text_color() const
|
std::optional<std::string>
|
读取文本颜色。 |
bold() const / italic() const / underline() const
|
std::optional<bool>
|
读取基础文字样式。 |
strikethrough() const
|
std::optional<bool>
|
读取删除线样式。 |
superscript() const / subscript() const
|
std::optional<bool>
|
读取上标或下标样式。 |
font_size_points() const
|
std::optional<double>
|
读取字号,单位是 point。 |
Run 语言与方向
方法 |
返回值 |
用途 |
language() const
|
std::optional<std::string>
|
读取主要语言元数据。 |
east_asia_language() const
|
std::optional<std::string>
|
读取东亚语言元数据。 |
bidi_language() const
|
std::optional<std::string>
|
读取双向文本语言元数据。 |
set_language(language) const
|
bool
|
设置主要语言元数据。 |
set_east_asia_language(language) const
|
bool
|
设置东亚语言元数据。 |
set_bidi_language(language) const
|
bool
|
设置双向文本语言元数据。 |
rtl() const
|
std::optional<bool>
|
读取 run 的从右到左方向元数据。 |
set_rtl(bool enabled = true) const
|
bool
|
启用或关闭 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");
}