Files
Skrift-Kofnigurator/Docker Backend/TILDA_API_BEISPIEL.md
2026-02-07 13:04:04 +01:00

7.2 KiB
Raw Blame History

Tilda Font API-Aufruf Beispiel

Konfiguration

  • Error Frequency: 0 (keine durchgestrichenen Wörter)
  • Wortabstand-Variation: ±5% für natürlicheres Schriftbild
  • Font: Tilda (Scriptalizer: PremiumUltra79)

1. Preview-Generierung (empfohlen)

Endpoint

POST http://localhost:4000/api/preview/batch

Request Headers

Content-Type: application/json

Request Body

{
  "sessionId": "meine-session-12345",
  "letters": [
    {
      "index": 0,
      "format": "a4",
      "font": "tilda",
      "text": "Sehr geehrte Damen und Herren,\n\nhiermit möchten wir Ihnen mitteilen, dass Ihre Bestellung erfolgreich bearbeitet wurde.\n\nWir bedanken uns für Ihr Vertrauen und freuen uns auf eine weitere Zusammenarbeit.\n\nMit freundlichen Grüßen\nIhr Skrift-Team",
      "placeholders": {}
    }
  ]
}

cURL Beispiel

curl -X POST http://localhost:4000/api/preview/batch \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId": "meine-session-12345",
    "letters": [
      {
        "index": 0,
        "format": "a4",
        "font": "tilda",
        "text": "Sehr geehrte Damen und Herren,\n\nhiermit möchten wir Ihnen mitteilen, dass Ihre Bestellung erfolgreich bearbeitet wurde.\n\nWir bedanken uns für Ihr Vertrauen und freuen uns auf eine weitere Zusammenarbeit.\n\nMit freundlichen Grüßen\nIhr Skrift-Team",
        "placeholders": {}
      }
    ]
  }'

Response

{
  "sessionId": "meine-session-12345",
  "files": [
    {
      "index": 0,
      "filename": "letter_000.svg",
      "url": "/api/preview/meine-session-12345/letter_000.svg"
    }
  ],
  "csvUrl": "/api/preview/meine-session-12345/placeholders.csv"
}

Preview SVG abrufen

curl http://localhost:4000/api/preview/meine-session-12345/letter_000.svg -o preview.svg

2. Mit Platzhaltern

Request Body

{
  "sessionId": "platzhalter-test",
  "letters": [
    {
      "index": 0,
      "format": "a4",
      "font": "tilda",
      "text": "Sehr geehrte/r [[Vorname]] [[Nachname]],\n\nhiermit bestätigen wir Ihre Bestellung [[Bestellnummer]].\n\nIhr persönlicher Gutscheincode: [[Gutscheincode]]\nGültig bis: [[Ablaufdatum]]\n\nMit freundlichen Grüßen",
      "placeholders": {
        "Vorname": "Max",
        "Nachname": "Mustermann",
        "Bestellnummer": "SK-2026-001",
        "Gutscheincode": "SAVE20",
        "Ablaufdatum": "31.12.2026"
      }
    }
  ]
}

3. Mehrere Briefe (Batch)

Request Body

{
  "sessionId": "batch-test",
  "letters": [
    {
      "index": 0,
      "format": "a4",
      "font": "tilda",
      "text": "Sehr geehrte/r [[Vorname]] [[Nachname]],\n\nvielen Dank für Ihre Bestellung!",
      "placeholders": {
        "Vorname": "Max",
        "Nachname": "Mustermann"
      }
    },
    {
      "index": 1,
      "format": "a4",
      "font": "tilda",
      "text": "Sehr geehrte/r [[Vorname]] [[Nachname]],\n\nvielen Dank für Ihre Bestellung!",
      "placeholders": {
        "Vorname": "Anna",
        "Nachname": "Schmidt"
      }
    },
    {
      "index": 2,
      "format": "a4",
      "font": "tilda",
      "text": "Sehr geehrte/r [[Vorname]] [[Nachname]],\n\nvielen Dank für Ihre Bestellung!",
      "placeholders": {
        "Vorname": "Thomas",
        "Nachname": "Müller"
      }
    }
  ]
}

Hinweis: Bis zu 30 Briefe pro Batch möglich (konfigurierbar)


