puppeteer

Posted by neverset on December 26, 2020

A Node library which provides a high-level API to control headless Chrome or Chromium over the DevTools Protocol

setup environment

#npm install puppeteer

usage

build API

#an example api to convert webpage to pdf
#for example: http://localhost:3000/pdf?target=https://google.com
const express = require("express");
const puppeteer = require("puppeteer");
const app = express();

app.get("/pdf", async (req, res) => {
    const url = req.query.target;

    const browser = await puppeteer.launch({
        headless: true
    });

    const webPage = await browser.newPage();

    await webPage.goto(url, {
        waitUntil: "networkidle0"
    });
    
    const pdf = await webPage.pdf({
        printBackground: true,
        format: "Letter",
        margin: {
            top: "20px",
            bottom: "40px",
            left: "20px",
            right: "20px"
        }
    });

    await browser.close();

    res.contentType("application/pdf");
    res.send(pdf);
})

app.listen(3000, () => {
    console.log("Server started");
});