1.安装phantomjs
下载页面
一般解压就能用
2.页面准备
略过,页面自己画或者找网上的
3.phantomjs脚本
var page = require('webpage').create(),
system = require('system')
, args = system.args
, templatePath = args.length > 1 ? args[1] : '/tmp/export' //模板文件地址
, filename = args.length > 2 ? args[2] : 'tmp.pdf';
if (args.length < 3) {
console.log('参数不足');
phantom.exit();
}
var width = 1024;
var height = 768;
page.viewportSize = {
width: width,
height: height
};
page.paperSize = {
format: 'A4', //A4 纸张 21*29.7cm
// width:"1024px",
// height:"768px",
orientation: 'portrait',
// margin: '0.84cm'
};
page.zoomFactor = 0.5;//放大比例
page.settings.loadImages = true;
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36';
page.open(templatePath, function (status) {
if (status == 'success') {
console.log('load html ' + templatePath + ' success');
window.setTimeout(function () {
page.render(filename);
console.log('create '+filename+ ' success');
phantom.exit();
}, 1000);
} else {
console.log('faild');
}
})
核心
var page = require('webpage').create()
system.args是脚本命令传参的参数数组
page.open(templatePath, function (status) 打开一个链接(可以是本地 file:///xxxxxx.html),并在打开后回调
page.render(filename);截图并生成文件
phantom.exit();退出,一定要退出,不退出进程一直在
4.执行命令
cmd
bin目录下 -> phantomjs 脚本.js html文件路径 需要生成的文件名
shell
bin目录下 phantomjs 给权限 chmod 777 phantomjs 然后
phantomjs 脚本.js html文件路径 需要生成的文件名
如果是代码调用,尽可能使用全路径因为环境变量没加载进来
5.注意事项
- 自己编写的html中如果包含js,检查js语法不能使用es6及以上,不支持会报错
- 截图后文件是pdf可以生成pdf,但是pdf是有页码的,如果不想拦腰截断页面,最好自己控制好高度
- windows预览和linux是完全不一样的,windows调好了linux直接css大变样
- liunx使用时如果需要中文得安装字体,一般黑体就行。安装宋体报错,原因未知。centos7,8一样的错误
- pdf文件名不能有空格,尽可能给正常的英文名如uuid
6.参考
老规矩直接上代码
案例下载
举例:cd到pdf目录
D:/Program Files/phantomjs-2.1.1-windows/bin/phantomjs printpdf.js template.html test.pdf