npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@e8johan/vuepress-plugin-pdf-export

v1.4.0

Published

Vuepress plugin for exporting site as PDF

Readme

@e8johan/vuepress-plugin-pdf-export

Vuepress plugin for exporting site as PDF

This is a fork of @snowdog/vuepress-plugin-pdf-export. All changes are available in a PR to the upstream repository. Use this package at your own peril.

Features

  • Exports whole Vuepress based page as a single PDF file
  • Applies styles to hide UI elements like navigation or sidebar
  • Doesn't require other runtimes like Java to operate
  • Designed to work well in headless environments like CI runners
  • Can filter and sort pages.
  • Can generate a rudimentary table of contents
  • Can insert a front page (or front pages)

Config options

  • theme - theme name (default @vuepress/default)
  • sorter - function for changing pages order (default false)
  • filter - function for filtering the pages (default false)
  • tocLevel - function returning a TOC level for the pages, i.e. zero or one (default false)
  • frontPage - path to a pdf to inject first in the document. Typically a front page, but can be multiple pages too.
  • outputFileName - name of output file (default site.pdf)
  • puppeteerLaunchOptions - Puppeteer launch options object (default {})
  • pageOptions - Puppeteer page formatting options object (default {format: 'A4'})

Usage

Using this plugin:

// in .vuepress/config.js
module.exports = {
  plugins: ['@snowdog/vuepress-plugin-pdf-export']
}

Then run:

vuepress export [path/to/your/docs]

The filter function

The filter function takes a pages object and returns true or false. Only pages where the function returns true are rendered to the pdf. The function is invoked as follows:

exportPages = exportPages.filter(filter);

The sorter function

The sorter function takes two pages objects and return -1, 0, or 1 to indicate the sort order. The function is invoked as follows:

exportPages = exportPages.sort(sorter)

The sorting happens after the filtering, so you only have to handle the pages that pass your filter function.

The tocLevel function

The tocLevel function takes a pages object returns a TOC level, either zero (0, top level) or one (1, secondary level), or minus one (-1, leave out of TOC). If the entire TOC is empty, e.g. every page is on level -1, no TOC is rendered.

The TOC generation is invoked after the filtering and sorting. So the list of pages can be assumed to be filtered.

Tips

To run this plugin on Gitlab CI you may want to run Chrome with no-sandbox flag. Details

module.exports = {
  plugins: [
    ['@snowdog/vuepress-plugin-pdf-export', {
      puppeteerLaunchOptions: {
        args: ['--no-sandbox', '--disable-setuid-sandbox']
      }
    }]
  ]
}

Known Issues

  • At the moment, pdfjs cannot inject footers on the rendered pages, and the individual pages do not know their page number, so the page numbers in the TOC relates to the page numbers in the PDF, but no page number is rendered on the actual PDF pages.