功能来源于客户需求。客户有需求想把班级内所有学生的错题本生成pdf文档下载下来... 目前没有做这个功能,只有页面,还好chrome浏览器有保存pdf的功能,但是一想到这么多的学生,这么多的学科、以及这么多的参数...
还是自动的好.
puppeteer
来访问地址,然后把文档生成下载下来。就是这么简单,至于puppeteer
是个啥.. 想知道的可以去百度,其实就是chrome的浏览器内核。
async
puppeteer
`这里简单带一嘴安装,之前安装都是用puppeteer-core
,因为浏览器好大,有200多M,不想下载,自己又有安装的,这里提供下不用下载就可以安装puppeteer
的记录。
npm config set puppeteer_skip_chromium_download = 1
设置好后,就可以npm install puppeteer
啦,记得使用的时候指定下本地chrome的地址哦。
var puppeteer = require('puppeteer');
var {URL,URLSearchParams} = require('url');
var async = require('async');
async function createPdf(pageUrl,cb,folderName){
let urlObj = new URL(pageUrl);
let className = urlObj.searchParams.get('className');
let realName = urlObj.searchParams.get('realName');
let subjectId = urlObj.searchParams.get('subjectId');
console.log(pageUrl);
const browser = await puppeteer.launch({
//指定本地chrome地址
executablePath : 'C:/Users/Administrator/AppData/Local/Google/Chrome/Application/chrome.exe'
});
const page = await browser.newPage();
await page.goto(pageUrl, {waitUntil: 'networkidle2'});
await page.waitFor(5000);
await page.emulateMedia('screen');
await page.pdf({
path: `./pdf/${folderName}/${className}-${realName}-错题本.pdf`,
format: 'A4',
printBackground : true
});
await browser.close();
cb();
}
function start (urljson,folderName,callback){
async.mapLimit(urljson,1,function(item,cb){
createPdf(item,cb,folderName);
},function(){
console.log('over')
callback();
})
}
module.exports = start;
别的不说,就单说时间,最起码得省下了好几个小时.. 关键是手动点还累啊
转载请注明出处: https://chrunlee.cn/article/chrome-nodejs-pdf.html