svg2ooxml
SVG-to-PowerPoint converter with native, editable PresentationML output.
svg2ooxml parses SVG markup, builds a typed intermediate representation, renders native DrawingML XML fragments, and packages them into valid .pptx files. Shapes, text, gradients, filters, masks, clipping paths, and SMIL animations are converted to editable PowerPoint objects — not rasterized images.
svg2ooxml is the converter package. PowerPoint behavior research, authored control decks, and durable oracle evidence are maintained in the companion repository openxml-audit so the package documentation can stay focused on conversion.
The same distribution also carries figma2gslides, a tool package built on top
of the converter for Figma and Google Slides workflows. It is intentionally
separate from the supported svg2ooxml converter API.
Features
- Native DrawingML output — shapes, text, and paths render as editable PowerPoint objects
- SMIL animation support — entrance, emphasis, exit, and motion path animations
- SVG filter effects — blur, drop shadow, color matrix, and compositing
- Gradients & patterns — linear, radial, and pattern fills with correct coordinate transforms
- Masks & clipping — SVG clip paths and masks mapped to OOXML equivalents
- Multi-slide export — split multi-page SVGs into separate slides
- Extensible pipeline — service registry with dependency injection for custom providers
Installation
Requires Python 3.13 or newer.
The base install does not depend on NumPy. NumPy is installed only through the
render, color, or accel extras for raster/filter/color workloads.
pip install svg2ooxml
Optional extras:
pip install svg2ooxml[render] # Skia rendering + visual comparison
pip install svg2ooxml[color] # Advanced color space support
pip install svg2ooxml[figma2gslides] # Figma/Google Slides tool runtime
Current Release
0.8.2 is a micro fidelity-hardening release on the road to 0.9. It keeps the
editable-first promise for default filter fallbacks, adds typed filter input
surface handling, tightens transformed per-character text placement, preserves
root text fallback styles, and keeps the recent audit/refactor splits within
the maintainability guardrails.
Quick Start
from svg2ooxml import SvgToPptxExporter
exporter = SvgToPptxExporter()
exporter.export("input.svg", "output.pptx")
CLI
svg2ooxml convert input.svg -o output.pptx
How It Works
SVG text
→ SVGParser.parse() → ParseResult (lxml tree + metadata)
→ convert_parser_output() → IRScene (typed intermediate representation)
→ DrawingMLWriter.render() → DrawingMLRenderResult (XML fragments + assets)
→ PPTXPackageBuilder.write() → .pptx file
Links
License
Dual-licensed: AGPL-3.0 for open source, Commercial License for proprietary use. Contact license@svg2ooxml.com.
Metadata
Release files for svg2ooxml 0.8.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| svg2ooxml-0.8.2.tar.gz | 803.2 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| svg2ooxml-0.8.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.0 MB
Release files / svg2ooxml-0.8.2.tar.gz
| Download URL | svg2ooxml-0.8.2.tar.gz |
|---|---|
| Size | 803.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
75f8735ef4b268ad9aff9fd50516fe65430c5d7fa3e9f03cad16a82b39b0229b
|
|
BLAKE2b-256 checksum How to use checksums |
7ccd88546e90e24f4be4be1b5faddea4daf248812b4125a2eb54c165f5007107
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 30, 2026.
Transparency logRelease files / svg2ooxml-0.8.2-py3-none-any.whl
| Download URL | svg2ooxml-0.8.2-py3-none-any.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
912c3c6b7c7903561e94439a0ba9d32cca2e01d5fb3815485e85f993ca0716c7
|
|
BLAKE2b-256 checksum How to use checksums |
0e438966bdaf96df84cc611e3c1f1ef4c5dbfbd7aa6176fe0fad174dfc475075
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 30, 2026.
Transparency logSecurity for svg2ooxml 0.8.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for svg2ooxml-0.8.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.