MCPcopy Index your code
hub / github.com/gitbrent/PptxGenJS

github.com/gitbrent/PptxGenJS @v4.0.1 sqlite

repository ↗ · DeepWiki ↗ · release v4.0.1 ↗
644 symbols 1,904 edges 48 files 69 documented · 11% 7 cross-repo links
README

PptxGenJS

PptxGenJS Sample Slides

jsdelivr downloads NPM Downloads GitHub Repo stars GitHub License TypeScript defs

🚀 Features

PptxGenJS lets you generate professional PowerPoint presentations in JavaScript - directly from Node, React, Vite, Electron, or even the browser. The library outputs standards-compliant Open Office XML (OOXML) files compatible with:

  • ✅ Microsoft PowerPoint
  • ✅ Apple Keynote
  • ✅ LibreOffice Impress
  • ✅ Google Slides (via import)

Design custom slides, charts, images, tables, and templates programmatically - no PowerPoint install or license required.

Works Everywhere

  • Supports every major modern browser - desktop and mobile
  • Seamlessly integrates with Node.js, React, Angular, Vite, and Electron
  • Compatible with PowerPoint, Keynote, LibreOffice, and other OOXML apps

Full-Featured

  • Create all major slide objects: text, tables, shapes, images, charts, and more
  • Define custom Slide Masters for consistent academic or corporate branding
  • Supports SVGs, animated GIFs, YouTube embeds, RTL text, and Asian fonts

Simple & Powerful

  • Ridiculously easy to use - create a presentation in 4 lines of code
  • Full TypeScript definitions for autocomplete and inline documentation
  • Includes 75+ demo slides covering every feature and usage pattern

Export Your Way

  • Instantly download .pptx files from the browser with proper MIME handling
  • Export as base64, Blob, Buffer, or Node stream
  • Supports compression and advanced output options for production use

HTML to PowerPoint Magic

🌐 Live Demos

Try PptxGenJS right in your browser - no setup required.

Perfect for testing compatibility or learning by example - all demos run 100% in the browser.

📦 Installation

Choose your preferred method to install PptxGenJS:

Quick Install (Node-based)

npm install pptxgenjs
yarn add pptxgenjs

CDN (Browser Usage)

Use the bundled or minified version via jsDelivr:

<script src="https://cdn.jsdelivr.net/gh/gitbrent/pptxgenjs/dist/pptxgen.bundle.js"></script>

Includes the sole dependency (JSZip) in one file.

📁 Advanced: Separate Files, Direct Download

Download from GitHub: Latest Release

<script src="https://github.com/gitbrent/PptxGenJS/raw/v4.0.1/PptxGenJS/libs/jszip.min.js"></script>
<script src="https://github.com/gitbrent/PptxGenJS/raw/v4.0.1/PptxGenJS/dist/pptxgen.min.js"></script>

🚀 Universal Compatibility

PptxGenJS works seamlessly in modern web and Node environments, thanks to dual ESM and CJS builds and zero runtime dependencies. Whether you're building a CLI tool, an Electron app, or a web-based presentation builder, the library adapts automatically to your stack.

Supported Platforms

  • Node.js – generate presentations in backend scripts, APIs, or CLI tools
  • React / Angular / Vite / Webpack – just import and go, no config required
  • Electron – build native apps with full filesystem access and PowerPoint output
  • Browser (Vanilla JS) – embed in web apps with direct download support
  • Serverless / Edge Functions – use in AWS Lambda, Vercel, Cloudflare Workers, etc.

Vite, Webpack, and modern bundlers automatically select the right build via the exports field in package.json.

Builds Provided

📖 Documentation

Quick Start Guide

PptxGenJS PowerPoint presentations are created via JavaScript by following 4 basic steps:

Angular/React, ES6, TypeScript

import pptxgen from "pptxgenjs";

// 1. Create a new Presentation
let pres = new pptxgen();

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

// 3. Add one or more objects (Tables, Shapes, Images, Text and Media) to the Slide
let textboxText = "Hello World from PptxGenJS!";
let textboxOpts = { x: 1, y: 1, color: "363636" };
slide.addText(textboxText, textboxOpts);

// 4. Save the Presentation
pres.writeFile();

Script/Web Browser

// 1. Create a new Presentation
let pres = new PptxGenJS();

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

