diff --git a/CHANGELOG.md b/CHANGELOG.md index 02cd7c8..805dcb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,29 +1,9 @@ # CHANGELOG -## v1.3.0 (2026-05-12) +## v1.0.3 (2026-05-12) -- 核心架构重构:引入统一的 `Document` 接口,支持 **Open/Create/Save** 的极简 API 范式。 -- 自动识别:`office.Open(path)` 可根据后缀名自动选择解析器。 -- 标准化载体:所有文档类型均支持 `ToJSON()` 和 `ToMarkdown()`,完美对齐 AI 工作流。 -- 零摩擦设计:Excel 导出自动处理 Sheet 和列扩展;PDF/Word/PPT 提取自动结构化。 - -## v1.2.0 (2026-05-12) - -- 新增 Excel 与 JSON 的双向转换支持 (`ToJSON`, `FromJSON`)。 -- 为 Word、PPT 和 PDF 统一增加 `ToMarkdown` 方法,提升 AI 友好度。 -- 强化 Excel 导出逻辑,支持从 JSON 直接生成结构化表格。 - -## v1.1.0 (2026-05-12) - -- 新增 Word (`.docx`) 解析支持,可提取全文纯文本。 -- 新增 PowerPoint (`.pptx`) 解析支持,可提取幻灯片纯文本。 -- 新增 PDF 解析支持,可提取全文纯文本及元数据(页数、作者等)。 -- 保持全纯 Go 实现,无 CGo 依赖。 - -## v1.0.0 (2026-05-12) - -- 从 `gojs/office` 迁移并重构为纯 Go 实现。 -- 基础设施对齐:使用 `apigo.cc/go/cast` 和 `apigo.cc/go/file`。 -- 移除 `gojs` 和 `goja` 相关依赖。 -- 优化 `SetData` 和 `GetData` 的逻辑,支持自动扩展列。 -- 提供更简洁的 `Open` 和 `New` 入口。 +- 重构并更名为 `document`,统一处理 Excel, Word, PPT, PDF。 +- 引入 `Document` 接口,支持 **Open/Create/Save** 的极简 API。 +- 所有文档支持载体化操作:`ToJSON()` 和 `ToMarkdown()`。 +- 基础设施全面对齐 `@go` 标准库。 +- 修复 Excel 动态列扩展与 JSON 互转逻辑。 diff --git a/README.md b/README.md index acbc768..81b6524 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# office +# document -极简、高效的 Go Office 文档处理桥梁,符合 `@go` 设计哲学。 +极简、高效的 Go 办公文档处理桥梁,符合 `@go` 设计哲学。 ## 核心设计 -`office` 包将所有复杂的文档格式(Excel, Word, PPT, PDF)抽象为统一的 `Document` 接口。你只需要关心 **数据载体** (JSON/Markdown),而不需要关心底层实现。 +`document` 包将所有复杂的文档格式(Excel, Word, PPT, PDF)抽象为统一的 `Document` 接口。你只需要关心 **数据载体** (JSON/Markdown),而不需要关心底层实现。 - **结构化数据 (Excel)** <-> **JSON** - **半结构化内容 (Word/PPT/PDF)** -> **Markdown** @@ -12,18 +12,17 @@ ## 统一 API ```go -import "apigo.cc/go/office" +import "apigo.cc/go/document" // 1. 打开文档 (自动识别类型) -doc, _ := office.Open("data.xlsx") +doc, _ := document.Open("data.xlsx") // 2. 转换为通用载体 jsonStr := doc.ToJSON() // 适合 Excel mdStr := doc.ToMarkdown() // 适合 Word/PPT/PDF // 3. 修改并保存 (Excel 支持数据回写) -// (对于 Excel,你可以强制断言获取更多方法) -if xls, ok := doc.(*office.Excel); ok { +if xls, ok := doc.(*document.Excel); ok { xls.SetData("Sheet1", newData, "A1", "") } doc.Save("updated.xlsx") @@ -44,20 +43,10 @@ doc.Save("updated.xlsx") ```go // 一行代码将 PDF 转为 AI 易读的 Markdown -md, _ := office.Open("report.pdf").ToMarkdown() +md, _ := document.Open("report.pdf").ToMarkdown() // 一行代码将 Excel 转为结构化 JSON -json, _ := office.Open("sales.xlsx").ToJSON() -``` - -### 极简读写 (Excel) - -```go -xls, _ := office.OpenExcel("config.xlsx") -data, _ := xls.GetData("Sheet1", "A1", "") -// ... 修改 data -xls.SetData("Sheet1", data, "A1", "") -xls.Save() +json, _ := document.Open("sales.xlsx").ToJSON() ``` ## API 参考 @@ -70,7 +59,3 @@ xls.Save() - `ToJSON() string` - `ToMarkdown() string` - `Save(filename ...string) error` - -### 类型特定 (导出) -- `Excel`: 支持 `SetData`, `GetData`, `Sheets` 等。 -- `Docx`, `Pptx`, `PDF`: 支持 `Content` 和 `Metadata` 直接访问。 diff --git a/docx.go b/docx.go index d797bdb..a6b1acf 100644 --- a/docx.go +++ b/docx.go @@ -1,4 +1,4 @@ -package office +package document import ( "io" diff --git a/excel.go b/excel.go index b823f98..da6b80d 100644 --- a/excel.go +++ b/excel.go @@ -1,4 +1,4 @@ -package office +package document import ( "bytes" diff --git a/excel_test.go b/excel_test.go index f29d72f..85cf770 100644 --- a/excel_test.go +++ b/excel_test.go @@ -1,4 +1,4 @@ -package office +package document import ( "strings" diff --git a/go.mod b/go.mod index 6be35cd..8983ab6 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module apigo.cc/go/office +module apigo.cc/go/document go 1.25.0 diff --git a/office.go b/office.go index 04a4480..b883b5e 100644 --- a/office.go +++ b/office.go @@ -1,4 +1,4 @@ -package office +package document import ( "fmt" diff --git a/pdf.go b/pdf.go index 8b8df8c..37e7ff6 100644 --- a/pdf.go +++ b/pdf.go @@ -1,4 +1,4 @@ -package office +package document import ( "bytes" diff --git a/pptx.go b/pptx.go index c219247..e7792d6 100644 --- a/pptx.go +++ b/pptx.go @@ -1,4 +1,4 @@ -package office +package document import ( "io"