Skip to content

Instantly share code, notes, and snippets.

@codesorter2015
Created December 27, 2019 09:27
Show Gist options
  • Select an option

  • Save codesorter2015/07bea7b896cdfd0780cb61678068b5cc to your computer and use it in GitHub Desktop.

Select an option

Save codesorter2015/07bea7b896cdfd0780cb61678068b5cc to your computer and use it in GitHub Desktop.

Revisions

  1. codesorter2015 created this gist Dec 27, 2019.
    28 changes: 28 additions & 0 deletions puppeteer_pdf.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,28 @@
    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();
    })();