// 3. Add one or more objects (Tables, Shapes, Images, Text and Media) to the Slide
let textboxText = "Hello World from PptxGenJS!";
let textboxOpts = { x: 1, y: 1, color: "363636" };
slide.addText(textboxText, textboxOpts);

// 4. Save the Presentation
pres.writeFile();

That's really all there is to it!

💥 HTML-to-PowerPoint Magic

Convert any HTML <table> into fully formatted PowerPoint slides - automatically and effortlessly.

let pptx = new pptxgen();
pptx.tableToSlides("tableElementId");
pptx.writeFile({ fileName: "html2pptx-demo.pptx" });

Perfect for transforming:

  • Dynamic dashboards and data reports
  • Exportable grids in web apps
  • Tabular content from CMS or BI tools

View Full Docs & Live Demo

📚 Full Documentation

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

🛠️ Issues / Suggestions

Please file issues or suggestions on the issues page on github, or even better, submit a pull request. Feedback is always welcome!

When reporting issues, please include a code snippet or a link demonstrating the problem. Here is a small jsFiddle that is already configured and uses the latest PptxGenJS code.

🆘 Need Help?

Sometimes implementing a new library can be a difficult task and the slightest mistake will keep something from working. We've all been there!

If you are having issues getting a presentation to generate, check out the code in the demos directory. There are demos for browser, node and, react that contain working examples of every available library feature.

🙏 Contributors

Thank you to everyone for the contributions and suggestions! ❤️

Special Thanks:

PowerPoint shape definitions and some XML code via Officegen Project

🌟 Support the Open Source Community

If you find this library useful, consider contributing to open-source projects, or sharing your knowledge on the open social web. Together, we can build free tools and resources that empower everyone.

@gitbrent@fosstodon.org

📜 License

Copyright © 2015-present Brent Ely

MIT

Extension points exported contracts — how you extend this code

IPresentationProps (Interface)
(no doc) [1 implementers]
src/core-interfaces.ts
BorderOptions (Interface)
(no doc)
types/index.d.ts
PositionProps (Interface)
(no doc)
src/core-interfaces.ts
PositionProps (Interface)
(no doc)
types/index.d.ts
DataOrPathProps (Interface)
(no doc)
src/core-interfaces.ts
DataOrPathProps (Interface)
(no doc)
types/index.d.ts
BackgroundProps (Interface)
(no doc)
src/core-interfaces.ts
BackgroundProps (Interface)
(no doc)
types/index.d.ts

Core symbols most depended-on inside this repo

e
called by 1186
demos/browser/js/pptxgen.bundle.js
t
called by 1064
demos/browser/js/pptxgen.bundle.js
addText
called by 206
demos/browser/js/pptxgen.bundle.js
a
called by 191
demos/browser/js/pptxgen.bundle.js
n
called by 132
demos/browser/js/pptxgen.bundle.js
addTable
called by 111
demos/browser/js/pptxgen.bundle.js
addSlide
called by 96
demos/browser/js/pptxgen.bundle.js
addChart
called by 77
demos/browser/js/pptxgen.bundle.js

Shape

Function 394
Interface 117
Method 92
Enum 29
Class 12

Languages

TypeScript100%

Modules by API surface

demos/browser/js/pptxgen.bundle.js123 symbols
libs/polyfill.min.js93 symbols
types/index.d.ts73 symbols
src/core-interfaces.ts62 symbols
libs/jszip.min.js36 symbols
src/pptxgen.ts34 symbols
demos/modules/demo_chart.mjs33 symbols
src/gen-xml.ts31 symbols
demos/browser/js/browser.js22 symbols
src/slide.ts16 symbols
src/core-enums.ts15 symbols
src/gen-utils.ts13 symbols

Dependencies from manifests, versioned

@eslint/js9.25.1 · 1×
@popperjs/core2.11.8 · 1×
@rollup/plugin-commonjs28.0.1 · 1×
@rollup/plugin-node-resolve16.0.1 · 1×
@stylistic/eslint-plugin4.2.0 · 1×
@types/node22.8.1 · 1×
@types/react19.0.10 · 1×
@types/react-dom19.0.4 · 1×
@typescript-eslint/eslint-plugin8.31.0 · 1×
@vitejs/plugin-react4.3.4 · 1×
bootstrap5.3.5 · 1×

For agents

$ claude mcp add PptxGenJS \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact