Java Html转pdf实战 - 简书年尾手头没啥事,干起了打杂工作,最近帮忙解决后端项目里一个html批量转pdf速度慢的问题,项目里用到的转换工具是 wkhtmltopdf ,这货转单个html还好,批量转速...https://www.jianshu.com/p/d07bca50daed?from=groupmessage
年尾手头没啥事,干起了打杂工作,最近帮忙解决后端项目里一个html批量转pdf速度慢的问题,项目里用到的转换工具是 wkhtmltopdf ,这货转单个html还好,批量转速度就慢了。几经摸索(各种baidu、google......)各种测试后,终于找到个性能不错的工具 —— phantomjs
Phantomjs安装
官网地址:PhantomJS - Scriptable Headless Browser
下载地址:Download PhantomJS
选择合适自己系统的版本,解压就行,目录结构如下图(mac为例)
新建 html2pdf.js 文件,把下面代码拷进去,文件最好放在phantomjs的bin目录下
var page = require('webpage').create();
var system = require('system');读取命令行参数,也就是js文件路径。
if (system.args.length === 1) {console.log('Usage: loadspeed.js <some URL>');
//这行代码很重要。凡是结束必须调用。否则phantomjs不会停止phantom.exit();
}
page.settings.loadImages = true; //加载图片
page.settings.resourceTimeout = 30000;//超过10秒放弃加载
//截图设置,
//page.viewportSize = {
// width: 1000,
// height: 3000
//};
var address = system.args[1];
page.open(address, function(status) {function checkReadyState() {//等待加载完成将页面生成pdfsetTimeout(function () {var readyState = page.evaluate(function () {return document.readyState;});if ("complete" === readyState) {page.paperSize = { width:'1500px',height:'2000px',orientation: 'portrait',border: '1cm' };var timestamp = Date.parse(new Date());var pdfname = 'HT_'+timestamp + Math.floor(Math.random()*1000000);var outpathstr = "/Users/zachary/Downloads/phantomjs2/bin/"+pdfname+".pdf";page.render(outpathstr);//console.log就是传输回去的内容。console.log("生成成功");console.log("$"+outpathstr+"$");phantom.exit(); } else {checkReadyState();}},1000);}checkReadyState();
});
Phantomjs使用
打开终端,进入phantomjs的bin目录,执行命令phantomjs html2pdf.js "网址或html文件路径"
,注意空格
image.png
生成路径在 html2pdf.js 文件里设置,可以看到bin目录下生成pdf成功
打开看下效果,相当Nice ! ! !