Det har hänt en hel del sedan förra releasen. Både libvisio-ng och VSDView har fått rejäla uppgraderingar, och gapet till det gamla C++-baserade libvisio har bara ökat.
libvisio-ng 0.6.0
Den här releasen handlar mycket om att hantera fler av Visios visuella funktioner korrekt — saker som det gamla C++-biblioteket aldrig implementerade.
Nya funktioner:
- ✅ Rich text — formaterad text i shapes renderas nu korrekt med fetstil, kursiv, teckenstorlek och färg
- ✅ Radiella gradienter — inte bara linjära längre, utan även radiella gradienter stöds nu fullt ut
- ✅ Bildinbäddning — inbäddade bilder (EMF, PNG, JPEG) i .vsdx-filer extraheras och renderas i SVG-output
- ✅ Type hints — hela kodbasen har fått type annotations, vilket gör det enklare att bidra och integrera
- ✅ Sphinx-dokumentation — ordentlig API-dokumentation genererad med Sphinx
- ✅ CI-pipeline — automatiserade tester och kvalitetskontroll vid varje commit
Testsviten har vuxit från 96 till 102 tester. Varje test validerar att en specifik Visio-fil konverteras korrekt — det är ingen leksak.
libvisio-ng finns nu på PyPI:
pip install libvisio-ng
Ren Python. Inga C++-beroenden. Inga systembibliotek att krångla med. Det bara funkar.
libvisio-rs — Rust-porten
Det som tidigare var ”nästa steg” är nu verklighet. libvisio-rs v0.1.1 är en fullständig Rust-port av libvisio-ng med C ABI via cbindgen-genererade headers — redo att droppa in som ersättare för C++ libvisio i LibreOffice och Inkscape.
- ✅ C ABI — cbindgen-genererade headers gör det möjligt att länka direkt från C/C++-projekt
- ✅ PyO3 Python-bindings — samma API som libvisio-ng, men med Rust-prestanda
- ✅ Inkscape-extension — inskickat som MR #718
- ✅ LibreOffice — enhancement proposal inskickat
Installera via crates.io:
cargo add libvisio-rs
Koden finns på github.com/yeager/libvisio-rs och crates.io/crates/libvisio-rs.
Jämförelse: libvisio-ng/rs vs C++ libvisio
Det här projektet startade för att C++-versionen av libvisio (som LibreOffice använder) hade stagnerat. Ingen aktiv utveckling sedan ~2018, bristfälligt stöd för teman, gradienter, skuggor och textformatering. Här är den fullständiga jämförelsen:
| Funktion | C++ libvisio | libvisio-ng/rs |
|---|---|---|
| .vsdx-stöd | Grundläggande | ✅ Fullt (teman, gradienter, skuggor) |
| .vsd-stöd (binärt) | Bra | ✅ Fullt (NURBS, splines, bilder, lager) |
| Temafärger | ❌ | ✅ |
| Linjära gradienter | Delvis | ✅ |
| Radiella gradienter | ❌ | ✅ |
| Skuggor | ❌ | ✅ |
| Skraffering/mönsterfyllning | ❌ | ✅ |
| Rich text (blandade stilar) | Delvis | ✅ |
| Bildinbäddning | Delvis | ✅ |
| Konnektorer | Grundläggande | ✅ Full med routing |
| Master shape-arv | Delvis | ✅ Fullt |
| Hyperlänkar | ❌ | ✅ |
| Rundade rektanglar | ❌ | ✅ |
| Linjemönster (streckade m.m.) | Grundläggande | ✅ Fullt |
| Fyllnadsmönster | ❌ | ✅ |
| Pilmarkörer | Delvis | ✅ |
| Tester | Begränsat | 102 |
| Språk | C++ | Python + Rust + C ABI |
| Aktiv utveckling | ❌ (senast ~2018) | ✅ |
| PyPI | ❌ | ✅ libvisio-ng |
| crates.io | ❌ | ✅ libvisio-rs |
| Homebrew | ❌ | ✅ (via VSDView) |
VSDView 0.5.0
VSDView är den grafiska Visio-läsaren som bygger på libvisio-ng. Version 0.5.0 är en massiv uppgradering med 15 nya funktioner:
- ✅ Zoom och panorering — scrolla och zooma fritt i diagrammet
- ✅ Sökfunktion — hitta shapes och text i dokumentet
- ✅ Shape-information — klicka på en shape för att se dess egenskaper
- ✅ Mätverktyg — mät avstånd direkt i diagrammet
- ✅ Export — spara som SVG, PNG eller PDF
- ✅ Lagerhantering — visa/dölj lager
- ✅ Minimap — överblick över hela dokumentet
- …och mer
Den stora förändringen under huven är att VSDView nu helt har ersatt C++ libvisio med libvisio-ng. Tidigare krävdes libvisio-tools som systempaket — nu är allt inbyggt. 4000 rader gammal parser-kod ersattes med en 30-raders wrapper mot libvisio-ng. Resultatet: bättre rendering, enklare installation, och stöd för allt som libvisio-ng klarar.
Det finns också en Tauri-baserad nativapp (v0.2.0) med Alma TTS-integration.
📦 Installation
- macOS:
brew install yeager/tap/vsdview - Windows: Ladda ner från GitHub Releases
- Linux: .deb och .rpm i våra repos, eller
pip install vsdview - PyPI:
pip install vsdview
Integration i ekosystemet
Målet är att ersätta det ounderhållna C++ libvisio över hela open source-ekosystemet:
- Inkscape: Extension inskickat som MR #718 — öppnar .vsd/.vsdx direkt i Inkscape via libvisio-ng
- LibreOffice: Enhancement proposal inskickat för att ersätta C++ libvisio med libvisio-rs
Med libvisio-rs C ABI och cbindgen-headers kan projektet fungera som drop-in-ersättare för det gamla biblioteket. Python-versionen (libvisio-ng) driver redan VSDView och Inkscape-extensionen, medan Rust-versionen (libvisio-rs) riktar sig mot LibreOffice och andra C/C++-projekt.
Länkar
- 📦 libvisio-ng: GitHub · PyPI
- 🦀 libvisio-rs: GitHub · crates.io
- 🖥️ VSDView: GitHub
- 🤗 HuggingFace: huggingface.co/yeagersthlm
libvisio-ng, libvisio-rs och VSDView är öppen källkod under GPL-3.0.


Lämna ett svar