Puppeteer (Headless Chrome Node API)-based rendering solution.
Videos & Tweets:
- Demo https://www.youtube.com/watch?v=n4sRp3qe_1Y
clipSelector
demo https://www.youtube.com/watch?v=wYCrJu-Wy2E- CJK fonts support https://twitter.com/cheeaun/status/902340897433501696
- Emoji support https://twitter.com/cheeaun/status/903492052452728832
Do NOT use this for production use-cases.
This is just a demo site of what cool things that Puppeteer
can do. Under any circumstances, this site may be down any time or be heavily rate-limited to prevent abuse.
Please check out what Puppeteer can do for your own use case and host on your own servers.
The API can perform 3 actions:
- Screenshot - take a screenshot of the web page
- Render - render and serialize a HTML copy of the web page
- PDF - generate a PDF of the web page
URL
- the URL with encoded pathname
, search
and hash
.
Global parameters:
width
- width of viewport/screenshot (default:1024
)height
- height of viewport/screenshot (default:768
)
/screenshot/{URL}
...or
/{URL}
Parameters:
thumbWidth
- width of thumbnail, respecting aspect ratio (no default, has to be smaller thanwidth
)fullPage
- takes a screenshot of the full scrollable page (default:false
). If the page is too long, it may time out.clipSelector
- CSS selector of element to be clipped (no default). E.g.:.weather-forecast
.
/render/{URL}
Notes:
script
tags exceptJSON-LD
will be removedlink[rel=import]
tags will be removed- HTML comments will be removed
base
tag will be added for loading relative resources- Elements with absolute paths like
src="/xxx"
orhref="/xxx"
will be prepended with the origin URL.
Parameters: None
/pdf/{URL}
Parameters:
format
: Paper format that Puppeteer supports. E.g.:Letter
,Legal
,A4
, etc. (default:Letter
)pageRanges
: Paper ranges to print. E.g.,1-5
,8
,11-13
(default all pages)
- Node.js
- Docker
For local Chromium install:
npm install
npm start
- Load
localhost:3000
For Docker-based install:
docker build . -t puppet
docker run -p 8080:3000 puppet
- Load
localhost:8080
Block list from Prerender.
For version 1.0, this uses cheeaun/puppeteer
Docker image.
For version 2.0, this uses some parts from Zeit's now-examples: misc-screenshot.
Inspired by zenato/puppeteer
, puppeteer-renderer
and Rendertron.