Skip to content

Latest commit

 

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeckHTML

npm version npm downloads License: MIT

DeckHTML — HTML to PPTX

Languages: English · 简体中文 · 繁體中文 · Français · Deutsch · Español · 日本語 · 한국어

Convert HTML files, stdin, or URLs into PPTX or PNG presentations from your terminal.

HTML → PPTX demo

Quick Start

Run without installing:

npx -y @deckflow/deckhtml@latest index.html -o deck.pptx

Installation

npm install -g @deckflow/deckhtml
deckhtml --version

Convert HTML

Convert a single HTML file (output defaults to the same path and base name):

deckhtml index.html
# → index.pptx

Specify an output path:

deckhtml index.html -o deck.pptx

Pipe HTML from stdin:

cat index.html | deckhtml - -o deck.pptx

Convert multiple HTML files in order:

deckhtml page1.html page2.html page3.html -o deck.pptx

Convert a hosted page:

deckhtml https://example.com/deck.html -o deck.pptx

Output Formats

Output format is inferred from the -o extension:

Format Description
pptx PowerPoint deck output (default)
png PNG frame output
deckhtml index.html -o frames.png

Execution Modes

Mode Description
auto Use cloud when an API key is configured; otherwise run locally
local Always run locally (no API key required)
cloud Always run in the cloud (API key required)
deckhtml index.html --mode local
deckhtml index.html --mode cloud -o deck.pptx

Cloud-Only Enhancements

These flags require cloud mode:

Flag Description
--embed-fonts Embed fonts into the output
deckhtml index.html \
  -o deck.pptx \
  --mode cloud \
  --embed-fonts

Authentication & Config

Local conversion works without an API key. Cloud mode can start as a rate-limited guest; sign in or configure an API key when prompted or when you need authenticated access.

deckhtml auth login
deckhtml auth status
deckhtml config set api-key <key>

For CI, Docker, or agent environments, set the environment variable (takes precedence over stored credentials):

export DECKHTML_API_KEY=your-api-key

Persistent settings:

Command Description Default
deckhtml config set api-key <key> API key for cloud requests
deckhtml config set size <size> PPTX dimensions 1920x1080
deckhtml config set webhook <url> Default callback URL
deckhtml config set retention-hours <n> Cloud file retention (hours) 3

Credentials are stored locally at ~/.deckflow/credentials.

CLI Reference

Conversion Flags

Flag Description Default
-h, --help Show help
--version Show version
-o, --output <path> Output path Same base name as input
-v, --verbose Detailed logs to stderr false
--quiet Only errors and final result false
--json Machine-readable JSON on stdout false
--report Generate a conversion report Off
--mode <mode> auto, local, or cloud auto
--width <pixels> Playwright viewport width (height scales at 16:9) 1920
--platform <platform> win, mac, ios, android, or linux Detected
--embed-fonts Embed fonts (cloud only) false
--executable-path <path> Chromium binary for local conversion (else DECKHTML_CHROMIUM_EXECUTABLE_PATH env, then Playwright's bundle)
--exclude <selector> CSS selector matching runtime/navigation elements to exclude
--identity-attribute <name> Attribute carrying a stable element identity (default: data-element-id) data-element-id
--force Overwrite an existing output file (default: refuse) false

--quiet and --verbose cannot be used together. Output format is inferred from the -o extension (pptx or png).

JSON Output

deckhtml index.html -o deck.pptx --json
{
  "ok": true,
  "input": ["index.html"],
  "output": "deck.pptx",
  "format": "pptx",
  "mode": "local"
}

Programmatic API

Use the package as a library in Node.js. The library returns a Buffer (or PNG image buffers) — it never writes to disk on its own. Write the output yourself, or use the CLI for file output.

import { convertHtmlToPptx } from '@deckflow/deckhtml';

const result = await convertHtmlToPptx({
  input: 'index.html',
});
// result.data: Buffer containing the PPTX file
// result.slideCount: number of slides
// result.usedFonts: resolved font names
// result.stats: element/font/simplified statistics
import { writeFileSync } from 'node:fs';
writeFileSync('deck.pptx', result.data);

Documentation

Start with the quick start, then learn the core concepts and architecture. Detailed CLI documentation is available in the docs/cli/ directory.

License

MIT

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

10 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages