A Visual Studio Code extension that renders presentation files directly inside the editor. All rendering is implemented through JavaScript parsers
No native bindings and no external office applications are required.
The extension reads the raw file, interprets its internal structure, and displays slides using HTML/CSS inside a VS Code webview.
| Format | Rendering Status | Technical Notes |
|---|---|---|
| PPTX (.pptx/.pptm/.potx/.potm/.ppsx/.ppsm) | Mostly implemented | Full ZIP parsing through JSZip. Text, images, shapes, basic backgrounds. Charts (EMF/WMF) and advanced grouping not handled. |
| PPT (.ppt/.pps/.pot) | Partial | Parsed via CFB. Implementation handles text records and basic background detection. Images, drawings, tables, EMF/WMF graphics are not implemented. |
| ODP (.odp) | Strong support | XML-based parsing. Text, images, tables and backgrounds implemented. Produces the most consistent results. |
| KEY (.key) | Basic preview only | Keynote APXL parser. Text, images and simple shapes. No proper layout engine (Keynote layout cannot be reconstructed reliably). Drawing operations, pinned geometries, and advanced vector elements are not handled. |
- Right-click a presentation file
- Choose "Open with Presentation Viewer"
- Use the toolbar:
- ◀ / ▶ to move between slides
- Zoom buttons to scale the slide
- Slide counter to jump around
- Custom parsing pipeline per format
- Renders slides using plain HTML/CSS (no canvas dependency
- All logic runs inside the webview; the extension host does not interpret slides
- Text blocks (paragraphs, runs, alignment, basic style attributes)
- Images (PNG/JPEG/SVG/TIFF detection through manual heuristics)
- Tables (ODP-only)
- Simple shapes (rectangles, ellipses, basic fills)
- Background color / background image where extractable
- No external rendering engines
- Internal fallback logic for unreadable or unsupported structures
- TIFF images auto-converted to PNG inside the webview when needed
- EMF/WMF (charts, diagrams) are not rendered
- Grouped shapes are not decomposed correctly
- WordArt and complex vector paths are ignored
- Only text-related records and some drawing containers are parsed
- No implementation for:
- OfficeArt shape rendering
- embedded image extraction
- tables
- charts
- etc.
- Layout engine is simplified; complex style inheritance may differ
- No animation, gradients may be approximated
- APXL provides object definitions but no layout engine; positioning is approximate.
- Complex Keynote features (builds, connects, vector instructions) are not parsed
- Many shapes fall back to simple HTML placeholders
- Fonts are substituted by the browser
- No support for audio/video/animations/transitions
- Some files may contain unimplemented object types
If the project helps you, give it a ⭐: repository
Pull requests are always welcome!
Thank you :)
If you find any problems or rendering errors you can report it here: issues
This project is released under the MIT License.
