import puppeteer from 'puppeteer'; import fs from 'fs'; import moment from 'moment'; import PDFMerger from 'pdf-merger-js'; let [ url, title = '', subtitle = '', date = moment().format('YYYY-MM-DD') ] = process.argv.slice(2); const path = './pdf'; if (!fs.existsSync(path)) fs.mkdirSync(path); let browser; try{ browser = await puppeteer.launch({ headless: true, args: [ "--disable-gpu", "--disable-dev-shm-usage", "--disable-setuid-sandbox", "--no-sandbox", ] }); const page = await browser.newPage(); page.setDefaultNavigationTimeout(0); await page.goto(url); await Promise.any([ page.mainFrame().waitForNavigation({waitUntil: 'networkidle0'}), new Promise(resolve => setTimeout(resolve,1000)) ]); if (!title) title = await (await page.waitForSelector('h1')).evaluate(el => el.textContent); if (!subtitle) subtitle = await (await page.waitForSelector('h2')).evaluate(el => el.textContent); console.log(title,subtitle); await page.emulateMediaType('screen'); await page.addStyleTag({content: ` .hidden-print { display: none !important; } *:not(code, .code > *){ color: #000 !important; } `}); const pages = await page.pdf({ //path: `${path}/${date}_${title}_pages.pdf`, format: 'A4', margin: { top: '20mm', bottom: '20mm', left: '12mm', right: '12mm' }, displayHeaderFooter: true, headerTemplate: `