Phantomjs安装
官网地址:http://phantomjs.org
下载地址:http://phantomjs.org/download.html
下载完成后 将压缩包进行解压
在bin目录下 新建一个html2pdf.js文件
html2pdf.js 代码如下 注意更换你自己要生成的pdf路径
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() {//等待加载完成将页面生成pdf
setTimeout(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 = "D:/software/file/"+pdfname+".pdf";
page.render(outpathstr);
//console.log就是传输回去的内容。
console.log("success!");
console.log("$"+outpathstr+"$");
phantom.exit();
} else {
checkReadyState();
}
},1000);
}
checkReadyState();
});
生成方式 一:
打开终端,进入phantomjs的bin目录,执行命令
phantomjs html2pdf.js "网址或html文件路径"
,注意空格 如:phantomjs html2pdf.js "
https://www.baidu.com/"
方式二 采用Java
首先创建一个工具类
注意:更换成你自己的文件路径
public static String parseHtml2Pdf(String url) throws IOException {
System.out.println(url);
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("D:/software/phantomjs-2.1.1-windows/bin/phantomjs D:/software/phantomjs-2.1.1-windows/bin/html2pdf.js "+url);
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuffer sbf = new StringBuffer();
String tmp = "";
while ((tmp = br.readLine()) != null) {
sbf.append(tmp);
}
String resultstr = sbf.toString();
System.out.println("resultstr:"+resultstr);
String[] arr = resultstr.split("\\$");
String result = "";
for(String s : arr){
if(s.endsWith("pdf"))result = s;
}
return result;
}
测试代码
public static void main(String[] args) throws IOException {
long start = System.currentTimeMillis();
String result = Html2PdfUtils.parseHtml2Pdf("https://www.baudu.com");
long all = System.currentTimeMillis()- start;
System.out.println("pdf生成地址:"+result+",用时:"+all/1000+"秒");
}