(一)使用phantomjs将动态HTML页面生成图片
因为工作需要,笔者需要将一个动态的HTML5页面生成图片,并将图片发送给用户。
其中难点在于怎样将动态H5生成图片
笔者翻阅资料后,决定使用phantomjs这个插件,关于这个插件的安装,非常简单,笔者不再赘述。
安装好插件后就是怎样使用这个插件了。
下面附上笔者的调用
private void exePhantomjs(String url,String filename){
String BLANK = " ";
Process process = null;
try {
process = Runtime.getRuntime().exec(
phantomjs + BLANK //你的phantomjs.exe路径
+ calendarjs + BLANK //就是上文中那段javascript脚本的存放路径
+ url + BLANK //你的目标url地址
+ filePath+filename+".jpg");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
logger.info(phantomjs + BLANK+calendarjs + BLANK+url + BLANK+filePath+filename+".jpg");
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String tmp = "";
try {
while ((tmp = reader.readLine()) != null) {
if (process != null) {
process.destroy();
process = null;
}
}
inputStream.close();
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("渲染成功...");
}
这里相当是JAVA直接调用第三方插件。需要传入四个参数
1,phantomjs的路径
2,执行脚本
3,动态H5的地址,可以使用百度地址进行测试,笔者在开发时使用了自己后台的H5页面
4,图片生成路径
接下来附上笔者的脚本
var page = require('webpage').create(), system = require('system'), address, output, size;
if (system.args.length < || system.args.length > ) {
phantom.exit();
} else {
address = system.args[];
output = system.args[];
//定义宽高
page.viewportSize = {
width : ,
height :
};
page.open(address, function(status) {
var bb = page.evaluate(function() {
return document.getElementsByTagName('html')[].getBoundingClientRect();
});
var cc = page.evaluate(function() {
return document.documentElement;
});
page.clipRect = {
top : bb.top,
left : bb.left,
width : bb.width,
height : cc.scrollHeight
};
window.setTimeout(function() {
page.render(output);
page.close();
console.log('success...');
//for (var item in cc){
// if('scrollHeight'==item){
// console.log(item,cc[item])
// }
//}
console.log('height',cc.scrollHeight)
phantom.exit();
}, );
});
}
整个过程比较简单,但是从技术选型,到开发,调试也历时一个星期。
最后附上笔者生成的图片

(一)使用phantomjs将动态HTML页面生成图片的更多相关文章
- 爬虫动态渲染页面爬取之selenium驱动chrome浏览器的使用
Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,可以用其进行网页动态渲染页面的爬取. 支持的浏览器包括IE(7, 8, 9, 10 ...
- jquery动态创建页面元素
jquery用$()方法动态创建一个页面元素,例如: var $div=$("<div title='动态创建页面元素'>欢迎创建一个新的div</div>" ...
- JS动态修改页面EasyUI datebox不生效、EasyUI动态添加Class、EasyUI动态渲染解析解决方案
这是个小菜在实际工作中遇到的问题,相信很多EasyUI新手很可能也遇到这样的问题,因此小菜觉得有必要拿出来分享一下. 这个问题要从EasyUI的datebox组件说起,小菜用这个组件的时候,发现用$( ...
- httl开源JAVA模板引擎,动态HTML页面输出
HTTL(Hyper-Text Template Language)是一个适用于HTML输出的开源JAVA模板引擎,适用于动态HTML页面输出,可用于替代JSP页面,它的指令类似于Velocity. ...
- 基于Vue的SPA动态修改页面title的方法
最近基于VUE做个SPA手机端web发现动态修改页面标题通过document.title=xxxx 来修改着实蛋疼,而且在IOS的微信端据说没效果.百度发现要针对IOS的微信做点额外的操作,即:创建一 ...
- js、css动态压缩页面代码
1.js.css动态压缩页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile=" ...
- 微信小程序中把页面生成图片
这个问题我上网搜了一下,答案有多种,但是真正能用的没有几何.很多答案都是雷同,有的网友也不负责任,直接拿来照抄,自己也不跑一遍看看.哎,不说了,说多了全是泪.希望我们的技术达人在分享的时候,能够真实的 ...
- 微信小程序——动态渲染页面、路径传参
1.动态渲染页面.改变css.样式必须setData渲染过去 this.setData({ userInfo: app.globalData.userInfo, token: app.glob ...
- 动态为页面添加CSS样式文件引用
动态为页面添加CSS样式文件引用: if (document.createStyleSheet) { //IE document.createStyleSheet("./Themes/Def ...
随机推荐
- PHP如何创建文件夹(mkdir的用法,mkdirs的语法)【转】
(PHPmkdir如何创建多级目录) 在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其它不是那样,单个的MKDIR只能创建一级目录,对于多级的就不 ...
- java随机数获取
/**Number One: * 随机数获取公式:(数据类型)(最小值+Math.random()*(最大值-最小值+1)) * 随机数获取公式:(类型)最小值+Math.random()*最大值 * ...
- Linux文件服务管理之Samba
Linux文件服务器的搭建 Samba vsftpd nfs Samba服务 作用:共享目录 ...
- mysql 命令修复表
如果在断电.硬重启服务器等情况下,可能会造成有些表损坏,这时就需要修复 修复表前需要将mysql停止 centos7 用 systemctl stop mysqld.service 来停止 然后进入到 ...
- python的multitask模块安装
今天参考网络上的例子,编写基于python的网络程序,遇到下面的错误. No module named 'multitask' 但是multitask的模块却始终下载不了,在网上找到的CSDN下载链接 ...
- 数据结构篇——平衡二叉树(AVL树)
引入 上一篇写了二叉排序树,构建一个二叉排序树,如果构建序列是完全有序的,则会出现这样的情况: 显然这种情况会使得二叉搜索树退化成链表.当出现这样的情况,二叉排序树的查找也就退化成了线性查找,所以我们 ...
- Xcode添加库文件framework (转)
首先需要了解一下iOS中静态库和动态库.framework的概念 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我 ...
- echarts - 折线图 - 每秒刷新数据并显示
function randomData() { now = new Date(+now + oneDay); value = value + Math.random() * 21 - 10; var ...
- 最强PHP防镜像代码收集,简单粗暴...你值得拥有
JS版本 <script type="text/javascript"> if(location.toString().indexOf("yuanzhumub ...
- Logstash 学习资料
学习资料 网址 Logstash Reference(官方) https://www.elastic.co/guide/en/logstash/current/introduction.html