wkhtmltoimage将html页面输出为jpg

说明:
本篇文章讲如何通过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%
(: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即可

“wkhtmltoimage将html页面输出为jpg”的一个回复

发表评论

邮箱地址不会被公开。 必填项已用*标注