最近由于项目的需要找到了这个工具,网上的介绍的文章并不是很多,而且描述得也不是太清楚,所以写这篇文做一下整理。
html2image的简单介绍:
html2image是一个在unix下截取html页面的内容生成图片的工具,可以截取静态和动态的(即通过javascript代码执行后生成的)html页面。
只需在命令行输入一条执行命令就可以截下任意的html页面,方便,易用。目前支持的格式有jpg,png和bmp三种格式。
如果要使用更多的功能则需要付费,比如对firefox3的支持和对图片的压缩质量的控制。
详细的内容可以查阅这个网址:http://www.guangmingsoft.net/htmlsnapshot/html2image.htm
关于如何使用html2image:
1. 首先,先获得这个html2image的工具
下载地址:http://www.guangmingsoft.net/htmlsnapshot/html2image.i386.tar.gz
下载完毕后解压到某个路径下,例如/usr/local/html2image/
2. 安装xserver
这里使用apt工具包进行查找和安装
(1)查找xserver。首先在命令行输入以下命令
输入:#apt-cache search xserver
结果:xorg-x11-server-Xorg - Xorg X server
(2)安装xserver,输入以下命令
输入:#apt-get install xorg-x11-server-Xorg
结果:安装的信息,这里省略
(3)启动Xvfb。这个实际上就是将xserver微内核启动到内存中。输入以下命令
输入:
export LD_LIBRARY_PATH=/usr/local/html2image/
/usr/local/html2image/Xvfb :1 -screen 0 640x480x24 -nolisten tcp -audit 4 -auth X1.cfg
结果:
一开始应该会启动失败,出现的错误可能是:"error opening security policy file /usr/X11R6/lib/X11/xserver/SecurityPolicy"。这个错误是因为找不到/usr/X11R6/lib/X11/xserver/SecurityPolicy路径下的SecurityPolicy这个文件,所以我们现在首先要做的就是先创建一个这样的目录结构/usr/X11R6/lib/X11,然后查找xserver安装目录的位置,通过定位SecurityPolicy可以找到xserver的安装目录,输入以下命令:
输入:locate SecurityPolicy
结果:/usr/lib/xserver/SecurityPolicy
以上是可能的结果,可能由于xserver的安装路径的不同而不同。
在刚创建的 /usr/X11R6/lib/X11下创建一个软链接,命令如下:
输入:ln -s /usr/X11R6/lib/X11/xserver xserver
这样的话就不会再出现上面那个错误了。
可能出现的其他错误:"Could not init font path element /usr/X11R6/lib/X11/fonts/CID/"
像这种是找不到字体,可以忽略,如果网页中可能会用到这些字体时再去安装字体库就可以了,不过这里可能需要安装一个中文字库,所以在解决了上面的那个错误后我们再执行以下的操作:
输入:#apt-cache search fonts
结果:会有多条结果
查找"fonts-chinese"这条结果并键下命令:
输入:#apt-get install fonts-chinese
结果:安装信息,省略
再次启动Xvfb,这里需要说明的是export LD_LIBRARY_PATH=/usr/local/html2image/一定要有,所以最好是写个shell脚本来执行,启动Xvfb的shell脚本可以是下面的内容:
export LD_LIBRARY_PATH=/usr/local/html2image/
/usr/local/html2image/Xvfb :1 -screen 0 640x480x24 -nolisten tcp -audit 4 -auth X1.cfg &
直接执行脚本就可以了
PS:此命令只需要执行一次就可以了,关闭该xserver的方式就是直接kill
(4)调用html2image的转换命令
我还是使用了脚本,内容如下:
export LD_LIBRARY_PATH=/usr/local/html2image/
cd /usr/local/html2image/
./html2image $1 $2
注意:脚本的第二行我使用了cd命令是因为我发现执行html2image一定要在安装html2image的目录下,否则程序会停住不执行,我对unix不熟,所以不知道是为何,所以我才在脚本里加上此句保证命令顺利的执行。
脚本中最后一行就是执行转换的命令语句:
$1表示URL,$2表示图片的本地保存路径
比如我要将www.google.com保存在/usr/local/images/google.jpg,那么就输入命令
./html2image http://www.google.com /usr/local/images/google.jpg
这样就会保存到指定的目录下了,URL也可以直接访问本地文件,比如这样:
./html2image file:///urs/local/test/test.html /usr/local/images/test.png
这样就可以将本地的test.html页面转换为图片了
以上是我研究后的使用心得,希望对需要的人有帮助!