Skip to content

fastone-open/docusaurus-docs-to-pdf

Repository files navigation

Docusaurus To PDF Converter

Introduction

This is a Node.js and Puppeteer-based command-line tool designed to capture and merge Docusaurus website documentation content into a single PDF file. It aims to automate documentation archiving, offline reading, or generating printable versions.

PDF example

You can find a sample PDF generated by this tool at doccusaurus.pdf in the repository. This provides a quick preview of the output.

Features

  • Full Site PDF Export: Exports all documentation pages from a Docusaurus site into a single, cohesive PDF file.
  • Concurrent Processing: Leverages Puppeteer's concurrency capabilities to speed up the page content fetching process.
  • Custom Cover Page: Supports adding a custom PDF cover page using either a URL or a local file path.
  • Automatic Table of Contents (TOC) Generation: Automatically generates a professional, clickable PDF table of contents with dot leaders based on the Docusaurus sidebar structure.
  • Navigable Internal Links: Rewrites all internal links within the documentation so they remain clickable and navigable in a PDF reader.
  • Custom CSS Injection: Supports injecting custom CSS styles directly into the generated PDF for fine-tuned layout control.
  • Link Rewriting: Allows rewriting site domains/URLs within hyperlinks to ensure cross-references work correctly across environments.
  • Configurable Margins: Supports adjusting PDF page margins via command-line arguments.

Installation

npm install -g docusaurus-docs-to-pdf
# or
yarn global add docusaurus-docs-to-pdf

Prerequisites

This tool relies on Puppeteer and requires a compatible Chrome/Chromium browser. If you encounter a "Could not find Chrome" error, you need to install the browser manually:

npx puppeteer browsers install chrome

Usage

Run the script from the command line and pass the appropriate arguments.

Command-Line Arguments

You can run docusaurus-docs-to-pdf -h to see the help message, or refer to the table below:

Argument Alias Description Required Default
--docs-url <url> -u The base URL of the Docusaurus documentation (e.g., "http://localhost:3000/docs/introduction") Yes -
--pdf-path <path> -o The output file path for the generated PDF (e.g., "output/my-docs.pdf") Yes -
--pdf-cover-image <pathOrUrl> -c The URL or local file path for the PDF cover image No -
--pdf-margin-mm <number> -m The margin size in millimeters to apply to all sides of the PDF pages No 10
--page-concurrency <number> -p The maximum number of concurrent browser pages to use for content fetching No 2x CPU cores
--css <style> -S Inject custom CSS styles directly. Can be used multiple times No -
--site-rewrite <from=to> -r Rewrite site domain in links (e.g., "http://localhost:3000=https://docs.example.com"). Can be used multiple times No -

Examples

Generate PDF with custom margins and concurrency

docusaurus-docs-to-pdf --docs-url http://localhost:3000/docs --pdf-path local-docs.pdf --pdf-margin-mm 20 --page-concurrency 10

Advanced: Inject custom CSS and rewrite links

docusaurus-docs-to-pdf --docs-url http://localhost:3000/docs \
  --pdf-path docs.pdf \
  --css "h1 { color: #2e8555; }" \
  --site-rewrite "http://localhost:3000=https://docs.example.com"

About

This is a Node.js and Puppeteer-based command-line tool designed to capture and merge Docusaurus website documentation content into a single PDF file. It aims to automate documentation archiving, offline reading, or generating printable versions.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors