1.wkhtmltoimage使用wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2版本,最新版本为wkhtmltoimage-0.11.0_rc1-static-amd64.tar.bz2。
2.解压wkhtmltoimage,更改用户,组
# mkdir /usr/local/wkhtmltoimage
# cp wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2 /usr/local/wkhtmltoimage
# cd /usr/local/wkhtmltoimage
# tar xvf wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2 //可以看到解压后只有wkhtmltoimage-amd64一个可执行文件
# mv wkhtmltoimage-amd64 wkhtmltoimage
# chown root.root wkhtmltoimage //更改用户,组
3.使用wkhtmltoimage将html页面输出成jpg
# ./wkhtmltoimage gaingreat.com /tmp/gain.jpg ///tmp/gain.jpg指定输出图像位置,名称,可以是.png等格式
附录:
./wkhtmltoimage-amd64 gaingreat.com gain.jpg时出现Gtk-WARNING **: cannot open display:
Loading page (1/2)
[==============================> ] 51%
(:18608): Gtk-WARNING **: cannot open display:
因为我是用secureCRT ssh到这台机子上的,好像说是图像无法传送过来。直接到那台机子上试就没问题。参照网上的
# export DISPLAY=:0.0 //设置DISPLAY环境变量, 运行图形程序(如xclock)时会收到如下错误:
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified
Error: Can't open display: :0.0
这是因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上. 如果需要别的用户的图形显示在当前屏幕上, 则应以当前登陆的用户, 也就是切换身份前的用户执行如下命令
# xhost + //这个命令将允许别的用户启动的图形程序将图形显示在当前屏幕上
xhost: unable to open display "0:0"
还是不行,后来看到说/etc/sshd/sshd_config ForwardX11默认是no,改为yes就可以了。
# vim /etc/sshd/sshd_config //修改ForwardX11为yes,其它不用动
ForwardX11 yes
# /etc/init.d/sshd restart //重启sshd即可
4.解决中文问题
找了 windows 里的宋体 simsun.ttc
上传到服务器 /usr/share/fonts/ 里
/usr/share/fonts/chinese/TrueType/simsun.ttc
安装这个 wkhtmltopdf 模块后,里面包含了 wkhtmltoimage 命令了!
5.测试脚本
xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltoimage "$@"
测试命令
./wkhtmltoimage.sh http://www.baidu.com baidu.jpg