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

slimerjs-capture

v1.2.3

Published

Uses SlimerJS (headless Gecko/Firefox) to render an SVG or HTML buffer

Downloads

15

Readme

slimerjs-capture

A thin wrapper around SlimerJS (headless Firefox/Gecko) that exposes an API to a Node.js application for rendering a web page as a png file. Requires Node.js v0.12+.

Installation

$ npm install --save slimerjs-capture

Usage

const capturePng = require("slimerjs-capture").capturePng;

// ...
var buffer = fs.readFileSync("foo.html");
capturePng(buffer, "html", 640, 480, (err, result) => {
	if (err) return console.error(err);
	fs.writeFileSync("foo.png", result);
});

API

capturePng(buffer, extension, width, height, callback)

  • buffer => A Node.js Buffer containing the contents of the page to render
  • extension => The file extension, like "html" or "svg"
  • width, height => The width and height of the area to render, in pixels from the top left corner
  • callback => Called with a possible error and the output PNG as a Node.js Buffer

capturePngPages(buffer, extension, width, height, numPages, callback)

  • buffer => A Node.js Buffer containing the contents of the page to render
  • extension => The file extension, like "html" or "svg"
  • width, height => The width and height of the area to render, in pixels from the top left corner
  • numPages => The number of pages to capture. Pages are rectangular, nonoverlapping regions captured starting from the top of the page. For example, if height is 200, the first page will be from y=0 to y=200, and the second page will be from y=200 to y=400.
  • callback => Called with a possible error and the output PNG as an array of Node.js Buffers, one per page.

Using on Windows

This module has been tested to work on Windows 10. It should in principle work on any version of Windows supported by SlimerJS.

Note: If using on Windows, I have seen issues where running multiple jobs in parallel causes issues with file permissions. It is therefore recommended that you run only one slimerjs-capture job at a time.

Contributing and Future Work

PRs are welcome. This module intentionally does not have any fancy build systems or anything. It is intended to be run in Node without any preprocessing. Use ES5 syntax and follow the code style in the files you are editing (tab indentation and soft wraps). Run npm test and add new test cases for the feature you are contributing.

It would be easy to make this module support JPG or PDF output. See SlimerJS webpage doc page. I just didn't have the personal need when I made this module to support other output types. A PR is welcome.