Percollate is a command-line tool to turn web pages as beautifully formatted PDFs.
You can install percollate
globally:
# using npm
npm install -g percollate
# using yarn
yarn global add percollate
To keep the package up-to-date, you can run:
# using npm, upgrading is the same command as installing
npm install -g percollate
# yarn has a separate command
yarn global upgrade --latest percollate
π‘ Run
percollate --help
for a list of available commands. For a particular command,percollate <command> --help
lists all available options.
Command | What it does |
---|---|
percollate pdf |
Bundles one or more web pages into a PDF |
percollate epub |
Not implemented yet |
percollate html |
Not implemented yet |
The pdf
, epub
, and html
commands have these options:
Option | What it does |
---|---|
-o, --output |
(Required) The path of the resulting bundle |
--template |
Path to a custom HTML template |
--style |
Path to a custom CSS |
To transform a single web page to PDF:
percollate pdf --output some.pdf https://example.com
To bundle several web pages into a single PDF, specify them as separate arguments to the command:
percollate pdf --output some.pdf https://example.com/page1 https://example.com/page2
You can use common Unix commands and keep the list of URLs in a newline-delimited text file:
cat urls.txt | xargs percollate pdf --output some.pdf
β οΈ TODO add example here
β οΈ TODO add example here
β οΈ TODO add example here
- Fetch the page(s) using
got
- Enhance the DOM using
jsdom
- Pass the DOM through
mozilla/readability
to strip unnecessary elements - Apply the HTML template and the print stylesheet to the resulting HTML
- Use
puppeteer
to generate a PDF from the page
On some Linux machines you'll need to install a few more Chrome dependencies before percollate
works correctly. (Thanks to @ptica for sorting it out)
Here are some other projects to check out if you're interested in building books using the browser: