Übersicht

Rechnungen on‑the‑fly zu erstellen ist ein häufiges Bedürfnis von Abrechnungssystemen, E‑Commerce‑Plattformen und SaaS‑Anwendungen.
Mit GroupDocs.Assembly Cloud können Sie professionelle Rechnungen komplett in der Cloud erstellen, ohne Office‑Software auf Ihren Servern zu installieren.

Wesentliche Vorteile

  • Vorlagenflexibilität – Entwerfen Sie Rechnungslayouts in einem nativen Editor wie Microsoft Word, LibreOffice Writer usw.
  • Dynamische Datenbindung – Befüllen Sie Vorlagen mit JSON‑ oder XML‑Daten, indem Sie einfache Platzhalter oder erweiterte LINQ‑Ausdrücke für Berechnungen, Schleifen und Bedingungsblöcke verwenden.
  • Mehrere Ausgabeformate – Erzeugen Sie die fertige Rechnung als DOCX für weitere Bearbeitung oder als PDF für schreibgeschützte Verteilung.
  • Sichere Speicherung – Greifen Sie auf Vorlagen und Dokumente im GroupDocs Cloud‑Speicher über Authentifizierungstoken zu.
  • Leichtgewichtige Umgebung – Alle Verarbeitung läuft in der GroupDocs Cloud, sodass Ihre Infrastruktur nicht durch Drittanbieter‑Bibliotheken oder hohe CPU‑ bzw. Speicheranforderungen belastet wird.

In den folgenden Abschnitten führen wir Sie durch den gesamten Prozess – von der Vorbereitung einer Vorlage und Datenquelle bis hin zur Generierung einer Rechnung mit dem .NET‑SDK in C# und mit einfachen cURL‑Befehlen.


Rechnungs‑Vorlage vorbereiten

Entwerfen Sie das Rechnungslayout mit Ihrem bevorzugten Desktop‑Editor (Microsoft Word, LibreOffice Writer usw.).
Fügen Sie Platzhalter‑Tags ein, die den JSON‑Feldnamen entsprechen, die Sie später bereitstellen, z. B.:

VorlageJSON‑Pfad
<<[Invoice.Number]>>invoice.number
<<[Customer.Name]>>customer.name

Und die Definition einer Tabellen‑Rendering‑Vorlage sieht folgendermaßen aus:

BeschreibungMengeEinzelpreisKosten
<<foreach [in Items]>>
<<[Description]>>

<<[Quantity]>>

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

Für Ihre Bequemlichkeit können Sie ein Vorlagenbeispiel unten herunterladen:

invoice template example

Oder bauen Sie Ihre eigene Vorlage und laden sie in den GroupDocs Cloud‑Speicher hoch (nächster Abschnitt).


Vorlage in den Cloud‑Speicher hochladen

Wesentliche Schritte für C#‑Code

  1. Erstellen Sie ein Configuration‑Objekt mit Ihrer App SID und Ihrem App Key.
  2. Initialisieren Sie den AssemblyApi‑Client.
  3. Laden Sie die lokale Vorlagendatei in einen Pfad im Cloud‑Speicher (z. B. templates/invoice-template.docx).
// 1️⃣ Initialize the Cloud API configuration
var config = new Configuration
{
    AppSid = "YOUR_APP_SID",      // replace with your App SID
    AppKey = "YOUR_APP_KEY"       // replace with your App Key
};
var assemblyApi = new AssemblyApi(config);

// 2️⃣ Define the cloud path where the template will be stored
string cloudTemplatePath = "templates/invoice-template.docx";

// 3️⃣ Open the local template file (prepare this file beforehand)
using (var templateStream = File.OpenRead("resources/invoice-template.docx"))
{
    // 4️⃣ Build the upload request – the API expects a stream + target path
    var uploadRequest = new UploadFileRequest(templateStream, cloudTemplatePath);

    // 5️⃣ Execute the upload; the template is now available in Cloud storage
    assemblyApi.UploadFile(uploadRequest);
}

Tipp: Sie können die Datei auch mit einem einfachen cURL‑Befehl hochladen (siehe Abschnitt Rechnung mit cURL erzeugen), wenn Sie lieber die Befehlszeile nutzen.


Datenquelle erstellen

JSON mit den Rechnungsdaten aufbauen

Unten finden Sie ein Beispiel‑JSON, das zu den Platzhaltern in der Vorlage passt.
Speichern Sie es als invoice-data.json im Ordner resources oder betten Sie es direkt in Ihren Code ein.

{
  "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
}

Verwendung der JSON‑Datei im Code

// Load the JSON data from a file – this string will be passed to the API
string jsonData = File.ReadAllText("resources/invoice-data.json");

Hinweis: Das gleiche JSON kann im Request‑Body bei cURL‑Aufrufen inline gesendet werden; die Datei‑Methode ist bei größeren Datensätzen bequemer.


Rechnung mit .NET‑SDK erzeugen

Wesentliche Schritte für C#‑Code

  1. Vorlage hochladen (bereits erledigt).
  2. JSON‑Daten lesen.
  3. AssembleOptions konfigurieren – Ausgabeformat (docx oder pdf) und Vorlage angeben.
  4. AssembleDocument aufrufen, um die Rechnung zu erzeugen.
  5. Ergebnis lokal oder an einem anderen Cloud‑Ort speichern.
