ubuntu16 安装 phantomjs 给网站截图

安装无头浏览器
apt install phantomjs

模拟窗口终端

运行phantomjs报错

QXcbConnection: Could not connect to display

PhantomJS has crashed. Please read the bug reporting guide at

<http://phantomjs.org/bug-reporting.html> and file a bug report.

Aborted

因为无头浏览器需要窗口渲染,使用QT_QPA_PLATFORM=offscreen虽然可以,但是却会无法渲染字体。
所以需要安装xvfb,使用xvfb-run来运行phantomjs

apt install xvfb

安装/上传字体

mkdir /usr/share/fonts/xpfonts

然后用scp把windows的字体上传上去

simfang.ttf 仿宋体
simhei.ttf 黑体
simkai.ttf 楷体
simsun.ttf 宋体和新宋体,原文件名simsun.ttc
tahoma.ttf tahoma字体
tahomabd.ttf tahoma字体的粗体形式
verdana.ttf verdana字体
verdanab.ttf verdana字体的粗体形式
verdanai.ttf verdana字体的斜体形式
verdanaz.ttf verdana字体的粗体+斜体形式

我只传了前5个。就可以显示中文了。

更新字体缓存

cd xpfonts
mkfontscale
mkfontdir
fc-cache

截图
新建一个snapshot.js文件,内容为

var page = require('webpage').create(),
    system = require('system'),
    address, filename;

if (system.args.length !== 3) {
    console.log('Usage: loadspeed.js <some URL> <Filename>');
    phantom.exit();

}

address = system.args[1];
filename = system.args[2];

page.open(address, function (status) {
    if (status !== 'success') {
        console.log('FAIL to load the address');
    } else {
        window.setTimeout(function () {
            page.render(filename);
            phantom.exit();
        }, 200);
    }
});

大功告成,运行xvfb-run phantomjs snapshot.js http://www.baidu.com baidu1.jpg
然后查看效果即可

鄂ICP备14007840号-1