4. Bestellung finalisieren

Nach der Vorschau kann die Bestellung finalisiert werden:

Endpoint

POST http://localhost:4000/api/order/finalize

Request Body

{
  "sessionId": "meine-session-12345",
  "orderNumber": "SK-2026-01-02-001"
}

cURL Beispiel

curl -X POST http://localhost:4000/api/order/finalize \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId": "meine-session-12345",
    "orderNumber": "SK-2026-01-02-001"
  }'

Response

{
  "orderNumber": "SK-2026-01-02-001",
  "outputPath": "/app/output/SK-2026-01-02-001",
  "files": [
    "letter_000.svg",
    "placeholders.csv"
  ],
  "timestamp": "2026-01-02T09:11:00.000Z"
}

5. Direkte Bestellungs-Generierung (ohne Preview)

Endpoint

POST http://localhost:4000/api/order/generate

Request Body

{
  "orderNumber": "SK-2026-01-02-002",
  "letters": [
    {
      "index": 0,
      "format": "a4",
      "font": "tilda",
      "text": "Sehr geehrte Damen und Herren,\n\nhiermit bestätigen wir den Eingang Ihrer Bestellung.\n\nMit freundlichen Grüßen",
      "placeholders": {}
    }
  ]
}

cURL Beispiel

curl -X POST http://localhost:4000/api/order/generate \
  -H "Content-Type: application/json" \
  -d '{
    "orderNumber": "SK-2026-01-02-002",
    "letters": [
      {
        "index": 0,
        "format": "a4",
        "font": "tilda",
        "text": "Sehr geehrte Damen und Herren,\n\nhiermit bestätigen wir den Eingang Ihrer Bestellung.\n\nMit freundlichen Grüßen",
        "placeholders": {}
      }
    ]
  }'

Verfügbare Formate

  • a4: A4 Hochformat (210 × 297 mm)
  • a6p: A6 Hochformat (105 × 148 mm)
  • a6l: A6 Querformat (148 × 105 mm)

Verfügbare Fonts

  • tilda: Scriptalizer PremiumUltra79
  • alva: Scriptalizer PremiumUltra23
  • ellie: Scriptalizer PremiumUltra39

Features

Keine Fehler: Error Frequency = 0 (keine durchgestrichenen Wörter) Wortabstand-Variation: ±5% natürliche Variation für realistischeres Schriftbild Platzhalter: Automatische Ersetzung von Platzhalter CSV-Export: Automatische Generierung der Platzhalter-Tabelle Batch-Verarbeitung: Bis zu 30 Briefe pro Request Preview-Caching: 2 Stunden Cache für schnellere Finalisierung Rate Limiting: 2 Requests/Minute Schutz


Output

Die generierten SVG-Dateien befinden sich in:

  • Preview: /app/cache/previews/{sessionId}/
  • Finale Bestellung: /app/output/{orderNumber}/

Struktur:

output/SK-2026-01-02-001/
├── letter_000.svg
├── letter_001.svg
├── placeholders.csv
└── order-metadata.json

Beispiel Output

letter_000.svg:

<svg xmlns="http://www.w3.org/2000/svg"
     width="210mm"
     height="297mm"
     viewBox="0 0 793.8 1122.66">
  <rect x="0" y="0" width="793.8" height="1122.66" fill="#FFFFFF" />
  <path d="M1549 1857q-55 73 -124.5 125..."
        transform="matrix(0.00846,0,0,-0.00846,75.6,120.5)"
        stroke="#000000"
        stroke-width="0.6"
        fill="none"
        stroke-linecap="round"
        stroke-linejoin="round" />
  <!-- ~2000 weitere Pfade für handgeschriebenen Text -->
</svg>

Dateigröße: ~100-120 KB pro A4-Seite


WordPress Integration Beispiel

// Im WordPress Plugin
const response = await fetch('https://api.skrift.de/api/preview/batch', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    sessionId: generateUUID(),
    letters: [
      {
        index: 0,
        format: 'a4',
        font: 'tilda',
        text: brieftext,
        placeholders: platzhalterDaten
      }
    ]
  })
});

const data = await response.json();
// Zeige Preview: data.files[0].url

Stand: 2026-01-02 Version: 1.0.0