Files
pdfy/README.md
2026-06-19 21:17:16 +02:00

2.8 KiB

pdfy

Convert web articles to PDF using the Reader View Chrome extension and headless Chrome (Puppeteer).

Features

  • Extracts article content via Mozilla Readability
  • Renders using Reader View for clean typography
  • Supports all Reader View themes: light, dark, sepia, groove-dark, solarized-light, solarized-dark, nord-light, nord-dark
  • Custom CSS injection
  • Syntax highlighting via highlight.js
  • Automatic reading time estimation
  • Configurable extension preferences

Installation

npm install

The Reader View extension is downloaded and extracted automatically on first run.

Usage

node src/index.js --help
Usage: pdfy [options] <url>

Arguments:
  url                      URL of the article to convert

Options:
  -t, --theme <theme>      Reader View theme (light, dark, sepia, groove-dark, solarized-light, solarized-dark, nord-light, nord-dark)
  -c, --css <path>         path to custom CSS file
  --config <path>          path to config file (.pdfyrc, .pdfyrc.json, pdfy.config.js)
  -p, --prefs <path>       path to extension preferences JSON
  -o, --output <path>      output file path (default: ./output/<title>.pdf)
  -l, --log-level <level>  logging level (fatal, error, warn, info, debug)
  -h, --help               display help for command

Configuration

pdfy automatically discovers a config file in the current directory. Supported formats:

  • .pdfyrc (JSON)
  • .pdfyrc.json (JSON)
  • pdfy.config.js (ESM module exporting a default object)

Example .pdfyrc:

{
  "theme": "dark",
  "css": "config/rules.css",
  "prefs": "config/reader-view-preferences.json",
  "output": "./output/article.pdf"
}

Example pdfy.config.js:

export default {
  theme: 'dark',
  css: 'config/rules.css',
  prefs: 'config/reader-view-preferences.json',
  output: './output/article.pdf'
}

CLI flags always override config file values. Use --config <path> to specify a custom config file location.

Examples

node src/index.js https://example.com/article
node src/index.js https://example.com/article --theme dark --css config/rules.css
node src/index.js https://example.com/article --prefs config/reader-view-preferences.json
node src/index.js https://example.com/article --config .pdfyrc
npm start -- https://example.com/article --theme dark --css config/rules.css

Running tests

npm test

The test script reads URLs from src/test/test.txt and runs multiple scenarios (default, dark, sepia, custom CSS, etc.).

Credits