Puppeteer (Chrome headless node API) based web page renderer.
Useful server side rendering through proxy. Outputs HTML, PDF and screenshots as PNG.
You can run Chromium or docker.
docker run -d --name renderer -p 8080:3000 zenato/puppeteer-renderer
npm install
npm start
(service port: 3000)
docker build -t local/puppeteer-renderer .
docker run -d --name renderer -p 8080:3000 local/puppeteer-renderer
Input url http://localhost:{port}/?url=https://www.google.com
If you can see html code, server works fine.
When starting npm start
or docker container you can customize puppeteer using environment variables.
IGNORE_HTTPS_ERRORS=true
- Ignores HTTPS errorsPUPPETEER_ARGS='--host-rules=MAP localhost yourproxy'
- Ads additional args that will be passed to puppeteer. Supports multiple arguments.
If you have active service, set proxy configuration with middleware. See puppeteer-renderer-middleware for express.
const renderer = require('puppeteer-renderer-middleware');
const app = express();
app.use(renderer({
url: 'http://installed-your-puppeteer-renderer-url',
// userAgentPattern: /My-Custom-Agent/i,
// excludeUrlPattern: /*.html$/i
// timeout: 30 * 1000,
}));
// your service logics..
app.listen(8080);
Name | Required | Value | Description | Usage |
---|---|---|---|---|
url |
yes | Target URL | http://puppeteer-renderer?url=http://www.google.com |
|
type |
pdf or screenshot |
Rendering another type. | http://puppeteer-renderer?url=http://www.google.com&type=pdf&margin.top=10px |
|
animationTimeout |
Timeout in milliseconds | Waits for animations to finish before taking the screenshot. Only applicable to type screenshot |
http://puppeteer-renderer?url=http://www.google.com&type=screenshot&animationTimeout=3000 |
|
(Extra options) | Extra options (see puppeteer API doc) | http://puppeteer-renderer?url=http://www.google.com&type=pdf&scale=2 |
Generated PDFs are returned with a Content-disposition
header requesting the browser to download the file instead of showing it.
The file name is generated from the URL rendered:
URL | Filename |
---|---|
https://www.example.com/ |
www.example.com.pdf |
https://www.example.com:80/ |
www.example.com.pdf |
https://www.example.com/resource |
resource.pdf |
https://www.example.com/resource.extension |
resource.pdf |
https://www.example.com/path/ |
path.pdf |
https://www.example.com/path/to/ |
pathto.pdf |
https://www.example.com/path/to/resource |
resource.pdf |
https://www.example.com/path/to/resource.ext |
resource.pdf |
Copyright (c) 2017-present, Yeongjin Lee