561 lines
18 KiB
Go
561 lines
18 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"github.com/landaiqing/go-dockit/document"
|
||
"log"
|
||
"time"
|
||
)
|
||
|
||
func main() {
|
||
// 创建一个新的Word文档
|
||
doc := document.NewDocument()
|
||
|
||
// 设置文档属性
|
||
doc.SetTitle("高级功能演示文档")
|
||
doc.SetCreator("go-dockit库")
|
||
doc.SetDescription("这是一个使用go-dockit库创建的高级功能演示文档")
|
||
doc.SetCreated(time.Now())
|
||
doc.SetModified(time.Now())
|
||
|
||
// 设置页面大小为A4纸,竖向
|
||
doc.SetPageSizeA4(false)
|
||
|
||
// 设置页面边距
|
||
doc.SetPageMargin(1440, 1440, 1440, 1440, 720, 720, 0)
|
||
|
||
// 添加页眉和页脚
|
||
header := doc.AddHeaderWithReference("default")
|
||
headerPara := header.AddParagraph()
|
||
headerPara.SetAlignment("right")
|
||
headerRun := headerPara.AddRun()
|
||
headerRun.AddText("高级功能演示文档")
|
||
headerRun.SetFontSize(20) // 10磅
|
||
headerRun.SetFontFamily("宋体")
|
||
|
||
// 添加页脚
|
||
footer := doc.AddFooterWithReference("default")
|
||
// 使用新的方法添加完整的页码段落
|
||
footer.AddPageNumber()
|
||
|
||
// =================== 封面页 ===================
|
||
// 添加一个标题段落作为封面
|
||
titlePara := doc.AddParagraph()
|
||
titlePara.SetAlignment("center")
|
||
titlePara.SetSpacingBefore(2400) // 封面标题前空白
|
||
titleRun := titlePara.AddRun()
|
||
titleRun.AddText("高级功能演示文档")
|
||
titleRun.SetBold(true)
|
||
titleRun.SetFontSize(48) // 24磅
|
||
titleRun.SetFontFamily("黑体")
|
||
|
||
// 添加副标题
|
||
subtitlePara := doc.AddParagraph()
|
||
subtitlePara.SetAlignment("center")
|
||
subtitlePara.SetSpacingBefore(800)
|
||
subtitleRun := subtitlePara.AddRun()
|
||
subtitleRun.AddText("go-dockit功能展示")
|
||
subtitleRun.SetFontSize(32) // 16磅
|
||
subtitleRun.SetFontFamily("黑体")
|
||
|
||
// 添加作者信息
|
||
authorPara := doc.AddParagraph()
|
||
authorPara.SetAlignment("center")
|
||
authorPara.SetSpacingBefore(2400)
|
||
authorRun := authorPara.AddRun()
|
||
authorRun.AddText("作者:go-dockit团队")
|
||
authorRun.SetFontSize(24) // 12磅
|
||
authorRun.SetFontFamily("宋体")
|
||
|
||
// 添加日期信息
|
||
datePara := doc.AddParagraph()
|
||
datePara.SetAlignment("center")
|
||
datePara.SetSpacingBefore(200)
|
||
dateRun := datePara.AddRun()
|
||
dateRun.AddText(time.Now().Format("2006年01月02日"))
|
||
dateRun.SetFontSize(24) // 12磅
|
||
dateRun.SetFontFamily("宋体")
|
||
|
||
// 添加分页符
|
||
doc.AddPageBreak()
|
||
|
||
// =================== 目录页 ===================
|
||
// 添加目录标题
|
||
tocTitlePara := doc.AddParagraph()
|
||
tocTitlePara.SetAlignment("center")
|
||
tocTitlePara.SetSpacingBefore(400)
|
||
tocTitlePara.SetSpacingAfter(600)
|
||
tocTitleRun := tocTitlePara.AddRun()
|
||
tocTitleRun.AddText("目录")
|
||
tocTitleRun.SetBold(true)
|
||
tocTitleRun.SetFontSize(36) // 18磅
|
||
tocTitleRun.SetFontFamily("黑体")
|
||
|
||
// 添加目录条目(在实际文档中,这部分会由Word自动更新)
|
||
addTocEntry(doc, "1. 文本样式展示", 0)
|
||
addTocEntry(doc, "2. 段落排版展示", 0)
|
||
addTocEntry(doc, " 2.1 段落对齐方式", 1)
|
||
addTocEntry(doc, " 2.2 段落间距和缩进", 1)
|
||
addTocEntry(doc, "3. 表格展示", 0)
|
||
addTocEntry(doc, " 3.1 基本表格", 1)
|
||
addTocEntry(doc, " 3.2 表格样式", 1)
|
||
addTocEntry(doc, "4. 列表展示", 0)
|
||
addTocEntry(doc, " 4.1 项目符号列表", 1)
|
||
addTocEntry(doc, " 4.2 多级编号列表", 1)
|
||
|
||
// 添加分页符
|
||
doc.AddPageBreak()
|
||
|
||
// =================== 正文开始 ===================
|
||
// 1. 文本样式展示
|
||
addHeading(doc, "1. 文本样式展示", 1)
|
||
|
||
para := doc.AddParagraph()
|
||
para.SetIndentFirstLine(420)
|
||
para.AddRun().AddText("go-dockit库支持多种文本样式,下面展示各种常见的文本格式:")
|
||
|
||
// 文本样式示例段落
|
||
stylePara := doc.AddParagraph()
|
||
stylePara.SetIndentFirstLine(420)
|
||
stylePara.SetSpacingBefore(200)
|
||
stylePara.SetSpacingAfter(200)
|
||
|
||
// 不同样式的文本展示
|
||
stylePara.AddRun().AddText("正常文本 ")
|
||
|
||
boldRun := stylePara.AddRun()
|
||
boldRun.AddText("粗体文本 ")
|
||
boldRun.SetBold(true)
|
||
|
||
italicRun := stylePara.AddRun()
|
||
italicRun.AddText("斜体文本 ")
|
||
italicRun.SetItalic(true)
|
||
|
||
boldItalicRun := stylePara.AddRun()
|
||
boldItalicRun.AddText("粗斜体文本 ")
|
||
boldItalicRun.SetBold(true)
|
||
boldItalicRun.SetItalic(true)
|
||
|
||
underlineRun := stylePara.AddRun()
|
||
underlineRun.AddText("下划线文本 ")
|
||
underlineRun.SetUnderline("single")
|
||
|
||
strikeRun := stylePara.AddRun()
|
||
strikeRun.AddText("删除线文本 ")
|
||
strikeRun.SetStrike(true)
|
||
|
||
superRun := stylePara.AddRun()
|
||
superRun.AddText("上标")
|
||
superRun.SetVertAlign("superscript")
|
||
|
||
stylePara.AddRun().AddText(" 正常文本 ")
|
||
|
||
subRun := stylePara.AddRun()
|
||
subRun.AddText("下标")
|
||
subRun.SetVertAlign("subscript")
|
||
|
||
// 字体和颜色
|
||
fontPara := doc.AddParagraph()
|
||
fontPara.SetIndentFirstLine(420)
|
||
|
||
colorRun := fontPara.AddRun()
|
||
colorRun.AddText("彩色文本 ")
|
||
colorRun.SetColor("FF0000") // 红色
|
||
|
||
fontSizeRun := fontPara.AddRun()
|
||
fontSizeRun.AddText("大号文本 ")
|
||
fontSizeRun.SetFontSize(28) // 14磅
|
||
|
||
fontFamilyRun := fontPara.AddRun()
|
||
fontFamilyRun.AddText("不同字体 ")
|
||
fontFamilyRun.SetFontFamily("黑体")
|
||
|
||
highlightRun := fontPara.AddRun()
|
||
highlightRun.AddText("背景高亮")
|
||
highlightRun.SetHighlight("yellow")
|
||
|
||
// 2. 段落排版展示
|
||
addHeading(doc, "2. 段落排版展示", 1)
|
||
addHeading(doc, "2.1 段落对齐方式", 2)
|
||
|
||
// 左对齐(默认)
|
||
leftPara := doc.AddParagraph()
|
||
leftPara.SetAlignment("left")
|
||
leftPara.SetSpacingBefore(200)
|
||
leftPara.SetSpacingAfter(200)
|
||
leftPara.AddRun().AddText("这是左对齐的段落。左对齐是最常用的对齐方式,段落的文本从左侧开始排列,右侧自然结束,形成参差不齐的边缘。")
|
||
|
||
// 居中对齐
|
||
centerPara := doc.AddParagraph()
|
||
centerPara.SetAlignment("center")
|
||
centerPara.SetSpacingBefore(200)
|
||
centerPara.SetSpacingAfter(200)
|
||
centerPara.AddRun().AddText("这是居中对齐的段落。居中对齐常用于标题、诗歌等需要特殊强调的文本。")
|
||
|
||
// 右对齐
|
||
rightPara := doc.AddParagraph()
|
||
rightPara.SetAlignment("right")
|
||
rightPara.SetSpacingBefore(200)
|
||
rightPara.SetSpacingAfter(200)
|
||
rightPara.AddRun().AddText("这是右对齐的段落。右对齐使文本的右边缘整齐,左侧参差不齐。")
|
||
|
||
// 两端对齐
|
||
justifyPara := doc.AddParagraph()
|
||
justifyPara.SetAlignment("both")
|
||
justifyPara.SetSpacingBefore(200)
|
||
justifyPara.SetSpacingAfter(200)
|
||
justifyPara.AddRun().AddText("这是两端对齐的段落。两端对齐会使段落的文本在左右两侧都形成整齐的边缘,适合正式文档和出版物。这是两端对齐的段落。两端对齐会使段落的文本在左右两侧都形成整齐的边缘,适合正式文档和出版物。")
|
||
|
||
addHeading(doc, "2.2 段落间距和缩进", 2)
|
||
|
||
// 解释段落
|
||
spacingExplainPara := doc.AddParagraph()
|
||
spacingExplainPara.SetIndentFirstLine(420)
|
||
spacingExplainPara.AddRun().AddText("段落间距和缩进对于文档的可读性非常重要。以下展示不同的段落间距和缩进效果:")
|
||
|
||
// 段落间距示例
|
||
firstSpacingPara := doc.AddParagraph()
|
||
firstSpacingPara.SetIndentFirstLine(420)
|
||
firstSpacingPara.SetSpacingBefore(400) // 段前20磅
|
||
firstSpacingPara.SetSpacingAfter(200) // 段后10磅
|
||
firstSpacingPara.AddRun().AddText("这个段落有较大的段前间距(20磅)和较小的段后间距(10磅)。通过调整段落间距,可以使文档结构更加清晰。")
|
||
|
||
// 行间距示例
|
||
lineSpacingPara := doc.AddParagraph()
|
||
lineSpacingPara.SetIndentFirstLine(420)
|
||
lineSpacingPara.SetSpacingLine(480, "exact") // 24磅的固定行距
|
||
lineSpacingPara.AddRun().AddText("这个段落使用了固定的行间距(24磅)。行间距影响段落内部各行之间的距离,合适的行间距可以提高文本的可读性。这个段落使用了固定的行间距(24磅)。行间距影响段落内部各行之间的距离,合适的行间距可以提高文本的可读性。")
|
||
|
||
// 缩进示例
|
||
indentPara := doc.AddParagraph()
|
||
indentPara.SetIndentLeft(720) // 左侧缩进36磅
|
||
indentPara.SetIndentRight(720) // 右侧缩进36磅
|
||
indentPara.SetSpacingBefore(200)
|
||
indentPara.AddRun().AddText("这个段落左右两侧都有缩进(36磅)。缩进可以用来强调某段文本,或者用于引用格式。不同类型的缩进可以用来表达不同的文档结构和层次。")
|
||
|
||
// 悬挂缩进示例
|
||
hangingPara := doc.AddParagraph()
|
||
hangingPara.SetIndentLeft(720) // 左侧缩进36磅
|
||
hangingPara.SetIndentFirstLine(-420) // 首行缩进-21磅(悬挂缩进)
|
||
hangingPara.SetSpacingBefore(200)
|
||
hangingPara.AddRun().AddText("悬挂缩进:").SetBold(true)
|
||
hangingPara.AddRun().AddText("这个段落使用了悬挂缩进,第一行文本会向左突出,形成一种特殊的格式效果。悬挂缩进常用于定义列表、参考文献等场景。")
|
||
|
||
// 3. 表格展示
|
||
addHeading(doc, "3. 表格展示", 1)
|
||
addHeading(doc, "3.1 基本表格", 2)
|
||
|
||
// 表格说明段落
|
||
tableExplainPara := doc.AddParagraph()
|
||
tableExplainPara.SetIndentFirstLine(420)
|
||
tableExplainPara.SetSpacingAfter(200)
|
||
tableExplainPara.AddRun().AddText("表格是文档中展示结构化数据的重要方式。以下展示基本表格功能:")
|
||
|
||
// 创建一个5行3列的表格
|
||
table := doc.AddTable(5, 3)
|
||
table.SetWidth(8000, "dxa") // 设置表格宽度
|
||
table.SetAlignment("center") // 表格居中
|
||
|
||
// 设置表头
|
||
headerRow := table.Rows[0]
|
||
headerRow.SetIsHeader(true)
|
||
|
||
// 填充表头
|
||
headerRow.Cells[0].AddParagraph().AddRun().AddText("产品名称").SetBold(true)
|
||
headerRow.Cells[1].AddParagraph().AddRun().AddText("单价").SetBold(true)
|
||
headerRow.Cells[2].AddParagraph().AddRun().AddText("库存数量").SetBold(true)
|
||
|
||
// 填充表格数据
|
||
products := []struct {
|
||
name string
|
||
price string
|
||
stock string
|
||
}{
|
||
{"商品A", "¥100.00", "150"},
|
||
{"商品B", "¥200.00", "85"},
|
||
{"商品C", "¥150.00", "200"},
|
||
{"商品D", "¥300.00", "35"},
|
||
}
|
||
|
||
for i, product := range products {
|
||
row := table.Rows[i+1]
|
||
|
||
// 居中显示所有单元格内容
|
||
nameCell := row.Cells[0].AddParagraph()
|
||
nameCell.SetAlignment("center")
|
||
nameCell.AddRun().AddText(product.name)
|
||
|
||
priceCell := row.Cells[1].AddParagraph()
|
||
priceCell.SetAlignment("center")
|
||
priceCell.AddRun().AddText(product.price)
|
||
|
||
stockCell := row.Cells[2].AddParagraph()
|
||
stockCell.SetAlignment("center")
|
||
stockCell.AddRun().AddText(product.stock)
|
||
}
|
||
|
||
// 设置表格边框
|
||
table.SetBorders("all", "single", 4, "000000")
|
||
|
||
addHeading(doc, "3.2 表格样式", 2)
|
||
|
||
// 表格样式说明段落
|
||
tableStyleExplainPara := doc.AddParagraph()
|
||
tableStyleExplainPara.SetIndentFirstLine(420)
|
||
tableStyleExplainPara.SetSpacingAfter(200)
|
||
tableStyleExplainPara.AddRun().AddText("表格可以应用不同的样式效果,如单元格合并、背景色、对齐方式等:")
|
||
|
||
// 创建一个样式化的表格
|
||
styleTable := doc.AddTable(4, 4)
|
||
styleTable.SetWidth(8000, "dxa") // 设置表格宽度
|
||
styleTable.SetAlignment("center") // 表格居中
|
||
|
||
// 设置表头
|
||
styleHeaderRow := styleTable.Rows[0]
|
||
styleHeaderRow.SetIsHeader(true)
|
||
|
||
// 设置表头背景色
|
||
for i := 0; i < 4; i++ {
|
||
styleHeaderRow.Cells[i].SetShading("DDDDDD", "000000", "clear")
|
||
}
|
||
|
||
// 填充表头
|
||
styleHeaderRow.Cells[0].AddParagraph().AddRun().AddText("季度").SetBold(true)
|
||
styleHeaderRow.Cells[1].AddParagraph().AddRun().AddText("北区").SetBold(true)
|
||
styleHeaderRow.Cells[2].AddParagraph().AddRun().AddText("南区").SetBold(true)
|
||
styleHeaderRow.Cells[3].AddParagraph().AddRun().AddText("总计").SetBold(true)
|
||
|
||
// 填充数据
|
||
quarters := []string{"第一季度", "第二季度", "第三季度"}
|
||
northData := []string{"¥10,000", "¥12,000", "¥15,000"}
|
||
southData := []string{"¥8,000", "¥9,000", "¥11,000"}
|
||
totalData := []string{"¥18,000", "¥21,000", "¥26,000"}
|
||
|
||
for i := 0; i < 3; i++ {
|
||
row := styleTable.Rows[i+1]
|
||
|
||
quarterCell := row.Cells[0].AddParagraph()
|
||
quarterCell.SetAlignment("center")
|
||
quarterCell.AddRun().AddText(quarters[i])
|
||
|
||
northCell := row.Cells[1].AddParagraph()
|
||
northCell.SetAlignment("center")
|
||
northCell.AddRun().AddText(northData[i])
|
||
|
||
southCell := row.Cells[2].AddParagraph()
|
||
southCell.SetAlignment("center")
|
||
southCell.AddRun().AddText(southData[i])
|
||
|
||
totalCell := row.Cells[3].AddParagraph()
|
||
totalCell.SetAlignment("center")
|
||
totalCell.AddRun().AddText(totalData[i])
|
||
}
|
||
|
||
// 设置边框
|
||
styleTable.SetBorders("all", "single", 4, "000000")
|
||
|
||
// 给某些单元格设置背景色
|
||
styleTable.Rows[1].Cells[1].SetShading("E6F2FF", "000000", "clear") // 浅蓝色
|
||
styleTable.Rows[2].Cells[2].SetShading("E6F2FF", "000000", "clear") // 浅蓝色
|
||
styleTable.Rows[3].Cells[3].SetShading("E6F2FF", "000000", "clear") // 浅蓝色
|
||
|
||
// 4. 列表展示
|
||
doc.AddPageBreak() // 分页,避免内容过多
|
||
addHeading(doc, "4. 列表展示", 1)
|
||
addHeading(doc, "4.1 项目符号列表", 2)
|
||
|
||
// 列表说明段落
|
||
listExplainPara := doc.AddParagraph()
|
||
listExplainPara.SetIndentFirstLine(420)
|
||
listExplainPara.SetSpacingAfter(200)
|
||
listExplainPara.AddRun().AddText("列表可以清晰地组织和展示相关信息。以下展示项目符号列表:")
|
||
|
||
// 创建一个项目符号列表
|
||
bulletListId := doc.Numbering.CreateBulletList()
|
||
|
||
// 添加列表项
|
||
bulletItems := []string{
|
||
"项目符号列表项一:项目符号列表用于展示无特定顺序的条目",
|
||
"项目符号列表项二:可以使用不同级别的缩进表示层次结构",
|
||
"项目符号列表项三:适合展示特点、优势等并列信息",
|
||
"项目符号列表项四:列表使文档的结构更加清晰",
|
||
}
|
||
|
||
for _, item := range bulletItems {
|
||
listItem := doc.AddParagraph()
|
||
listItem.SetNumbering(bulletListId, 0)
|
||
listItem.AddRun().AddText(item)
|
||
}
|
||
|
||
// 创建一个嵌套的项目符号列表
|
||
nestedListPara := doc.AddParagraph()
|
||
nestedListPara.SetSpacingBefore(200)
|
||
nestedListPara.SetIndentFirstLine(420)
|
||
nestedListPara.AddRun().AddText("以下是嵌套的项目符号列表:")
|
||
|
||
// 主列表项
|
||
mainItem1 := doc.AddParagraph()
|
||
mainItem1.SetNumbering(bulletListId, 0)
|
||
mainItem1.AddRun().AddText("主要类别A")
|
||
|
||
// 嵌套列表项
|
||
subItems1 := []string{"子类别A-1", "子类别A-2", "子类别A-3"}
|
||
for _, item := range subItems1 {
|
||
subItem := doc.AddParagraph()
|
||
subItem.SetNumbering(bulletListId, 1) // 使用级别1表示嵌套
|
||
subItem.AddRun().AddText(item)
|
||
}
|
||
|
||
// 另一个主列表项
|
||
mainItem2 := doc.AddParagraph()
|
||
mainItem2.SetNumbering(bulletListId, 0)
|
||
mainItem2.AddRun().AddText("主要类别B")
|
||
|
||
// 嵌套列表项
|
||
subItems2 := []string{"子类别B-1", "子类别B-2"}
|
||
for _, item := range subItems2 {
|
||
subItem := doc.AddParagraph()
|
||
subItem.SetNumbering(bulletListId, 1) // 使用级别1表示嵌套
|
||
subItem.AddRun().AddText(item)
|
||
}
|
||
|
||
addHeading(doc, "4.2 多级编号列表", 2)
|
||
|
||
// 编号列表说明段落
|
||
numberListExplainPara := doc.AddParagraph()
|
||
numberListExplainPara.SetIndentFirstLine(420)
|
||
numberListExplainPara.SetSpacingAfter(200)
|
||
numberListExplainPara.AddRun().AddText("编号列表适合表示有序的步骤或层次分明的结构:")
|
||
|
||
// 创建一个数字列表
|
||
numberListId := doc.Numbering.CreateNumberList()
|
||
|
||
// 添加列表项
|
||
numberItems := []string{
|
||
"第一步:准备所需材料",
|
||
"第二步:按照说明书组装底座",
|
||
"第三步:连接各个组件",
|
||
"第四步:检查并测试功能",
|
||
}
|
||
|
||
for _, item := range numberItems {
|
||
listItem := doc.AddParagraph()
|
||
listItem.SetNumbering(numberListId, 0)
|
||
listItem.AddRun().AddText(item)
|
||
}
|
||
|
||
// 创建一个多级编号列表示例
|
||
multiLevelExplainPara := doc.AddParagraph()
|
||
multiLevelExplainPara.SetSpacingBefore(200)
|
||
multiLevelExplainPara.SetIndentFirstLine(420)
|
||
multiLevelExplainPara.AddRun().AddText("以下是多级编号列表示例:")
|
||
|
||
// 创建一个多级编号列表
|
||
multiLevelListId := doc.Numbering.CreateNumberList()
|
||
|
||
// 一级条目
|
||
level1Item1 := doc.AddParagraph()
|
||
level1Item1.SetNumbering(multiLevelListId, 0)
|
||
level1Item1.AddRun().AddText("第一章:绪论")
|
||
|
||
// 二级条目
|
||
level2Item1 := doc.AddParagraph()
|
||
level2Item1.SetNumbering(multiLevelListId, 1)
|
||
level2Item1.AddRun().AddText("研究背景")
|
||
|
||
level2Item2 := doc.AddParagraph()
|
||
level2Item2.SetNumbering(multiLevelListId, 1)
|
||
level2Item2.AddRun().AddText("研究意义")
|
||
|
||
// 三级条目
|
||
level3Item1 := doc.AddParagraph()
|
||
level3Item1.SetNumbering(multiLevelListId, 2)
|
||
level3Item1.AddRun().AddText("理论意义")
|
||
|
||
level3Item2 := doc.AddParagraph()
|
||
level3Item2.SetNumbering(multiLevelListId, 2)
|
||
level3Item2.AddRun().AddText("实践意义")
|
||
|
||
// 二级条目
|
||
level2Item3 := doc.AddParagraph()
|
||
level2Item3.SetNumbering(multiLevelListId, 1)
|
||
level2Item3.AddRun().AddText("研究方法")
|
||
|
||
// 一级条目
|
||
level1Item2 := doc.AddParagraph()
|
||
level1Item2.SetNumbering(multiLevelListId, 0)
|
||
level1Item2.AddRun().AddText("第二章:文献综述")
|
||
|
||
// 结论段落
|
||
doc.AddPageBreak()
|
||
conclusionHeading := doc.AddParagraph()
|
||
conclusionHeading.SetAlignment("center")
|
||
conclusionHeading.SetSpacingBefore(400)
|
||
conclusionHeading.SetSpacingAfter(200)
|
||
conclusionRun := conclusionHeading.AddRun()
|
||
conclusionRun.AddText("总结")
|
||
conclusionRun.SetBold(true)
|
||
conclusionRun.SetFontSize(32) // 16磅
|
||
|
||
conclusionPara := doc.AddParagraph()
|
||
conclusionPara.SetIndentFirstLine(420)
|
||
conclusionPara.AddRun().AddText("本文档展示了go-dockit库的各种功能,包括文本样式、段落排版、表格和列表等。通过这些功能,用户可以创建格式丰富、结构清晰的Word文档。欢迎根据需要扩展和完善这些功能。")
|
||
|
||
// 保存文档
|
||
err := doc.Save("./document/examples/advanced/advanced_example.docx")
|
||
if err != nil {
|
||
log.Fatalf("保存文档时出错: %v", err)
|
||
}
|
||
|
||
fmt.Println("高级功能演示文档已成功保存为 advanced_example.docx")
|
||
}
|
||
|
||
// 辅助函数:添加目录条目
|
||
func addTocEntry(doc *document.Document, text string, level int) {
|
||
tocEntryPara := doc.AddParagraph()
|
||
|
||
// 根据层级设置不同的缩进
|
||
if level > 0 {
|
||
tocEntryPara.SetIndentLeft(420 * level)
|
||
}
|
||
|
||
tocEntryPara.SetSpacingBefore(60)
|
||
tocEntryPara.SetSpacingAfter(60)
|
||
|
||
// 添加文本
|
||
run := tocEntryPara.AddRun()
|
||
run.AddText(text)
|
||
|
||
// 添加制表符和页码(实际文档中会有页码)
|
||
run.AddTab()
|
||
run.AddText("...")
|
||
run.AddTab()
|
||
run.AddText("1") // 示例页码
|
||
}
|
||
|
||
// 辅助函数:添加标题
|
||
func addHeading(doc *document.Document, text string, level int) {
|
||
headingPara := doc.AddParagraph()
|
||
|
||
// 设置段落间距
|
||
headingPara.SetSpacingBefore(400)
|
||
headingPara.SetSpacingAfter(200)
|
||
|
||
// 添加标题文本
|
||
headingRun := headingPara.AddRun()
|
||
headingRun.AddText(text)
|
||
headingRun.SetBold(true)
|
||
|
||
// 根据级别设置不同的字体大小
|
||
switch level {
|
||
case 1:
|
||
headingRun.SetFontSize(32) // 16磅
|
||
case 2:
|
||
headingRun.SetFontSize(28) // 14磅
|
||
case 3:
|
||
headingRun.SetFontSize(26) // 13磅
|
||
default:
|
||
headingRun.SetFontSize(24) // 12磅
|
||
}
|
||
}
|