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 🙏

© 2026 – Pkg Stats / Ryan Hefner

ep_pdf_export_print

v1.0.7

Published

One-click PDF export for Etherpad. Adds a "PDF (print)" entry to the Import/Export menu that renders the pad's clean HTML export through the user's OWN browser print engine (Save as PDF). No server setup, no Chromium, no dependencies — install from the ad

Downloads

901

Readme

ep_pdf_export_print

One-click, high-quality PDF export for Etherpad — no server setup required.

Etherpad's built-in PDF export uses a hand-rolled pdfkit renderer that overlaps text, drops text colours and ignores images that aren't inline base64.

This plugin sidesteps the server completely. It adds a “PDF (print)” entry to the Import/Export menu that loads the pad's clean HTML export into a hidden iframe and triggers your own browser's print engine. You then pick “Save as PDF”. Because a real browser does the rendering, images, colours and alignment all come out correct.

Why you probably want this one

| | ep_pdf_export_print (this) | ep_pdf_export_chromium | |---|---|---| | Install from admin panel | ✅ just works | ❌ also needs Chromium in the image | | Server dependencies | none | a system Chromium (~300 MB) | | Rendering engine | the user's own browser | headless Chromium on the server | | Output | browser "Save as PDF" dialog | direct file download / automatable |

If you can't (or don't want to) modify your Docker image, this is the plugin to use. Choose ep_pdf_export_chromium only when you need fully automated, server-side PDF generation and you control the image.

Usage

Open a pad, then choose Import/Export → PDF (print). Your browser's own print dialog opens with the pad already rendered:

The browser print dialog opened by the "PDF (print)" menu entry

From here you can either print it on a real printer, or set the Destination to “Save as PDF” and click Save to download a PDF file.

Install

From the Etherpad admin panel: Plugins → search ep_pdf_export_print → Install. That's it. A PDF (print) entry appears in the Import/Export menu.

Or from the command line:

pnpm run plugins i ep_pdf_export_print

You must also install these companion plugins — this plugin does not render images or tables by itself, so without them those parts of your pads come out broken in the PDF:

(Plain text, colours and alignment work without them.) See Requirements & dependencies below for the why.

Requirements & dependencies

  • Etherpad (peer dependency ep_etherpad-lite). Nothing else is needed for the export itself to run — but images and tables need the companion plugins below to actually appear in the PDF.
  • No server-side dependencies. Nothing to install in your Docker image, no Chromium, no LibreOffice. Pure client-side.
  • A modern browser (uses fetch, an iframe srcdoc, and the print API — every current browser qualifies).
  • Works with or without a menu-bar plugin: it auto-detects ep_file_menu_toolbar / ep_aa_file_menu_toolbar and otherwise falls back to the stock Import/Export popup. Neither is required.

Companion plugins for images & tables — install these, or your PDFs will look broken

The PDF is built from Etherpad's HTML export. Core Etherpad cannot export images or rich tables on its own, so if your pads contain images or tables and these plugins are not installed, those elements will be missing or mangled in the PDF. This is not optional polish — without them the output looks broken. If your pads use images or tables, you should install:

  • Imagesep_images_extended_v2 — use this one. It's the fork with the HTML/DOCX export bugs fixed; the original ep_images_extended has broken export and will leave images out of the PDF.
  • Tablesep_data_tables for the table feature plus ep_table_export — without ep_table_export your tables will not render in the export at all.

The plugin still runs without them, but anyone exporting a pad that has images or tables will get a broken-looking PDF — so install them.

How it works

  1. Reuses the URL of Etherpad's built-in Export as HTML link (so read-only ids and base paths are handled for free).
  2. Fetches that HTML (the export route serves it as a download, so it is fetched and re-rendered rather than navigated to) and writes it into an off-screen iframe via srcdoc, with a <base href> so relative images resolve and a clean <title> so the saved file is named after the pad.
  3. Calls iframe.contentWindow.print() so only the pad content prints, not the Etherpad UI.

No data leaves the user's browser beyond the normal same-origin HTML export request.

License

Apache-2.0 © Ivan Forkaliuk