126 lines
3.2 KiB
Markdown
126 lines
3.2 KiB
Markdown
# Report Generator 报告生成工具
|
||
|
||
通用的文档模板处理和报告生成工具,支持Word文档的动态内容生成。
|
||
|
||
## 功能特性
|
||
|
||
### 1. 基础功能
|
||
- ✅ 占位符替换 (`${key}` 格式)
|
||
- ✅ Word文档处理 (基于Apache POI)
|
||
- ✅ 模板文件管理
|
||
- ✅ 多种输入输出方式 (文件路径、流、字节数组)
|
||
|
||
### 2. 高级功能
|
||
- ✅ 书签定位插入 (基于docx4j)
|
||
- ✅ 动态表格生成
|
||
- ✅ 文档合并
|
||
- ✅ 样式管理 (字体、颜色、对齐)
|
||
- ✅ 自动分页控制
|
||
- ✅ 深拷贝支持
|
||
|
||
### 3. 扩展功能
|
||
- 🔄 自定义处理器插件化
|
||
- 🔄 复杂表达式支持
|
||
- 🔄 模板验证
|
||
- 🔄 缓存优化
|
||
|
||
## 架构设计
|
||
|
||
```
|
||
report-generator/
|
||
├── controller/ # HTTP接口层
|
||
├── service/ # 业务逻辑层
|
||
├── engine/ # 模板引擎核心
|
||
│ ├── DocumentProcessor # 文档处理器接口
|
||
│ ├── WordEngine # Word处理引擎
|
||
│ ├── PlaceholderEngine # 占位符处理引擎
|
||
│ └── BookmarkEngine # 书签处理引擎
|
||
├── model/ # 数据模型
|
||
│ ├── TemplateRequest # 处理请求模型
|
||
│ ├── TemplateSource # 模板源定义
|
||
│ └── ProcessResult # 处理结果
|
||
├── util/ # 工具类
|
||
└── exception/ # 异常处理
|
||
```
|
||
|
||
## 使用示例
|
||
|
||
### 1. HTTP接口方式
|
||
|
||
```bash
|
||
# 简单占位符替换
|
||
POST /api/report/process
|
||
Content-Type: multipart/form-data
|
||
|
||
{
|
||
"templateFile": <template.docx>,
|
||
"data": {
|
||
"name": "张三",
|
||
"date": "2024-01-01",
|
||
"amount": "1000.00"
|
||
},
|
||
"outputFileName": "report.docx"
|
||
}
|
||
```
|
||
|
||
### 2. Java API方式
|
||
|
||
```java
|
||
// 注入服务
|
||
@Autowired
|
||
private ReportGeneratorService reportService;
|
||
|
||
// 创建请求
|
||
TemplateRequest request = TemplateRequest.builder()
|
||
.templatePath("template.docx")
|
||
.data(Map.of("name", "张三", "date", "2024-01-01"))
|
||
.outputPath("result.docx")
|
||
.options(ProcessOptions.builder()
|
||
.enablePlaceholder(true)
|
||
.enableBookmark(true)
|
||
.build())
|
||
.build();
|
||
|
||
// 处理模板
|
||
ProcessResult result = reportService.processTemplate(request);
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
### 处理选项 (ProcessOptions)
|
||
```java
|
||
ProcessOptions options = ProcessOptions.builder()
|
||
.enablePlaceholder(true) // 启用占位符替换
|
||
.enableBookmark(true) // 启用书签处理
|
||
.enableDynamicTable(true) // 启用动态表格
|
||
.enableAutoPage(true) // 启用自动分页
|
||
.placeholderPattern("${}") // 占位符格式
|
||
.build();
|
||
```
|
||
|
||
### 模板源配置 (TemplateSource)
|
||
```java
|
||
// 文件路径方式
|
||
TemplateSource.fromFile("path/to/template.docx")
|
||
|
||
// 输入流方式
|
||
TemplateSource.fromStream(inputStream)
|
||
|
||
// 字节数组方式
|
||
TemplateSource.fromBytes(byteArray)
|
||
```
|
||
|
||
## 技术栈
|
||
|
||
- **Apache POI**: Word文档基础操作
|
||
- **docx4j**: 高级Word文档处理
|
||
- **Spring Boot**: 框架支持
|
||
- **Hutool**: 工具库
|
||
- **Jackson**: JSON处理
|
||
|
||
## 性能优化
|
||
|
||
1. **模板缓存**: 常用模板缓存减少IO
|
||
2. **流式处理**: 大文件流式处理避免内存溢出
|
||
3. **异步处理**: 支持异步批量处理
|
||
4. **资源管理**: 自动资源清理和释放 |