Skip to content

rmehner/bits-to-dead-trees

Repository files navigation

bits-to-dead-trees

🖥 -> 🌲 -> 📄 -> 🖨

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.

Depfu

Setup

Requirements

  1. Node 20+
  2. npm

Installation

  1. git checkout https://github.com/rmehner/bits-to-dead-trees
  2. cd bits-to-dead-trees
  3. npm install
  4. npm start to start the server. It'll listen to port 8000 on localhost by default.

Development

  • After updating the playwright dependency, you should run npm 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

Server

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": {}
}

The response is the PDF file.

Docker

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