说明:
本篇文章讲如何通过wkhtmltoimage将html页面输出成jpg以及secureCRT ssh到这台机子出现Gtk-WARNING **: cannot open display:如何解决。
实现:
1.下载wkhtmltoimage
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%
(
因为我是用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即可
牛逼,这在找这个,博主运维高手