html调用pdf模板生成新文件,调用Phantomjs,通过html生成pdf

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值