Leitfaden · REST-API

Ein Word-Dokument aus JSON generieren

Bleiben Sie bearbeitbar. Derselbe Aufruf, der ein PDF rendert, liefert auf Wunsch ein DOCX: Ihre Word-Vorlage, Ihr JSON, eine Anfrage, eine Word-Datei, die Ihre Anwender weiter ändern können.

Wenn der Kunde Word will, nicht PDF

  • Verträge, Offerten und Briefe werden verhandelt: ein PDF beendet das Gespräch, ein DOCX hält es offen.
  • DOCX-Dateien im Code zu bauen heisst XML-Teile und OpenXML-Bibliotheken; wer die Vorlage pflegt, kommt an das Ergebnis nicht heran.
  • Eine reine PDF-API zwingt zu einem zweiten Werkzeug für die bearbeitbare Kopie, mit zwei Layouts, die synchron bleiben müssen.

Die Anfrage

Derselbe Transport wie beim PDF-Aufruf, format=DOCX. Skalare Felder als Name/Wert-Paare, wiederholte Bereiche unter lists. Die Dateiendung wird zu .docx umgeschrieben.

TOKEN=$(curl -sS https://auth.xgenerate.io/realms/xgenerate/protocol/openid-connect/token \
  -d grant_type=client_credentials \
  -d client_id="$XGENERATE_CLIENT_ID" \
  -d client_secret="$XGENERATE_CLIENT_SECRET" | jq -r .access_token)

cat > fields.json <<'JSON'
{
  "fields": [
    { "name": "customer.name",    "value": "Lumière Logistique SARL" },
    { "name": "offer.number",     "value": "OF-2026-118" },
    { "name": "offer.validUntil", "value": "30.11.2026" }
  ]
}
JSON

# Same call as for a PDF; only the format differs.
curl -sS https://api.xgenerate.io/v2/documents/generate \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@offer-template.docx" \
  -F "fields=@fields.json;type=application/json" \
  -F "format=DOCX" \
  -o offer.docx

Aus .NET

using System.Net.Http.Json;

using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new("Bearer", token);

var request = new
{
    filename = "offer-template.docx",
    content = Convert.ToBase64String(await File.ReadAllBytesAsync("offer-template.docx")),
    format = "DOCX",
    fields = new
    {
        fields = new[]
        {
            new { name = "customer.name", value = "Lumière Logistique SARL" },
            new { name = "offer.number", value = "OF-2026-118" }
        }
    }
};
var response = await http.PostAsJsonAsync(
    "https://api.xgenerate.io/v2/documents/generate", request);
response.EnsureSuccessStatusCode();

// result.Filename is "offer-template.docx": the extension follows the resolved format.
var result = await response.Content.ReadFromJsonAsync<GenerateResult>();
await File.WriteAllBytesAsync("offer.docx", Convert.FromBase64String(result!.Content));

record GenerateResult(string Filename, string Content, string Format);

Die Antwort

Der Multipart-Aufruf streamt das DOCX mit Content-Type application/vnd.openxmlformats-officedocument.wordprocessingml.document zurück. Der JSON-Transport liefert filename, content, format und warnings, die Datei base64-codiert in content.

Das Ergebnis

Erste Seite der gerenderten Referenzrechnung: Briefkopf, Adressblock, Positionstabelle und Summen
Die Referenzrechnung, gerendert aus einer Word-Vorlage mit Standard-Seriendruckfeldern. Vorlage, Anfrage und erwartetes PDF: bereitgestelltes Beispiel

Was XGenerate nicht tut

Das DOCX behält die Formatvorlagen der Vorlage und die befüllten Felder als Text; der Schweizer QR-Zahlteil ist nur im PDF möglich und wird bei DOCX-Ausgabe als Warnung gemeldet.

Testen Sie es mit Ihrer eigenen Vorlage

Schicken Sie uns eine Word-Datei, die Sie heute verwenden. Wir rendern sie mit Ihren Daten und senden das PDF zusammen mit der angepassten Vorlage zurück — Ihre Evaluation muss nicht auf uns warten.

Demo anfragen

Verwandte Leitfäden