Documentation de l'API
Eunormia.Sdk — la bibliothèque .NET hors ligne
Le même moteur que l'API en ligne, intégré à votre application : créer, lire et valider des factures électroniques — entièrement hors ligne. Le moteur et un runtime allégé sont inclus dans le paquet NuGet ; vos données de facturation ne quittent jamais votre entreprise.
Disponibilité : le paquet est disponible sur nuget.org et pleinement utilisable sans licence (filigrane d'exemple). Les conditions de la licence qui retire le filigrane figurent sur la page des tarifs (gratuit jusqu'à fin 2026) ; les partenaires pilotes bénéficient de conditions avantageuses.
Installation & prérequis
| Installation | dotnet add package Eunormia.Sdk — sur nuget.org |
| Frameworks | net8.0 et netstandard2.0 (donc aussi .NET Framework 4.6.1+) |
| Plateformes | win-x64 (d'autres suivront) |
| Dépendances | aucune — pas de Java, pas de Docker, pas d'accès réseau |
| Taille | ~130 Mo par plateforme (moteur, polices, profils ICC, référentiels incl. KoSIT & FR-CTC) |
Les trois classes
EunormiaConverter | créer : JSON (+ PDF optionnel) → ZUGFeRD/Factur-X validé. Mêmes barrières qu'en ligne ; certificat de conformité signé en option (EmitCertificate). |
EunormiaReader | recevoir : PDF → JSON de facture complet (même schéma qu'à la création) + XML CII brut. |
EunormiaValidator | recevoir : PDF → résultats des barrières (veraPDF, EN 16931, en option KositValidation/FrCtcValidation). |
Performance
UseDaemon = true garde le moteur en processus chaud : premier
appel ~3–4 s (démarrage à froid), puis ~250 ms par conversion, lecture ~30 ms.
Licence
Sans licence, le SDK est pleinement fonctionnel — les
résultats portent un filigrane. Une licence valide (compte →
POST /v1/license/offline, puis LicenseKey ou ENV
EUNORMIA_LICENSE) supprime le filigrane.
Liaison à la version, pas d'expiration. Une licence couvre toutes les versions d'eunormia jusqu'à sa date d'émission et continue de fonctionner chez vos clients — durablement et hors ligne, même après la fin de la durée. Une version plus récente d'eunormia (p. ex. lors d'un changement de règles) nécessite une nouvelle licence valide.
La vérification est hors ligne (signature Ed25519) — aucun phone-home, aucune télémétrie.
Gestion des erreurs
Les erreurs métier et techniques arrivent en EunormiaException
avec Status (422 pour le métier), Stage et des
Details localisés — les mêmes messages compréhensibles que l'API
en ligne.
FAQ
| Faut-il Java installé ? | Non — le runtime est inclus dans le paquet, invisible pour vous. |
| Le SDK téléphone-t-il à la maison ? | Non. Aucune télémétrie, aucune vérification de licence en ligne. |
| Que se passe-t-il à la fin de la durée ? | Le logiciel livré continue de fonctionner ; seul le passage à une version plus récente d'eunormia nécessite une nouvelle licence valide. |
| Pourquoi si volumineux ? | Le paquet contient toute la substance de validation : polices, profils colorimétriques, référentiels EN 16931/KoSIT/FR-CTC et le moteur. C'est précisément ce qui vous épargne toute infrastructure. |
Code
// Erzeugen / create
var converter = new EunormiaConverter(new EunormiaOptions {
LicenseKey = Environment.GetEnvironmentVariable("EUNORMIA_LICENSE"),
Profile = ZugferdProfile.EN16931,
UseDaemon = true
});
EunormiaResult r = await converter.ConvertAsync(invoiceJson, pdfBytes);
File.WriteAllBytes(r.FileName, r.Pdf);
// Empfangen: lesen / receive: read
ReadResult data = await new EunormiaReader().ReadAsync(incomingPdf);
Console.WriteLine(data.Header?.Number); // Kurzform / header
var fullJson = data.Invoice; // volles InvoiceRequest-JSON
// Empfangen: validieren / receive: validate
var v = await new EunormiaValidator(new EunormiaOptions {
KositValidation = true, FrCtcValidation = true
}).ValidateAsync(incomingPdf);
Console.WriteLine($"{v.Valid} {v.VeraPdf.Passed} {v.En16931.Passed} {v.Kosit?.Passed}");