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

@lofcz/pptxgenjs

v4.1.17

Published

Create JavaScript PowerPoint Presentations

Readme

PptxGenJS

Fork of PptxGenJS published as @lofcz/pptxgenjs on npm.

PptxGenJS Sample Slides

GitHub Repo stars GitHub License npm version

PptxGenJS is a JavaScript library for generating PowerPoint presentations programmatically. It runs in Node.js, browsers, and bundler-based environments (React, Angular, Vite, Webpack, Electron), and requires no PowerPoint installation or license. Output is standards-compliant Open Office XML (OOXML), compatible with Microsoft PowerPoint, Apple Keynote, LibreOffice Impress, and Google Slides (via import). For PowerPoint-specific behavior, see Microsoft's Office implementation notes.

About this fork

This repository is a fork of gitbrent/PptxGenJS, maintained for the PPTist / ScioBot stack and published as @lofcz/pptxgenjs. It tracks hardening work from NEOMA GmbH's distribution (@neo-ma/pptxgenjs):

  • Strict null-safety — the entire source compiles under TypeScript strictNullChecks with zero non-null assertions (!) and zero unchecked as casts; null-safety is enforced through explicit types, guard clauses, and validated defaults
  • Continuous integration — unit, end-to-end, OOXML package-contract tests, and an optional LibreOffice consumer check run on Node.js 20 and 22
  • Security — no known vulnerabilities in the published package, and a published security policy

The public API remains compatible with upstream PptxGenJS; existing code and documentation continue to apply.

Requirements

  • Node.js 20 or newer

Installation

npm install @lofcz/pptxgenjs
yarn add @lofcz/pptxgenjs

The package ships dual ES Module and CommonJS builds. Bundlers select the correct build automatically via the exports field in package.json. The .pptx output can be delivered as a browser download, base64 string, Blob, Buffer, or Node stream.

Quick start

A presentation is created in four steps: instantiate, add a slide, add content, save.

import pptxgen from "@lofcz/pptxgenjs";

// 1. Create a presentation
const pres = new pptxgen();

// 2. Add a slide
const slide = pres.addSlide();

// 3. Add content (text, tables, shapes, images, charts, media)
slide.addText("Quarterly Results", { x: 0.5, y: 0.5, fontSize: 24, bold: true });
slide.addText("Revenue up 12% year over year", { x: 0.5, y: 1.3, fontSize: 14, color: "363636" });

// 4. Write the .pptx file
await pres.writeFile({ fileName: "quarterly-results.pptx" });

When loading the library via a <script> tag rather than a module import, the constructor is the global PptxGenJS (for example, const pres = new PptxGenJS()); the remaining steps are identical.

Documentation

Complete API reference, tutorials, and integration guides are available on the official docs site: https://gitbrent.github.io/PptxGenJS.

Local VitePress docs under docs/ can be previewed with npm run docs:dev.

Issues and support

Report defects and feature requests on the issue tracker, or submit a pull request. When reporting an issue, include a code snippet or a link that demonstrates the problem. See CONTRIBUTING.md for build and test instructions.

Contributors

Thanks to everyone who contributed to the original project and this distribution.

Notable contributions:

PowerPoint shape definitions and portions of the XML generation are derived from the Officegen Project.

License

Copyright © 2015-present Brent Ely, © 2026-present lofcz

Licensed under the MIT License.