mirror of
https://github.com/ZeroHawkeye/wordZero.git
synced 2025-10-06 00:06:55 +08:00
更新.gitignore以忽略.vscode目录;在README.md中添加文档解析功能的重大改进和页面设置功能的详细描述;在document.go中添加书签功能和解析器特性,优化文档结构解析。
This commit is contained in:
179
examples/advanced_features/main.go
Normal file
179
examples/advanced_features/main.go
Normal file
@@ -0,0 +1,179 @@
|
||||
// Package main 演示WordZero高级功能
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/ZeroHawkeye/wordZero/pkg/document"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Println("WordZero 高级功能演示")
|
||||
fmt.Println("================")
|
||||
|
||||
// 创建新文档
|
||||
doc := document.New()
|
||||
|
||||
// 1. 设置文档属性
|
||||
fmt.Println("1. 设置文档属性...")
|
||||
if err := doc.SetTitle("WordZero高级功能演示文档"); err != nil {
|
||||
log.Printf("设置标题失败: %v", err)
|
||||
}
|
||||
if err := doc.SetAuthor("WordZero开发团队"); err != nil {
|
||||
log.Printf("设置作者失败: %v", err)
|
||||
}
|
||||
if err := doc.SetSubject("演示WordZero的高级功能"); err != nil {
|
||||
log.Printf("设置主题失败: %v", err)
|
||||
}
|
||||
if err := doc.SetKeywords("WordZero, Go, 文档处理, 高级功能"); err != nil {
|
||||
log.Printf("设置关键字失败: %v", err)
|
||||
}
|
||||
if err := doc.SetDescription("本文档演示了WordZero库的各种高级功能,包括页眉页脚、列表、目录和脚注等。"); err != nil {
|
||||
log.Printf("设置描述失败: %v", err)
|
||||
}
|
||||
|
||||
// 2. 设置页眉页脚
|
||||
fmt.Println("2. 设置页眉页脚...")
|
||||
if err := doc.AddHeader(document.HeaderFooterTypeDefault, "WordZero高级功能演示"); err != nil {
|
||||
log.Printf("添加页眉失败: %v", err)
|
||||
}
|
||||
if err := doc.AddFooterWithPageNumber(document.HeaderFooterTypeDefault, "WordZero开发团队", true); err != nil {
|
||||
log.Printf("添加页脚失败: %v", err)
|
||||
}
|
||||
|
||||
// 3. 添加文档标题
|
||||
fmt.Println("3. 添加文档内容...")
|
||||
doc.AddHeadingParagraph("WordZero高级功能演示", 1)
|
||||
doc.AddParagraph("本文档演示了WordZero库的各种高级功能,展示如何使用Go语言创建复杂的Word文档。")
|
||||
|
||||
// 4. 添加各级标题和内容(先添加内容,后面再生成目录)
|
||||
fmt.Println("4. 添加章节内容...")
|
||||
|
||||
// 第一章
|
||||
doc.AddHeadingParagraph("第一章 基础功能", 2)
|
||||
doc.AddParagraph("WordZero提供了丰富的基础功能,包括文本格式化、段落设置等。")
|
||||
|
||||
// 添加脚注
|
||||
if err := doc.AddFootnote("这是一个脚注示例", "脚注内容:WordZero是一个强大的Go语言Word文档处理库。"); err != nil {
|
||||
log.Printf("添加脚注失败: %v", err)
|
||||
}
|
||||
|
||||
// 第二章 - 列表功能
|
||||
doc.AddHeadingParagraph("第二章 列表功能", 2)
|
||||
doc.AddParagraph("WordZero支持多种类型的列表:")
|
||||
|
||||
// 5. 演示列表功能
|
||||
fmt.Println("5. 演示列表功能...")
|
||||
|
||||
// 无序列表
|
||||
doc.AddHeadingParagraph("2.1 无序列表", 3)
|
||||
doc.AddBulletList("项目符号列表项1", 0, document.BulletTypeDot)
|
||||
doc.AddBulletList("项目符号列表项2", 0, document.BulletTypeDot)
|
||||
doc.AddBulletList("二级项目1", 1, document.BulletTypeCircle)
|
||||
doc.AddBulletList("二级项目2", 1, document.BulletTypeCircle)
|
||||
doc.AddBulletList("项目符号列表项3", 0, document.BulletTypeDot)
|
||||
|
||||
// 有序列表
|
||||
doc.AddHeadingParagraph("2.2 有序列表", 3)
|
||||
doc.AddNumberedList("编号列表项1", 0, document.ListTypeDecimal)
|
||||
doc.AddNumberedList("编号列表项2", 0, document.ListTypeDecimal)
|
||||
doc.AddNumberedList("子项目a", 1, document.ListTypeLowerLetter)
|
||||
doc.AddNumberedList("子项目b", 1, document.ListTypeLowerLetter)
|
||||
doc.AddNumberedList("编号列表项3", 0, document.ListTypeDecimal)
|
||||
|
||||
// 多级列表
|
||||
doc.AddHeadingParagraph("2.3 多级列表", 3)
|
||||
multiLevelItems := []document.ListItem{
|
||||
{Text: "一级项目1", Level: 0, Type: document.ListTypeDecimal},
|
||||
{Text: "二级项目1.1", Level: 1, Type: document.ListTypeLowerLetter},
|
||||
{Text: "三级项目1.1.1", Level: 2, Type: document.ListTypeLowerRoman},
|
||||
{Text: "三级项目1.1.2", Level: 2, Type: document.ListTypeLowerRoman},
|
||||
{Text: "二级项目1.2", Level: 1, Type: document.ListTypeLowerLetter},
|
||||
{Text: "一级项目2", Level: 0, Type: document.ListTypeDecimal},
|
||||
}
|
||||
if err := doc.CreateMultiLevelList(multiLevelItems); err != nil {
|
||||
log.Printf("创建多级列表失败: %v", err)
|
||||
}
|
||||
|
||||
// 第三章 - 高级格式
|
||||
doc.AddHeadingParagraph("第三章 高级格式", 2)
|
||||
doc.AddParagraph("WordZero还支持各种高级格式功能。")
|
||||
|
||||
// 添加尾注
|
||||
if err := doc.AddEndnote("这是尾注示例", "尾注内容:更多信息请访问WordZero项目主页。"); err != nil {
|
||||
log.Printf("添加尾注失败: %v", err)
|
||||
}
|
||||
|
||||
// 第四章 - 文档属性
|
||||
doc.AddHeadingParagraph("第四章 文档属性管理", 2)
|
||||
doc.AddParagraph("WordZero允许设置和管理文档的各种属性,包括标题、作者、创建时间等元数据。")
|
||||
|
||||
// 结论
|
||||
doc.AddHeadingParagraph("结论", 2)
|
||||
doc.AddParagraph("通过以上演示,我们可以看到WordZero提供了全面的Word文档处理能力," +
|
||||
"包括基础的文本处理、高级的格式设置、以及专业的文档结构功能。")
|
||||
|
||||
// 6. 自动生成目录(新功能!)
|
||||
fmt.Println("6. 自动生成目录...")
|
||||
|
||||
// 调试:显示检测到的标题
|
||||
headings := doc.ListHeadings()
|
||||
fmt.Printf(" 检测到 %d 个标题:\n", len(headings))
|
||||
for i, heading := range headings {
|
||||
fmt.Printf(" %d. 级别%d: %s\n", i+1, heading.Level, heading.Text)
|
||||
}
|
||||
|
||||
// 显示标题级别统计
|
||||
counts := doc.GetHeadingCount()
|
||||
fmt.Printf(" 标题级别统计: %+v\n", counts)
|
||||
|
||||
// 使用新的AutoGenerateTOC方法自动生成目录
|
||||
tocConfig := document.DefaultTOCConfig()
|
||||
tocConfig.Title = "目录"
|
||||
tocConfig.MaxLevel = 3
|
||||
|
||||
if err := doc.AutoGenerateTOC(tocConfig); err != nil {
|
||||
log.Printf("自动生成目录失败: %v", err)
|
||||
fmt.Println(" ❌ 目录生成失败,可能是因为未检测到标题")
|
||||
} else {
|
||||
fmt.Println(" ✅ 自动生成目录成功")
|
||||
}
|
||||
|
||||
// 7. 更新文档统计信息
|
||||
fmt.Println("7. 更新文档统计信息...")
|
||||
if err := doc.UpdateStatistics(); err != nil {
|
||||
log.Printf("更新统计信息失败: %v", err)
|
||||
}
|
||||
|
||||
// 8. 保存文档
|
||||
fmt.Println("8. 保存文档...")
|
||||
outputFile := "examples/output/advanced_features_demo.docx"
|
||||
if err := doc.Save(outputFile); err != nil {
|
||||
log.Fatalf("保存文档失败: %v", err)
|
||||
}
|
||||
|
||||
fmt.Printf("✅ 高级功能演示文档已保存至: %s\n", outputFile)
|
||||
|
||||
// 9. 显示文档统计信息
|
||||
fmt.Println("9. 文档统计信息:")
|
||||
if properties, err := doc.GetDocumentProperties(); err == nil {
|
||||
fmt.Printf(" 标题: %s\n", properties.Title)
|
||||
fmt.Printf(" 作者: %s\n", properties.Creator)
|
||||
fmt.Printf(" 段落数: %d\n", properties.Paragraphs)
|
||||
fmt.Printf(" 字数: %d\n", properties.Words)
|
||||
fmt.Printf(" 字符数: %d\n", properties.Characters)
|
||||
fmt.Printf(" 创建时间: %s\n", properties.Created.Format(time.RFC3339))
|
||||
}
|
||||
|
||||
fmt.Printf(" 脚注数量: %d\n", doc.GetFootnoteCount())
|
||||
fmt.Printf(" 尾注数量: %d\n", doc.GetEndnoteCount())
|
||||
|
||||
fmt.Println("\n🎉 演示完成!")
|
||||
fmt.Println("\n📝 新增功能说明:")
|
||||
fmt.Println(" - 使用 AutoGenerateTOC() 方法自动检测文档中的标题")
|
||||
fmt.Println(" - 支持显示检测到的标题列表和级别统计")
|
||||
fmt.Println(" - 自动将目录插入到文档开头")
|
||||
fmt.Println(" - 修复了样式ID映射问题,现在能正确识别Heading1-9样式")
|
||||
}
|
Reference in New Issue
Block a user