# 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月*