更新.gitignore以忽略.vscode目录;在README.md中添加文档解析功能的重大改进和页面设置功能的详细描述;在document.go中添加书签功能和解析器特性,优化文档结构解析。

This commit is contained in:
zero
2025-05-30 01:05:37 +08:00
parent 4995d75f8a
commit 9e39e663fb
20 changed files with 5733 additions and 291 deletions

View 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样式")
}