const puppeteer = require('puppeteer');
// Launch browser (watch for memory leaks)
const browser = await puppeteer.launch({
headless: 'new',
args: ['--no-sandbox', '--disable-setuid-sandbox'],
});
const page = await browser.newPage();
await page.setContent(htmlContent, { waitUntil: 'networkidle0' });
const pdf = await page.pdf({
format: 'A4',
margin: { top: '1in', bottom: '1in', left: '0.75in', right: '0.75in' },
displayHeaderFooter: true,
headerTemplate: '<div style="font-size:10px">My Company</div>',
footerTemplate: '<div style="font-size:10px; text-align:center; width:100%">Page <span class="pageNumber"></span> of <span class="totalPages"></span></div>',
printBackground: true,
});
// Upload to S3 yourself
await s3.putObject({ Bucket: 'my-pdfs', Key: 'output.pdf', Body: pdf });
// Don't forget to close!
await page.close();
// And recycle browsers periodically to prevent memory leaks...