此方法生成PDF类似于用一个无框的浏览器访问一个页面,然后将页面的内容打印成PDF,这样的话和我们浏览器自带的打印(ctrl+P)出来的效果一致。
需要先下载puppeteer库
npm install puppeteer --save
创建一个JS文件demo.js
/**
* 用node demo.js 'http://localhost:8081/#/printTemp'(需要打印的网页地址) 命令运行此文件即可生成PDF
* options里面可以取到命令调用时传过来的参数
*/
const puppeteer = require("puppeteer");
const options = process.argv;
var address;
(async () => {
if (options.length >= 3) {
address = options[2];
}
console.log(options);
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(
address, //
{ waitUntil: "networkidle2" }
);
await page.waitForSelector("#paper");
await page.pdf({
path: "a.pdf",
format: "a4",
printBackground: true,
"-webkit-print-color-adjust": "exact",
});
await browser.close();
})();
我们可以用其他后台语言例如java ,在后台调用api 执行 node demo.js xxx(网址) 的命令触发js文件里面的内容去生成pdf