Vue d’ensemble

Générer des factures à la volée est une exigence courante pour les systèmes de facturation, les plateformes de commerce électronique et les applications SaaS.
Avec GroupDocs.Assembly Cloud vous pouvez créer des factures professionnelles entièrement dans le cloud sans installer de logiciel bureautique sur vos serveurs.

Principaux avantages

  • Flexibilité du modèle – Concevez la mise en page des factures dans un éditeur natif comme Microsoft Word, LibreOffice Writer, etc.
  • Liaison dynamique des données – Alimentez les modèles avec des données JSON ou XML, en utilisant de simples espaces réservés ou des expressions LINQ avancées pour les calculs, les boucles et les sections conditionnelles.
  • Formats de sortie multiples – Générez la facture finale au format DOCX pour une édition ultérieure ou PDF pour une distribution en lecture seule.
  • Stockage sécurisé – Accédez aux modèles et aux documents stockés dans le cloud GroupDocs via des jetons d’authentification.
  • Environnement léger – Tout le traitement s’exécute sur le cloud GroupDocs, libérant votre infrastructure des bibliothèques tierces ou des exigences élevées en CPU ou mémoire.

Dans les sections suivantes, nous parcourrons le processus complet – de la préparation du modèle et de la source de données à la génération de la facture avec le SDK .NET en C# et avec des commandes cURL simples.


Préparer le modèle de facture

Concevez la mise en page de la facture à l’aide de votre éditeur de bureau préféré (Microsoft Word, LibreOffice Writer, etc.).
Insérez des balises d’espace réservé correspondant aux champs JSON que vous fournirez plus tard, par exemple :

ModèleChemin JSON
<<[Invoice.Number]>>invoice.number
<<[Customer.Name]>>customer.name

Et la définition du modèle de rendu de tableau ressemblera à :

DescriptionQuantitéPrix unitaireCoût
<<foreach [in Items]>>
<<[Description]>>

<<[Quantity]>>

$<<[UnitPrice]:"N2">>
$<<[Quantity*UnitPrice]:"N2">>
<</foreach>>

Pour votre commodité, n’hésitez pas à télécharger un exemple de modèle présenté ci‑dessous :

invoice template example

Ou créez votre propre modèle à téléverser dans le stockage cloud GroupDocs (section suivante).


Téléverser le modèle dans le stockage cloud

Étapes principales pour le code C#

  1. Créez un objet Configuration avec votre App SID et App Key.
  2. Initialisez le client AssemblyApi.
  3. Téléversez le fichier modèle local vers un chemin dans le stockage cloud (par ex. templates/invoice-template.docx).
// 1️⃣ Initialise la configuration de l'API Cloud
var config = new Configuration
{
    AppSid = "YOUR_APP_SID",      // remplacez par votre App SID
    AppKey = "YOUR_APP_KEY"       // remplacez par votre App Key
};
var assemblyApi = new AssemblyApi(config);

// 2️⃣ Définit le chemin cloud où le modèle sera stocké
string cloudTemplatePath = "templates/invoice-template.docx";

// 3️⃣ Ouvre le fichier modèle local (préparez ce fichier au préalable)
using (var templateStream = File.OpenRead("resources/invoice-template.docx"))
{
    // 4️⃣ Construit la requête de téléversement – l'API attend un stream + le chemin cible
    var uploadRequest = new UploadFileRequest(templateStream, cloudTemplatePath);

    // 5️⃣ Exécute le téléversement ; le modèle est désormais disponible dans le stockage Cloud
    assemblyApi.UploadFile(uploadRequest);
}

Conseil : Vous pouvez également téléverser le fichier à l’aide d’une simple commande cURL (voir la section Générer une facture avec cURL) si vous préférez une approche en ligne de commande.


Créer la source de données

Construire un JSON avec les données de la facture

Voici un exemple de JSON qui correspond aux espaces réservés utilisés dans le modèle.
Enregistrez‑le sous le nom invoice-data.json dans le dossier resources ou intégrez‑le directement dans votre code.

{
  "invoice": {
    "number": "INV-2024-001",
    "issueDate": "2024-01-15T00:00:00"
  },
  "customer": {
    "name": "John Smith",
    "company": "Acme Corporation",
    "email": "john.smith@example.com",
    "address": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "zipCode": "10001",
    "country": "USA"
  },
  "items": [
    {
      "description": "Web Development Services",
      "quantity": 40,
      "unitPrice": 150.00
    },
    {
      "description": "UI/UX Design",
      "quantity": 20,
      "unitPrice": 120.00
    },
    {
      "description": "Consulting Services",
      "quantity": 10,
      "unitPrice": 200.00
    }
  ],
  "taxRate": 10.0
}

Utiliser le fichier JSON dans le code

// Charge les données JSON depuis un fichier – cette chaîne sera passée à l'API
string jsonData = File.ReadAllText("resources/invoice-data.json");

Remarque : Le même JSON peut être envoyé directement dans le corps de la requête lors de l’utilisation de cURL ; l’approche fichier est pratique pour des jeux de données plus volumineux.


Générer la facture avec le SDK .NET

Étapes principales pour le code C#

  1. Téléverser le modèle (déjà couvert).
  2. Lire la source de données JSON.
  3. Configurer AssembleOptions – spécifier le format de sortie (docx ou pdf) et référencer le modèle.
  4. Appeler AssembleDocument pour générer la facture.
  5. Enregistrer le fichier résultant localement ou dans un autre emplacement cloud.
using GroupDocs.Assembly.Cloud.Sdk;
using GroupDocs.Assembly.Cloud.Sdk.Model;
using GroupDocs.Assembly.Cloud.Sdk.Model.Requests;
using System.IO;

