DeckHTML
Languages: English · 简体中文 · 繁體中文 · Français · Deutsch · Español · 日本語 · 한국어
Convert HTML files, stdin, or URLs into PPTX or PNG presentations from your terminal.
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
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:
pptx | PowerPoint deck output (default) |
png | PNG frame output |
deckhtml index.html -o frames.png
Execution Modes
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:
--embed-fonts | Embed fonts into the output |
deckhtml index.html \
-o deck.pptx \
--mode cloud \
--embed-fonts
Authentication & Config
Authentication is only required for cloud execution and cloud-only flags. Local conversion works without an API key.
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:
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
-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',
});
import { writeFileSync } from 'node:fs';
writeFileSync('deck.pptx', result.data);
Documentation
Detailed CLI documentation is available in the docs/cli/ directory.
License
MIT