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

@vmprint/context-pdf-lite

v1.0.2

Published

Lightweight PDF rendering context for VMPrint, powered by jsPDF.

Readme

@vmprint/context-pdf-lite

A lightweight PDF rendering context powered by jsPDF, designed for embeddable and browser-friendly PDF output.

Why This Exists

The standard @vmprint/context-pdf uses PDFKit, which requires a substantial font processing stack and relies on node-specific buffers in some places, leading to a larger footprint. context-pdf-lite provides an alternative for edge and browser environments where binary font embedding is unnecessary or bundle size is highly constrained.

When paired with @vmprint/standard-fonts, this creates a complete end-to-end VMPrint rendering stack weighing only a fraction of the full node-based alternative.

Limitations

  • Less Optimal Font Subsetting: Custom fonts (.ttf, .otf, .woff) are fully supported by this context. However, the underlying font subsetting mechanism is less optimal than the standard @vmprint/context-pdf stack. When heavily embedding custom fonts, you may encounter larger output file sizes or higher memory usage. (Note: this limitation does not apply if you pair the context with @vmprint/standard-fonts, which completely sidesteps font embedding).

Basic Usage

import { LayoutEngine, Renderer, toLayoutConfig, createEngineRuntime } from '@vmprint/engine';
import { StandardFontManager } from '@vmprint/standard-fonts';
import { PdfLiteContext } from '@vmprint/context-pdf-lite';

// Setup engine with standard fonts
const runtime = createEngineRuntime({ fontManager: new StandardFontManager() });
// Build layout configuration from DocumentInput JSON 
const config = toLayoutConfig(documentInput);
const engine = new LayoutEngine(config, runtime);

await engine.waitForFonts();
const pages = engine.simulate(documentInput.elements);

// Setup lightweight context
const context = new PdfLiteContext({
  size: [612, 792],
  margins: { top: 0, right: 0, bottom: 0, left: 0 }
});

const renderer = new Renderer(config, false, runtime);
await renderer.render(pages, context);

// Output handling depends on implementation details of PdfLiteContext stream pipelining

Browser Examples

Looking to test this in the browser quickly? See docs/examples/ast-to-pdf for a self-contained static showcase using the pdf-lite stack.


Licensed under the Apache License 2.0.