// 1️⃣ Initialise l'API Assembly (même config que l'étape téléversement)
var config = new Configuration { AppSid = "YOUR_APP_SID", AppKey = "YOUR_APP_KEY" };
var assemblyApi = new AssemblyApi(config);

// 2️⃣ Charge les données JSON (voir la section précédente)
string jsonData = File.ReadAllText("resources/invoice-data.json");

// 3️⃣ Prépare les options d'assemblage
var assembleOptions = new AssembleOptions
{
    // Choisissez le format souhaité – "docx" pour éditable, "pdf" pour PDF final
    SaveFormat = "pdf",

    // Passez la chaîne JSON complète – l'API la parse automatiquement
    ReportData = jsonData,

    // Référencez le modèle que nous avons téléversé précédemment
    TemplateFileInfo = new TemplateFileInfo
    {
        FilePath = "templates/invoice-template.docx"   // chemin cloud
    }
};

// 4️⃣ Construit l'objet de requête
var assembleRequest = new AssembleDocumentRequest(assembleOptions);

// 5️⃣ Exécute la requête – la réponse contient le flux du fichier généré
var assembledDocument = assemblyApi.AssembleDocument(assembleRequest);

// 6️⃣ Persiste le résultat localement
using (var outputStream = File.Create("output/invoice-output.pdf"))
{
    // Copie le flux de l'API vers un fichier sur disque
    assembledDocument.CopyTo(outputStream);
}

Résultat : invoice-output.pdf (ou .docx si vous avez modifié SaveFormat) contient la facture entièrement remplie, prête à être envoyée au client.


Générer la facture avec cURL

Si vous ne souhaitez pas installer de SDK et construire la solution en code, l’ensemble du processus peut être réalisé avec de simples appels HTTP.

1️⃣ Obtenir un jeton d’accès

curl.exe -X POST "https://api.groupdocs.cloud/connect/token" \
  -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET" \
  -H "Content-Type: application/x-www-form-urlencoded"

La réponse contient access_token – copiez sa valeur pour les étapes suivantes.

2️⃣ Téléverser le modèle via cURL

curl.exe -X PUT "https://api.groupdocs.cloud/v1.0/assembly/storage/file/templates/invoice-template.docx" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -F "File=@resources/invoice-template.docx" 

Si le modèle est déjà stocké (comme décrit dans la section SDK), vous pouvez ignorer cet appel.

3️⃣ Assembler la facture

Créez un fichier JSON nommé invoice-data.json dans le dossier resources comme indiqué dans la section [Créer la source de données {#json-data}] ci‑dessus.

Puis appelez le point de terminaison AssembleDocument.

Lorsque vous travaillez avec de gros ensembles de factures, il est plus efficace d’utiliser une variable intermédiaire pour lire les données puis les transmettre à la requête API. L’exemple suivant montre cette approche :

REPORT_DATA_ESCAPED=$(python -c "import json,sys; print(json.dumps(open('resources/invoice-data.json','r',encoding='utf-8').read()))")
	  
curl.exe -v "https://api.groupdocs.cloud/v1.0/assembly/assemble" \
  -X POST \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @- <<EOF
{
  "TemplateFileInfo": {
    "FilePath": "/templates/invoice-template.docx"
  },
  "SaveFormat": "pdf",
  "OutputPath": "/output/invoice-generated.pdf",
  "ReportData": $REPORT_DATA_ESCAPED
}
EOF

Cette commande crée la facture et la stocke dans le stockage cloud GroupDocs sous le fichier /output/invoice-generated.pdf.

4️⃣ Télécharger la facture générée

curl.exe \
  "https://api.groupdocs.cloud/v1.0/assembly/storage/file/Output/invoice-generated.pdf" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Accept: application/octet-stream" \
  -o invoice-generated.pdf

Résultat : Vous disposez d’une facture prête à être envoyée, sans écrire aucune ligne de code C#.


Conclusion

Dans cet article, nous avons montré comment GroupDocs.Assembly Cloud rend la génération de factures simple et sans effort :

  • Traitement cloud léger – aucune bibliothèque tierce lourde sur vos serveurs.
  • Liberté de conception du modèle – créez vos documents modèles dans Word ou LibreOffice puis stockez‑les dans le cloud.
  • Liaison dynamique des données – alimentez directement du JSON (ou XML), avec prise en charge LINQ, calculs, boucles et conditions.
  • Formats de sortie multiples – choisissez DOCX pour l’édition ou PDF pour une distribution immuable.
  • Intégration simple – utilisez le SDK .NET ou plusieurs appels cURL, illustrés par des exemples complets.

Commencez dès aujourd’hui à automatiser vos processus de facturation en téléversant un modèle et en appelant le point de terminaison d’assemblage !


Voir aussi


Foire aux questions (FAQ)

  • Puis-je utiliser LibreOffice Writer au lieu de Microsoft Word pour mon modèle ?
    Oui. L’API fonctionne avec tout fichier DOCX, quel que soit l’éditeur utilisé pour le créer.

  • Est‑il possible d’effectuer des calculs (par ex., totaux, taxes) dans le modèle ?
    Absolument. Vous pouvez utiliser des expressions LINQ ou de simples opérations arithmétiques dans les espaces réservés, par ex., <<[item.quantity * item.unitPrice]>>.

  • Quelle est la taille maximale d’un fichier modèle ou de données que je peux téléverser ?
    Le service accepte les fichiers jusqu’à 500 Mo ; les modèles de factures sont généralement bien en dessous de cette limite.

  • Dois‑je créer le dossier cible dans le stockage cloud avant de téléverser un modèle ?
    Non. Le point de terminaison de téléversement crée automatiquement la hiérarchie de dossiers si elle n’existe pas.

  • Puis‑je bénéficier d’un essai gratuit ?
    Oui, 150 appels API gratuits sont disponibles chaque mois.