# java2echarts
**Repository Path**: myacme/java2echarts
## Basic Information
- **Project Name**: java2echarts
- **Description**: java 生成 ECharts 并使用selenium调用chrome渲染html
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-02-04
- **Last Updated**: 2026-02-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Java2ECharts - Java图表生成与处理工具包
## 项目概述
Java2ECharts 是一个基于Java的综合性图表处理工具包,主要用于生成ECharts图表、将HTML图表转换为图片,并支持将图表集成到Word文档中。该项目集成了多种技术栈,提供了从数据可视化到文档生成的完整解决方案。
## 核心功能
### 📊 图表生成
- **ECharts图表生成**:支持生成柱状图、折线图等多种类型的交互式图表
- **双引擎支持**:
- 原生ECharts Generator(手动构建图表配置)
- ECharts-Java库集成(面向对象的图表构建)
### 🖼️ HTML转图片
- **Selenium WebDriver集成**:利用ChromeDriver实现高质量HTML渲染
- **自适应渲染**:智能等待页面和图表完全加载后截图
- **驱动池管理**:高效的WebDriver连接池,支持并发处理
- **两种转换模式**:
- Data URL模式(适用于小尺寸HTML)
- 临时文件模式(适用于大尺寸HTML)
### 📄 Word文档处理
- **Apache POI集成**:专业的Word文档操作能力
- **图表嵌入**:支持将生成的图表图片插入到Word文档
- **格式化支持**:自动居中对齐、标题设置等功能
## 技术架构
### 核心依赖
```xml
org.icepear.echarts
echarts-java
1.1.0
org.apache.poi
poi
5.2.3
org.apache.poi
poi-ooxml
5.2.3
org.seleniumhq.selenium
selenium-java
4.11.0
```
### 主要组件
#### 1. 图表生成器
- `EChartsGenerator.java` - 原生ECharts图表生成器
- `EChartsJavaGenerator.java` - ECharts-Java库封装生成器
#### 2. 图像转换器
- `HtmlToImageConverter.java` - 标准HTML转图片工具
- `SelfContainedHtmlToImageConverter.java` - 自包含版本(内置ChromeDriver)
#### 3. 文档处理器
- `WordDocumentHandler.java` - Word文档操作工具类
## 快速开始
### 1. 环境要求
- Java 21+
- Maven 3.6+
- Chrome浏览器(标准版本)或Chrome Headless Shell(自包含版本)
### 2. 基本使用示例
```java
// 生成柱状图
List categories = Arrays.asList("产品A", "产品B", "产品C");
Map> seriesData = new HashMap<>();
seriesData.put("销量", Arrays.asList(120, 200, 150));
String chartHtml = EChartsJavaGenerator.generateBarChart(
"销售统计", categories, seriesData
);
// 转换为图片
byte[] imageBytes = HtmlToImageConverter.convertDynamicHtmlToImage(chartHtml);
// 创建Word文档
XWPFDocument document = WordDocumentHandler.createNewDocument();
WordDocumentHandler.addTitleToDocument(document, "销售报告");
WordDocumentHandler.addImageToDocument(document, new File("chart.png"));
WordDocumentHandler.saveDocument(document, "report.docx");
```
## 项目特色
### 🔧 技术优势
- **零依赖部署**:自包含版本无需额外安装Chrome浏览器
- **高性能并发**:驱动池机制支持多线程并发处理
- **智能渲染**:多重等待策略确保图表完全渲染
- **跨平台兼容**:支持Windows、Linux等主流操作系统
### 🛠️ 工程化特性
- **连接池管理**:自动化的WebDriver生命周期管理
- **资源优化**:临时文件自动清理,内存高效利用
- **错误处理**:完善的异常处理和日志记录
- **配置灵活**:支持多种参数自定义配置
## 应用场景
### 📈 数据报表生成
- 自动生成业务数据可视化报告
- 批量处理统计数据并生成图表
- 定期报告自动化生成
### 📋 办公文档处理
- 将数据分析结果整合到Word文档
- 自动生成带图表的商业报告
- 支持批量文档生成
### 🎨 内容创作
- 网站数据可视化内容生成
- 社交媒体图表素材制作
- 教学演示材料准备
## 项目结构
```
src/main/java/com/example/
├── chrome/ # Chrome相关工具类
│ ├── EChartsGenerator.java # ECharts图表生成器
│ ├── EChartsJavaGenerator.java # ECharts-Java封装生成器
│ ├── HtmlToImageConverter.java # HTML转图片工具
│ ├── SelfContainedHtmlToImageConverter.java # 自包含版本
│ ├── WordDocumentHandler.java # Word文档处理器
│ └── EChartsJavaTest.java # 测试示例
└── java/
└── LineChartExample.java # JFreeChart示例
```
## 配置说明
### 系统参数
```java
// 驱动池配置
private static final int MAX_DRIVERS = 5; // 最大驱动数
private static final int INITIAL_POOL_SIZE = 3; // 初始池大小
private static final int PAGE_LOAD_TIMEOUT_SECONDS = 5; // 页面加载超时
// 渲染配置
private static final int RENDER_EXTRA_WAIT_MILLIS = 100; // 额外等待时间
private static final int MAX_HTML_SIZE_BYTES = 2_000_000; // HTML大小限制
```
### Chrome选项配置
项目针对不同环境优化了Chrome启动参数:
- **Windows环境**:优化显示性能
- **Linux/Docker环境**:禁用不必要的功能,提高稳定性
- **无头模式**:生产环境推荐配置
## 开发指南
### 扩展图表类型
```java
// 继承基础生成器添加新图表类型
public class CustomChartGenerator extends EChartsGenerator {
public static String generatePieChart(String title, Map data) {
// 实现饼图生成逻辑
}
}
```
### 自定义转换参数
```java
// 调整图片尺寸和质量
byte[] imageBytes = HtmlToImageConverter.convertHtmlToImage(
htmlContent, 1920, 1080 // 自定义宽高
);
```
## 性能优化建议
1. **合理设置驱动池大小**:根据服务器资源配置调整INITIAL_POOL_SIZE
2. **控制并发数量**:避免同时创建过多WebDriver实例
3. **及时释放资源**:使用完成后调用closeAllDrivers()
4. **监控内存使用**:定期检查临时文件清理情况
## 常见问题
### Q: ChromeDriver版本不匹配怎么办?
A: 确保ChromeDriver版本与系统Chrome浏览器版本匹配,或使用自包含版本
### Q: 图片生成质量不高?
A: 可以调整窗口尺寸参数,或增加RENDER_EXTRA_WAIT_MILLIS等待时间
### Q: 在Linux服务器上无法运行?
A: 确保安装必要的图形库:`apt-get install libnss3 libatk1.0-0 libgtk-3-0`
## 许可证
本项目采用MIT许可证,详情请参见LICENSE文件。
## 贡献指南
欢迎提交Issue和Pull Request来改进项目:
1. Fork项目仓库
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启Pull Request
## 联系方式
如有问题或建议,请通过以下方式联系:
- 提交GitHub Issue
- 发送邮件至项目维护者
---
*最后更新:2026年2月*