Utilisez Majorsilence Reporting
depuis n'importe quel langage
Les wrappers Python, PHP et Ruby vous permettent de restituer des rapports RDL en PDF, Excel, CSV, HTML, et plus — sans écrire une seule ligne de code .NET. Chaque langage propose trois modes d'intégration adaptés à vos contraintes de déploiement.
Python 3.10+. subprocess, binaire AOT, ou FFI ctypes en processus. Rendu en mémoire véritable en mode natif.
Lire la documentation → PHPPHP 8.1+. Package Composer. Modes proc_open subprocess et PHP FFI natif. Fonctionne avec Laravel, Symfony, ou du PHP simple.
Lire la documentation → RubyRuby 3.0+. Zéro dépendance de gem au runtime. Fiddle FFI pour le rendu natif en processus. Fonctionne avec Rails, Sinatra, ou du Ruby simple.
Lire la documentation → RustÉdition Rust 2021. FFI libloading uniquement — pas de mode subprocess. Handle Arc thread-safe. Véritable buffer en mémoire. Les 10 formats. Une seule dépendance.
Lire la documentation →Modes d'intégration
Chaque binding de langage fournit trois classes qui couvrent différents scénarios de déploiement :
| Mode | Fonctionnement | Quand l'utiliser |
|---|---|---|
| Report | Lance dotnet RdlCmd.dll comme processus enfant via le shell système. Nécessite que le runtime .NET soit installé sur le serveur. |
Configuration la plus simple — adaptée au développement ou lorsque .NET est déjà présent sur la machine. |
| ReportAot | Lance un binaire compilé en AOT autonome (RdlCmd). Aucun runtime .NET requis — le binaire inclut tout. |
Déploiements en production où vous ne pouvez pas installer le runtime .NET. Copiez simplement le binaire à côté de votre application. |
| ReportNative | Charge librdlnative.so en processus via FFI native (ctypes / PHP FFI / Fiddle). Aucun processus enfant lancé. |
Latence minimale, débit maximal. Requis pour le rendu en mémoire sans écrire de fichiers temporaires (Python uniquement pour l'instant). |
Comparaison des fonctionnalités
| Fonctionnalité | Python | PHP | Ruby | Rust |
|---|---|---|---|---|
| Version minimale du langage | 3.10+ | 8.1+ | 3.0+ | 1.65+ |
| Gestionnaire de packages | pip | Composer | pas encore de gem | pas encore de crate |
| Dépendances au runtime | aucune | aucune | aucune | libloading |
| Mode subprocess (dotnet) | ✓ | ✓ | ✓ | – |
| Mode binaire AOT | ✓ | ✓ | ✓ | – |
| Mode FFI natif | ✓ | ✓ | ✓ | ✓ uniquement |
Jeux de données en mémoire add_data() | natif uniquement | natif uniquement | natif uniquement | ✓ |
| Véritable buffer en mémoire (sans fichier temporaire) | ✓ natif | – | – | ✓ |
| Handle de bibliothèque thread-safe | – | – | – | basé sur Arc |
| Formats xlsx_table, tifb, mht | AOT + natif | AOT + natif | AOT + natif | tous les modes |
Formats d'export pris en charge
Les trois bindings de langage prennent en charge les mêmes chaînes de format de base passées à export() / export_to_memory() :
| Chaîne de format | Sortie | Disponible dans |
|---|---|---|
pdf | Tous les modes | |
csv | Texte CSV | Tous les modes |
xlsx | Classeur Excel | Tous les modes |
xml | Données XML | Tous les modes |
rtf | Rich Text Format | Tous les modes |
tif | Image TIFF (couleur) | Tous les modes |
html | HTML | Tous les modes |
xlsx_table | Excel (style tableau) | AOT + Natif uniquement (Python/PHP/Ruby) ; tous les modes (Rust) |
tifb | Image TIFF (noir & blanc) | AOT + Natif uniquement (Python/PHP/Ruby) ; tous les modes (Rust) |
mht | Archive web MHTML | AOT + Natif uniquement (Python/PHP/Ruby) ; tous les modes (Rust) |