Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 105 additions & 0 deletions pkg/document/document.go
Original file line number Diff line number Diff line change
Expand Up @@ -883,6 +883,11 @@ func (p *Paragraph) SetAlignment(alignment AlignmentType) {
Debugf("设置段落对齐方式: %s", alignment)
}

func (p *Paragraph) WithAlignment(alignment AlignmentType) *Paragraph {
p.SetAlignment(alignment)
return p
}

// SetSpacing 设置段落的间距配置。
//
// 参数 config 包含各种间距设置,如果为 nil 则不进行任何设置。
Expand Down Expand Up @@ -949,6 +954,11 @@ func (p *Paragraph) SetSpacing(config *SpacingConfig) {
}
}

func (p *Paragraph) WithSpacing(config *SpacingConfig) *Paragraph {
p.SetSpacing(config)
return p
}

// AddFormattedText 向段落添加格式化的文本内容。
//
// 此方法允许在一个段落中混合使用不同格式的文本。
Expand Down Expand Up @@ -1262,6 +1272,11 @@ func (p *Paragraph) SetStyle(styleID string) {
Debugf("设置段落样式: %s", styleID)
}

func (p *Paragraph) WithStyle(styleID string) *Paragraph {
p.SetStyle(styleID)
return p
}

// SetIndentation 设置段落的缩进属性。
//
// 参数:
Expand Down Expand Up @@ -1299,6 +1314,11 @@ func (p *Paragraph) SetIndentation(firstLineCm, leftCm, rightCm float64) {
Debugf("设置段落缩进: 首行=%.2fcm, 左=%.2fcm, 右=%.2fcm", firstLineCm, leftCm, rightCm)
}

func (p *Paragraph) WithIndentation(firstLineCm, leftCm, rightCm float64) *Paragraph {
p.SetIndentation(firstLineCm, leftCm, rightCm)
return p
}

// SetKeepWithNext 设置段落与下一段落保持在同一页。
//
// 此方法用于确保当前段落和下一段落不会被分页符分隔,
Expand Down Expand Up @@ -1327,6 +1347,11 @@ func (p *Paragraph) SetKeepWithNext(keep bool) {
}
}

func (p *Paragraph) WithKeepWithNext(keep bool) *Paragraph {
p.SetKeepWithNext(keep)
return p
}

// SetKeepLines 设置段落中的所有行保持在同一页。
//
// 此方法用于防止段落在分页时被拆分到多个页面,
Expand Down Expand Up @@ -1354,6 +1379,11 @@ func (p *Paragraph) SetKeepLines(keep bool) {
}
}

func (p *Paragraph) WithKeepLines(keep bool) *Paragraph {
p.SetKeepLines(keep)
return p
}

// SetPageBreakBefore 设置段落前插入分页符。
//
// 此方法用于在段落之前强制插入分页符,使段落从新页开始显示。
Expand Down Expand Up @@ -1381,6 +1411,11 @@ func (p *Paragraph) SetPageBreakBefore(pageBreak bool) {
}
}

func (p *Paragraph) WithPageBreakBefore(pageBreak bool) *Paragraph {
p.SetPageBreakBefore(pageBreak)
return p
}

// SetWidowControl 设置段落的孤行控制。
//
// 孤行控制用于防止段落的第一行或最后一行单独出现在页面底部或顶部,
Expand All @@ -1407,6 +1442,11 @@ func (p *Paragraph) SetWidowControl(control bool) {
}
}

func (p *Paragraph) WithWidowControl(control bool) *Paragraph {
p.SetWidowControl(control)
return p
}

// SetOutlineLevel 设置段落的大纲级别。
//
// 大纲级别用于在文档导航窗格中显示文档结构,级别范围为0-8。
Expand Down Expand Up @@ -1442,6 +1482,11 @@ func (p *Paragraph) SetOutlineLevel(level int) {
Debugf("设置段落大纲级别: %d", level)
}

func (p *Paragraph) WithOutlineLevel(level int) *Paragraph {
p.SetOutlineLevel(level)
return p
}

// SetSnapToGrid 设置段落的网格对齐属性。
//
// 网格对齐控制段落的行是否对齐到文档的网格。当文档启用了网格设置时
Expand Down Expand Up @@ -1475,6 +1520,11 @@ func (p *Paragraph) SetSnapToGrid(snapToGrid bool) {
}
}

func (p *Paragraph) WithSnapToGrid(snapToGrid bool) *Paragraph {
p.SetSnapToGrid(snapToGrid)
return p
}

// ParagraphFormatConfig 段落格式配置
//
// 此结构体提供了段落所有格式属性的统一配置接口,
Expand Down Expand Up @@ -1589,6 +1639,11 @@ func (p *Paragraph) SetParagraphFormat(config *ParagraphFormatConfig) {
config.Alignment, config.Style, config.LineSpacing, config.BeforePara, config.AfterPara)
}

