在项目中,偶尔需要把hightchart做的图导出来做成word,这个问题之前我是把hightchart生成图的svg传递到后台,通过svg生成图片把图片生成,最后把她放到word中做成导出的word,但是对于echart做的图我就有点无能为力了,今天没事,想到一个词就是如何截取web的截图,这个词百度查看发现通过phantomjs抓取指定网站的截图,这个倒是个好的方式,比起解析页面的内容这种要简单的多。不说了,直接上写的一个小例子,在windows下做的,说说过程首先从http://phantomjs.org/download.html下载指定的系统的工具把它放到一个目录下,下载下来,把它放到了一个目录下,我把它(phantomjs.exe)放到d盘,编写一个js(dome.js)去截图js代码如下:
system = require('system')
address = system.args[1]; //获取传递进来的参数1
var page = require('webpage').create();
page.open(address, function () {
page.render('example.png'); //保存为example.png
phantom.exit();
});
然后在java程序中执行dos命令:我采用了用一个bat批处理文件(dome.bat)来执行多条名称,内容如下:
d:
phantomjs.exe dome.js %1
exit
其中%1表示dos执行批处理文件传递的第一个参数
java执行批处理文件就搞定了。如下
Runtime.getRuntime().exec("cmd /c start D:/dome.bat http://www.163.com/");
这个就是截取http://www.163.com/ 的页面截图。