using GroupDocs.Assembly.Cloud.Sdk;
using GroupDocs.Assembly.Cloud.Sdk.Model;
using GroupDocs.Assembly.Cloud.Sdk.Model.Requests;
using System.IO;

// 1️⃣ Initialize the Assembly API (same config as upload step)
var config = new Configuration { AppSid = "YOUR_APP_SID", AppKey = "YOUR_APP_KEY" };
var assemblyApi = new AssemblyApi(config);

// 2️⃣ Load JSON data (see previous section)
string jsonData = File.ReadAllText("resources/invoice-data.json");

// 3️⃣ Prepare assembly options
var assembleOptions = new AssembleOptions
{
    // Choose the format you need – "docx" for editable, "pdf" for final PDF
    SaveFormat = "pdf",

    // Pass the whole JSON string – the API parses it automatically
    ReportData = jsonData,

    // Reference the template that we uploaded earlier
    TemplateFileInfo = new TemplateFileInfo
    {
        FilePath = "templates/invoice-template.docx"   // cloud path
    }
};

// 4️⃣ Build the request object
var assembleRequest = new AssembleDocumentRequest(assembleOptions);

// 5️⃣ Execute the request – the response contains the generated file stream
var assembledDocument = assemblyApi.AssembleDocument(assembleRequest);

// 6️⃣ Persist the result locally
using (var outputStream = File.Create("output/invoice-output.pdf"))
{
    // Copy the API stream to a file on disk
    assembledDocument.CopyTo(outputStream);
}

Ergebnis: invoice-output.pdf (oder .docx, wenn Sie SaveFormat auf „docx“ setzen) enthält die vollständig befüllte Rechnung, bereit zum Versand an den Kunden.


Rechnung mit cURL erzeugen

Wenn Sie kein SDK installieren und die Lösung rein per HTTP‑Aufruf umsetzen möchten, lässt sich der gesamte Prozess mit einfachen cURL‑Aufrufen erledigen.

1️⃣ Zugriffstoken erhalten

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"

Die Antwort enthält access_token – kopieren Sie den Wert für die folgenden Schritte.

2️⃣ Vorlage per cURL hochladen

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" 

Ist die Vorlage bereits gespeichert (wie im SDK‑Beispiel beschrieben), können Sie diesen Aufruf überspringen.

3️⃣ Rechnung zusammenstellen

Erstellen Sie eine Datei invoice-data.json im Ordner resources, wie im Abschnitt Datenquelle erstellen beschrieben.

Und rufen Sie nun den AssembleDocument‑Endpunkt auf.

Bei großen Rechnungsdatensätzen ist es am effizientesten, die Daten zuerst in einer Variablen zu lesen und dann an die API zu übergeben. Das folgende Beispiel demonstriert diesen Ansatz:

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

Der Befehl erzeugt die Rechnung und speichert sie im GroupDocs Cloud‑Speicher unter /output/invoice-generated.pdf.

4️⃣ Generierte Rechnung herunterladen

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

Ergebnis: Sie besitzen nun eine einsatzbereite Rechnung, ohne C#‑Code zu schreiben.


Fazit

In diesem Beitrag haben wir gezeigt, wie GroupDocs.Assembly Cloud die Rechnungserstellung mühelos ermöglicht:

  • Leichtgewichtige Cloud‑Verarbeitung – keine schweren Drittanbieter‑Tools auf Ihren Servern.
  • Freie Vorlagengestaltung – erstellen Sie Dokumentvorlagen in Word/LibreOffice und speichern Sie sie im Cloud‑Speicher.
  • Dynamische Datenbindung – übergeben Sie JSON (oder XML) direkt, mit Unterstützung für LINQ, Berechnungen, Schleifen und Bedingungen.
  • Verschiedene Ausgabeformate – wählen Sie DOCX für weitere Bearbeitung oder PDF für unveränderliche Verteilung.
  • Einfache Integration – nutzen Sie das .NET‑SDK oder ein paar cURL‑Aufrufe, komplett mit Code‑Beispielen.

Beginnen Sie noch heute, Ihre Abrechnungs‑Workflows zu automatisieren, indem Sie eine Vorlage hochladen und den Assemble‑Endpunkt aufrufen!


Weiterführende Links


Häufig gestellte Fragen (FAQs)

  • Kann ich LibreOffice Writer anstelle von Microsoft Word für meine Vorlage verwenden?
    Ja. Die API arbeitet mit jeder DOCX‑Datei, unabhängig davon, welcher Editor zum Erstellen verwendet wurde.

  • Ist es möglich, Berechnungen (z. B. Gesamtsummen, Steuern) innerhalb der Vorlage durchzuführen?
    Absolut. Sie können LINQ‑Ausdrücke oder einfache arithmetische Operationen in Platzhaltern nutzen, z. B. <<[item.quantity * item.unitPrice]>>.

  • Wie groß dürfen Vorlage‑ oder Datendateien maximal sein?
    Der Service unterstützt Dateien bis zu 500 MB; typische Rechnungs‑Vorlagen liegen deutlich darunter.

  • Muss ich den Zielordner im Cloud‑Speicher vor dem Hochladen anlegen?
    Nein. Der Upload‑Endpunkt erstellt die Ordner‑Hierarchie automatisch, falls sie nicht existiert.

  • Bekomme ich einen kostenlosen Test?
    Ja, es stehen 150 kostenlose API‑Aufrufe pro Monat zur Verfügung.