func (p *Paragraph) WithParagraphFormat(config *ParagraphFormatConfig) *Paragraph {
p.SetParagraphFormat(config)
return p
}

// ParagraphBorderConfig 段落边框配置(区别于表格边框配置)
type ParagraphBorderConfig struct {
Style BorderStyle // 边框样式
Expand Down Expand Up @@ -1696,6 +1751,11 @@ func (p *Paragraph) SetBorder(top, left, bottom, right *ParagraphBorderConfig) {
Debugf("设置段落边框: 上=%v, 左=%v, 下=%v, 右=%v", top != nil, left != nil, bottom != nil, right != nil)
}

func (p *Paragraph) WithBorder(top, left, bottom, right *ParagraphBorderConfig) *Paragraph {
p.SetBorder(top, left, bottom, right)
return p
}

// SetHorizontalRule 设置水平分割线。
//
// 此方法是SetBorder的简化版本,专门用于快速创建Markdown风格的分割线效果。
Expand Down Expand Up @@ -1728,6 +1788,11 @@ func (p *Paragraph) SetHorizontalRule(style BorderStyle, size int, color string)
Debugf("设置水平分割线: 样式=%s, 粗细=%d, 颜色=%s", style, size, color)
}

func (p *Paragraph) WithHorizontalRule(style BorderStyle, size int, color string) *Paragraph {
p.SetHorizontalRule(style, size, color)
return p
}

// SetUnderline 设置段落中所有文本的下划线效果。
//
// 参数 underline 表示是否启用下划线。
Expand All @@ -1752,6 +1817,11 @@ func (p *Paragraph) SetUnderline(underline bool) {
Debugf("设置段落下划线: %v", underline)
}

func (p *Paragraph) WithUnderline(underline bool) *Paragraph {
p.SetUnderline(underline)
return p
}

// SetBold 设置段落中所有文本的粗体效果。
//
// 参数 bold 表示是否启用粗体。
Expand All @@ -1778,6 +1848,11 @@ func (p *Paragraph) SetBold(bold bool) {
Debugf("设置段落粗体: %v", bold)
}

func (p *Paragraph) WithBold(bold bool) *Paragraph {
p.SetBold(bold)
return p
}

// SetItalic 设置段落中所有文本的斜体效果。
//
// 参数 italic 表示是否启用斜体。
Expand All @@ -1804,6 +1879,11 @@ func (p *Paragraph) SetItalic(italic bool) {
Debugf("设置段落斜体: %v", italic)
}

func (p *Paragraph) WithItalic(italic bool) *Paragraph {
p.SetItalic(italic)
return p
}

// SetStrike 设置段落中所有文本的删除线效果。
//
// 参数 strike 表示是否启用删除线。
Expand All @@ -1828,6 +1908,11 @@ func (p *Paragraph) SetStrike(strike bool) {
Debugf("设置段落删除线: %v", strike)
}

func (p *Paragraph) WithStrike(strike bool) *Paragraph {
p.SetStrike(strike)
return p
}

// SetHighlight 设置段落中所有文本的高亮颜色。
//
// 参数 color 是高亮颜色名称,支持的颜色包括:
Expand All @@ -1854,6 +1939,11 @@ func (p *Paragraph) SetHighlight(color string) {
Debugf("设置段落高亮: %s", color)
}

func (p *Paragraph) WithHighlight(color string) *Paragraph {
p.SetHighlight(color)
return p
}

// SetFontFamily 设置段落中所有文本的字体。
//
// 参数 name 是字体名称,如 "Arial"、"Times New Roman"、"微软雅黑" 等。
Expand Down Expand Up @@ -1881,6 +1971,11 @@ func (p *Paragraph) SetFontFamily(name string) {
Debugf("设置段落字体: %s", name)
}

func (p *Paragraph) WithFontFamily(name string) *Paragraph {
p.SetFontFamily(name)
return p
}

// SetFontSize 设置段落中所有文本的字体大小。
//
// 参数 size 是字体大小(磅),如 12、14、16 等。
Expand Down Expand Up @@ -1908,6 +2003,11 @@ func (p *Paragraph) SetFontSize(size int) {
Debugf("设置段落字体大小: %d", size)
}

func (p *Paragraph) WithFontSize(size int) *Paragraph {
p.SetFontSize(size)
return p
}

// SetColor 设置段落中所有文本的颜色。
//
// 参数 color 是十六进制颜色值,如 "FF0000"(红色)、"0000FF"(蓝色)等。
Expand All @@ -1934,6 +2034,11 @@ func (p *Paragraph) SetColor(color string) {
Debugf("设置段落颜色: %s", color)
}

func (p *Paragraph) WithColor(color string) *Paragraph {
p.SetColor(color)
return p
}

// GetStyleManager 获取文档的样式管理器。
//
// 返回文档的样式管理器,可用于访问和管理样式。
Expand Down
Loading