const fse = require('fs-extra'); const puppeteer = require('puppeteer'); const getPdf = (page) => { let url = await page.url(); return page.evaluate(url => { return new Promise(async resolve => { const reader = new FileReader(); const response = await window.fetch(url, { credentials: 'same-origin', method: 'POST' }); const data = await response.blob(); reader.readAsBinaryString(data); reader.onload = () => resolve(reader.result); reader.onerror = () => reject('Error occurred while reading binary string'); }); }, url); } (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('PDF URL', {waitUntil: 'networkidle2'}); const pdfString = await getPdf(page); const pdfData = Buffer.from(pdfString, 'binary'); fse.writeFileSync('./sample.pdf', pdfData); await browser.close(); })();