SVG to Office Open XML conversion toolkit.
Project description
svg2ooxml
Convert SVG to PowerPoint with native DrawingML fidelity.
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.
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
- Figma plugin — browser-based export from Figma to Google Slides
- Extensible pipeline — service registry with dependency injection for custom providers
Installation
pip install svg2ooxml
Optional extras:
pip install svg2ooxml[render] # Skia rendering + visual comparison
pip install svg2ooxml[color] # Advanced color space support
pip install svg2ooxml[slides] # Google Slides integration
pip install svg2ooxml[api] # FastAPI service
pip install svg2ooxml[cloud] # Google Drive/Slides API client
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file svg2ooxml-0.6.1.tar.gz.
File metadata
- Download URL: svg2ooxml-0.6.1.tar.gz
- Upload date:
- Size: 643.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce96a06649ac313298a23ac7d0a96c426d05ba7dcba67984ec732eb845e1c8d3
|
|
| MD5 |
5346fe433b3071222fb95701d0383cda
|
|
| BLAKE2b-256 |
ac75821ecc41d9cdd162711e84e0a37df6f8663c54b51d6231a268f14a30d4b6
|
Provenance
The following attestation bundles were made for svg2ooxml-0.6.1.tar.gz:
Publisher:
workflow.yml on BramAlkema/svg2ooxml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
svg2ooxml-0.6.1.tar.gz -
Subject digest:
ce96a06649ac313298a23ac7d0a96c426d05ba7dcba67984ec732eb845e1c8d3 - Sigstore transparency entry: 1237726325
- Sigstore integration time:
-
Permalink:
BramAlkema/svg2ooxml@4551fc5ebd1f24fc19ab91414983adde7e5da45c -
Branch / Tag:
refs/tags/v0.6.1 - Owner: https://github.com/BramAlkema
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@4551fc5ebd1f24fc19ab91414983adde7e5da45c -
Trigger Event:
release
-
Statement type:
File details
Details for the file svg2ooxml-0.6.1-py3-none-any.whl.
File metadata
- Download URL: svg2ooxml-0.6.1-py3-none-any.whl
- Upload date:
- Size: 840.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40c048fc6f7a54cad192acc51108c305514d9bbbd8bf660bcf6c99b86250c49b
|
|
| MD5 |
31aad92fa7332d1c976a040aebca5264
|
|
| BLAKE2b-256 |
6c25d2f1562541212fa6d718776a607b292f2660be074f1cc3af0b70008047e0
|
Provenance
The following attestation bundles were made for svg2ooxml-0.6.1-py3-none-any.whl:
Publisher:
workflow.yml on BramAlkema/svg2ooxml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
svg2ooxml-0.6.1-py3-none-any.whl -
Subject digest:
40c048fc6f7a54cad192acc51108c305514d9bbbd8bf660bcf6c99b86250c49b - Sigstore transparency entry: 1237726348
- Sigstore integration time:
-
Permalink:
BramAlkema/svg2ooxml@4551fc5ebd1f24fc19ab91414983adde7e5da45c -
Branch / Tag:
refs/tags/v0.6.1 - Owner: https://github.com/BramAlkema
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@4551fc5ebd1f24fc19ab91414983adde7e5da45c -
Trigger Event:
release
-
Statement type: