Files
wordZero/examples/advanced_features/main.go

282 lines
7.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package main 演示WordZero高级功能
package main
import (
"fmt"
"log"
"github.com/ZeroHawkeye/wordZero/pkg/document"
)
func main() {
fmt.Println("正在创建高级功能演示文档...")
// 创建新文档
doc := document.New()
// 1. 设置文档标题和副标题
title := doc.AddFormattedParagraph("高级功能演示文档", &document.TextFormat{
Bold: true,
FontSize: 18,
FontColor: "2F5496",
FontFamily: "微软雅黑",
})
title.SetAlignment(document.AlignCenter)
title.SetSpacing(&document.SpacingConfig{
AfterPara: 12,
})
subtitle := doc.AddFormattedParagraph("包含目录、表格、页眉页脚和各种格式", &document.TextFormat{
Italic: true,
FontSize: 12,
FontColor: "7030A0",
FontFamily: "微软雅黑",
})
subtitle.SetAlignment(document.AlignCenter)
subtitle.SetSpacing(&document.SpacingConfig{
AfterPara: 18,
})
// 2. 添加多级标题以生成层级目录
fmt.Println("添加多级标题...")
// 一级标题
h1_1 := doc.AddHeadingParagraph("第一章 文档基础功能", 1)
h1_1.SetSpacing(&document.SpacingConfig{
BeforePara: 18,
AfterPara: 12,
})
// 二级标题
h2_1 := doc.AddHeadingParagraph("1.1 文本格式化", 2)
h2_1.SetSpacing(&document.SpacingConfig{
BeforePara: 12,
AfterPara: 6,
})
// 三级标题
h3_1 := doc.AddHeadingParagraph("1.1.1 字体设置", 3)
h3_1.SetSpacing(&document.SpacingConfig{
BeforePara: 6,
AfterPara: 6,
})
// 添加一些内容段落
doc.AddParagraph("这里演示了字体设置的功能,包括字体大小、颜色、粗体、斜体等各种格式选项。")
h3_2 := doc.AddHeadingParagraph("1.1.2 段落格式", 3)
h3_2.SetSpacing(&document.SpacingConfig{
BeforePara: 6,
AfterPara: 6,
})
doc.AddParagraph("段落格式包括对齐方式、行间距、段间距、缩进等设置。")
// 二级标题
h2_2 := doc.AddHeadingParagraph("1.2 样式管理", 2)
h2_2.SetSpacing(&document.SpacingConfig{
BeforePara: 12,
AfterPara: 6,
})
doc.AddParagraph("样式管理系统提供了预定义样式和自定义样式功能。")
// 一级标题
h1_2 := doc.AddHeadingParagraph("第二章 表格功能", 1)
h1_2.SetSpacing(&document.SpacingConfig{
BeforePara: 18,
AfterPara: 12,
})
// 二级标题
h2_3 := doc.AddHeadingParagraph("2.1 表格创建", 2)
h2_3.SetSpacing(&document.SpacingConfig{
BeforePara: 12,
AfterPara: 6,
})
// 三级标题
h3_3 := doc.AddHeadingParagraph("2.1.1 基础表格", 3)
h3_3.SetSpacing(&document.SpacingConfig{
BeforePara: 6,
AfterPara: 6,
})
doc.AddParagraph("演示基础表格创建功能。")
h3_4 := doc.AddHeadingParagraph("2.1.2 高级表格", 3)
h3_4.SetSpacing(&document.SpacingConfig{
BeforePara: 6,
AfterPara: 6,
})
doc.AddParagraph("演示高级表格功能,包括合并单元格、样式设置等。")
// 二级标题
h2_4 := doc.AddHeadingParagraph("2.2 表格样式", 2)
h2_4.SetSpacing(&document.SpacingConfig{
BeforePara: 12,
AfterPara: 6,
})
doc.AddParagraph("表格样式设置和格式化选项。")
// 一级标题
h1_3 := doc.AddHeadingParagraph("第三章 高级功能", 1)
h1_3.SetSpacing(&document.SpacingConfig{
BeforePara: 18,
AfterPara: 12,
})
// 二级标题
h2_5 := doc.AddHeadingParagraph("3.1 页面设置", 2)
h2_5.SetSpacing(&document.SpacingConfig{
BeforePara: 12,
AfterPara: 6,
})
doc.AddParagraph("页面大小、边距、方向等设置功能。")
h2_6 := doc.AddHeadingParagraph("3.2 目录生成", 2)
h2_6.SetSpacing(&document.SpacingConfig{
BeforePara: 12,
AfterPara: 6,
})
doc.AddParagraph("自动生成目录功能,支持多级标题和正确的缩进显示。")
// 3. 在文档开头生成目录
fmt.Println("生成自动目录...")
config := &document.TOCConfig{
Title: "目录",
MaxLevel: 3,
ShowPageNum: true,
RightAlign: true,
UseHyperlink: true,
DotLeader: true,
}
err := doc.AutoGenerateTOC(config)
if err != nil {
log.Printf("生成目录失败: %v", err)
} else {
fmt.Println("目录生成成功!")
}
// 4. 设置页面属性 - 暂时跳过因为API可能尚未实现
fmt.Println("设置页面属性...")
// err = doc.SetPageSize(&document.PageSize{
// Width: 210, // A4宽度
// Height: 297, // A4高度
// Orientation: document.OrientationPortrait,
// })
// if err != nil {
// log.Printf("设置页面大小失败: %v", err)
// }
// err = doc.SetPageMargins(25, 25, 30, 20) // 上下左右边距
// if err != nil {
// log.Printf("设置页面边距失败: %v", err)
// }
// 5. 添加页眉页脚 - 暂时跳过因为API可能尚未实现
fmt.Println("添加页眉页脚...")
// err = doc.AddHeader("高级功能演示文档", "")
// if err != nil {
// log.Printf("添加页眉失败: %v", err)
// }
// err = doc.AddFooter("", "第{页码}页 共{总页数}页")
// if err != nil {
// log.Printf("添加页脚失败: %v", err)
// }
// 6. 创建演示表格
fmt.Println("创建演示表格...")
// 在文档末尾添加表格说明
doc.AddParagraph("") // 空行
tableTitle := doc.AddFormattedParagraph("演示表格", &document.TextFormat{
Bold: true,
FontSize: 14,
})
tableTitle.SetAlignment(document.AlignCenter)
// 创建3x4的表格
table := doc.AddTable(&document.TableConfig{
Rows: 4,
Cols: 3,
Width: 9000,
Data: [][]string{
{"项目", "描述", "状态"},
{"文本格式化", "支持字体、大小、颜色等设置", "✅ 完成"},
{"段落格式", "支持对齐、间距、缩进等", "✅ 完成"},
{"目录生成", "自动生成多级目录", "🔧 已修复缩进"},
},
})
// 设置表格样式
table.SetTableAlignment(document.TableAlignCenter)
// 设置标题行格式
for j := 0; j < 3; j++ {
table.SetCellFormat(0, j, &document.CellFormat{
TextFormat: &document.TextFormat{
Bold: true,
FontColor: "FFFFFF",
},
BackgroundColor: "2F5496",
HorizontalAlign: document.CellAlignCenter,
VerticalAlign: document.CellVAlignCenter,
})
}
// 7. 添加脚注说明
fmt.Println("添加脚注...")
footnoteText := doc.AddParagraph("本文档演示了WordZero库的主要功能特性")
footnoteText.AddFormattedText("¹", &document.TextFormat{
FontSize: 8,
})
// 暂时跳过脚注功能如果API不可用
// err = doc.AddFootnote("脚注示例", "这是一个脚注示例,展示了脚注功能的使用。")
// if err != nil {
// log.Printf("添加脚注失败: %v", err)
// }
// 9. 保存文档
filename := "examples/output/advanced_features_demo.docx"
fmt.Printf("正在保存文档到: %s\n", filename)
err = doc.Save(filename)
if err != nil {
log.Fatalf("保存文档失败: %v", err)
}
fmt.Println("✅ 高级功能演示文档创建完成!")
fmt.Println("📊 文档统计信息:")
// 获取标题统计
headingCount := doc.GetHeadingCount()
for level := 1; level <= 3; level++ {
if count, exists := headingCount[level]; exists {
fmt.Printf(" - %d级标题: %d个\n", level, count)
}
}
// 列出所有标题
fmt.Println("📋 标题列表:")
headings := doc.ListHeadings()
for _, heading := range headings {
indent := ""
for i := 1; i < heading.Level; i++ {
indent += " "
}
fmt.Printf(" %s%d. %s\n", indent, heading.Level, heading.Text)
}
fmt.Printf("\n🎉 文档已成功保存到: %s\n", filename)
fmt.Println("💡 提示打开Word文档检查目录是否显示正确的层级缩进")
}