🖥 -> 🌲 -> 📄 -> 🖨
Exposes a web server with a single endpoint to take in a URL and create a PDF out of that. It's using Playwright in the background for this.
- Node 20+
- npm
git checkout https://github.com/rmehner/bits-to-dead-trees
cd bits-to-dead-trees
npm install
npm start
to start the server. It'll listen to port 8000 on localhost by default.
- After updating the
playwright
dependency, you should runnpm run update-schemas
to make sure that the server knows about new PDF options - Use
npm run start:dev
to start everything in dev mode with build watch and friends
The server exposes the /pdf
endpoint that listens to a POST request and expects a JSON body:
{
"url": "https://your-target-url.com/site/you/want/a/pdf/of",
"pdfOptions": {},
"gotoOptions": {},
"browserContextOptions": {}
}
pdfOptions
are the options for thepdf
call in Playwright: https://playwright.dev/docs/api/class-page#page-pdf.gotoOptions
are the options for thegoto
method in Playwright: https://playwright.dev/docs/api/class-page#page-goto- if you don't pass anything, we default to a timeout of 60000 and wait for
networkidle
- if you don't pass anything, we default to a timeout of 60000 and wait for
browserContextOptions
are the options for the browser context in Playwright: https://playwright.dev/docs/api/class-browser#browser-new-context- if you don't pass anything, we default to set
ignoreHTTPSErrors
totrue
- if you don't pass anything, we default to set
The response is the PDF file.
Versions are automatically build as Docker images and are available on GitHub's package registry
If you want to use it internally with docker-compose, this should give you a good idea to start:
services:
pdf:
image: ghcr.io/rmehner/bits-to-dead-trees:v2.19.2
ports:
- 8000:8000