phantomjs对页面的某个div截图

      昨天写了一篇《对网页进行截图》,今天在家想了想,在项目中,我们为了导出hightcharts做的图在报告中用,我们更好的方式是对某个div进行截图,所以趁着周天,边查资料边改造,把昨天的那个项目改成了截取某个div的截图,到此刻,搞完了。记录一下,以备不时之需。

     相比于昨天的我们需要给批处理文件多传一个参数也就是那个div的id,对我对那个js修改为如下:

system = require('system')  
address = system.args[1]; //获取传递进来的参数1


var path=ids+".png";
var page = require('webpage').create(),ids;
ids= system.args[2];
var width = 1349;  
var height = 1883;  


page.viewportSize = {width: width, height: height};


page.open(address, function () {
console.log("ids2---"+ids);
    var length= page.evaluate(function (s) {  
           var div = document.getElementById(s); //要截图的div的id  
            var bc = div.getBoundingClientRect();  
            var top = bc.top;  
            var left = bc.left;  
            var width = bc.width;  
            var height = bc.height;  
            window.scrollTo(0, 10000);//滚动到底部  
            return [top, left, width, height];  
        },ids);  // page.evaluate(fn, [param]) 那个param就可以把外面的参数传进去了
        console.log(length);  
        page.clipRect = { //截图的偏移和宽高  
            top: length[0],  
            left: length[1],  
            width: length[2],  
            height: length[3]  
        };  
page.render(ids+".png");  
        phantom.exit();  
});

然后对批处理文件的执行phantomjs多加一个参数,如下:

d:
phantomjs.exe dome1.js %1 %2
exit 

    这样就搞定了,开始在Java中执行。如下:

Runtime.getRuntime().exec("cmd /c start D:/dome1.bat http://127.0.0.1:8020/ha/index.html containerType5");
    就这样截图成功。再也不用担心图表后台程序导出了。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值