PhantomJS+java 后端生成echart图表的图片

PhantomJS+java 后端生成echart图表的图片

前言

该项目仅用作个人学习使用

源码

地址

docker镜像: registry.cn-chengdu.aliyuncs.com/qinjie/java-phantomjs:1.0

效果

实现

该源码主要是在linux环境下运行,因为最终结果是打包成了docker image。本地window运行需要下载PhantomJS的window版本。如下命令window环境下不可直接运行

echarts-convert+PhantomJS实现echarts截图得到图片

  1. webserver启动了一个服务,因为不通过服务的方式会每次都打开phantomjs

  2. 监听端口8081,post请求。接受json body的数据如下。

  3. 其中option中的数据标识echart中的option部分;path标识截图生成的base64将会写入到这个txt中去

    {
    "path": ["/a.txt"],
    "option": ["var option = {\r\n xAxis: {\r\n type: 'category',\r\n data: ['中国', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\r\n },\r\n yAxis: {\r\n type: 'value'\r\n },\r\n series: [\r\n {\r\n data: [150, 230, 224, 218, 135, 147, 260],\r\n type: 'line'\r\n }\r\n ]\r\n};"]
    }

  1. 通过如下命令启动一个服务。就是通过phantomjs指定一个js即可。window本地也是类似的

    phantomjs-2.1.1-linux-x86_64/bin/phantomjs phantomjs/echarts-convert/server.js

5.window下同样下载个phantomjs,执行同一个server.js一样可以启动一个服务

6.调用后会在参数中:path 路径下生成一个txt,里面保存了base64

java延时读取base64数据

  1. java项目就很简单了,就是读取了指定path下的base64数据

  2. java项目中通过sleep等待了下

  3. 因为PhantomJS+webserver截图的时候是异步的,我查了很久没找到能同步办法,所以没办法就这样来实现了

  4. java接口的效果如下


参考

  1. https://www.jianshu.com/p/bf92c7ddaa13
  2. 网上一搜一大堆的教程
相关推荐
代码不行的搬运工5 分钟前
HTML快速入门-4:HTML <meta> 标签属性详解
java·前端·html
mask哥1 小时前
详解最新链路追踪skywalking框架介绍、架构、环境本地部署&配置、整合微服务springcloudalibaba 、日志收集、自定义链路追踪、告警等
java·spring cloud·架构·gateway·springboot·skywalking·链路追踪
XU磊2601 小时前
javaWeb开发---前后端开发全景图解(基础梳理 + 技术体系)
java·idea
学也不会1 小时前
雪花算法
java·数据库·oracle
晓华-warm1 小时前
国产免费工作流引擎star 5.9k,Warm-Flow版本升级1.7.0(新增大量好用功能)
java·中间件·流程图·开源软件·flowable·工作流·activities
凭君语未可1 小时前
介绍 IntelliJ IDEA 快捷键操作
java·ide·intellij-idea
码上飞扬1 小时前
Java大师成长计划之第5天:Java中的集合框架
java·开发语言
24k小善1 小时前
FlinkUpsertKafka深度解析
java·大数据·flink·云计算
EnigmaCoder2 小时前
java面向对象编程【高级篇】之多态
java·开发语言
秋名RG2 小时前
浅谈Java 内存管理:栈与堆,垃圾回收
java·开发语言·jvm