Zum Inhalt

PDF aus Handlebars-Template erstellen

Der Service Task „PDF erstellen aus Template (Handlebars)“ erzeugt ein PDF-Dokument auf Basis einer HTML-Vorlage. Die Vorlage wird mit Handlebars gerendert, um dynamische Inhalte einzufügen. Ideal für Rechnungen, Angebote oder Berichte.

Input-Parameter

Die folgenden Felder werden als Eingabe für den Task benötigt:

{
  "filename": "document.pdf",
  "content": {
    "customerName": "Max Mustermann",
    "invoiceNumber": "12345",
    "totalAmount": 500.00
  },
  "templateHtml": "<html><body><h1>Rechnung Nr. {{invoiceNumber}}</h1><p>Kunde: {{customerName}}</p><p>Betrag: {{totalAmount}} EUR</p></body></html>"
}

Erläuterung:

  • filename: Gewünschter Dateiname des erzeugten PDF-Dokuments.
  • content: Daten, die in die HTML-Vorlage eingebettet werden sollen.
  • templateHtml: HTML-Vorlage mit Handlebars-Platzhaltern.

Output

Der Task gibt eine Referenz zum erzeugten PDF-Dokument zurück.

{
  "status": 200,
  "response": {
    "fileReference": "s3://bucket-name/document.pdf"
  }
}

Erläuterung:

  • status: Status des Vorgangs (200 für erfolgreich).
  • fileReference: Datei-Referenz zum erstellten PDF-Dokument.

JSONata-Beispiele

{
  "filename": "rechnung-{{$.orderDetails.orderId}}.pdf",
  "content": {
    "customerName": $.customer.name,
    "invoiceNumber": $.orderDetails.orderId,
    "totalAmount": $.orderDetails.totalAmount
  },
  "templateHtml": "<html><body><h1>Rechnung Nr. {{invoiceNumber}}</h1><p>Kunde: {{customerName}}</p><p>Betrag: {{totalAmount}} EUR</p></body></html>"
}

Verfügbare Handlebars-Helper

Helper Beschreibung Beispiel
dateTimeFormat Formatiert ein Datum im ISO-8601-Format zu einem lokalisierten Datum und Uhrzeit. {{dateTimeFormat '2024-12-22T10:30:00Z' 'de-DE' 'Europe/Berlin'}}
multiply Multipliziert zwei Zahlen. {{multiply 5 3}}
currentDateTime Gibt das aktuelle Datum und die Uhrzeit im angegebenen Format zurück. {{currentDateTime 'de-DE' 'Europe/Berlin'}}
toGermanDate Konvertiert ein Datum im Format YYYY-MM-DD in das deutsche Datumsformat. {{toGermanDate '2024-12-22'}}
replace Ersetzt einen bestimmten Text durch einen anderen. {{replace 'Pantarey GmbH' 'GmbH' 'AG'}}
add Addiert zwei Zahlen. {{add 10 5}}
round Rundet eine Zahl auf eine bestimmte Anzahl von Dezimalstellen. {{round 12.3456 2}}
currency_eur Formatiert eine Zahl als Euro-Betrag im deutschen Format. {{currency_eur 1234.56}}
addDaysToCurrentDate Fügt eine bestimmte Anzahl von Tagen zum aktuellen Datum hinzu. {{addDaysToCurrentDate 5}}
month_name Gibt den Monatsnamen basierend auf einem Datum zurück. {{month_name '2024-12-22'}}
greaterThan Prüft, ob die erste Zahl größer als die zweite ist. {{#greaterThan 10 5}}Größer{{else}}Nicht größer{{/greaterThan}}
lessThan Prüft, ob die erste Zahl kleiner als die zweite ist. {{#lessThan 3 5}}Kleiner{{else}}Nicht kleiner{{/lessThan}}
greaterOrEqualThan Prüft, ob die erste Zahl größer oder gleich der zweiten ist. {{#greaterOrEqualThan 5 5}}Größer oder gleich{{else}}Nicht größer oder gleich{{/greaterOrEqualThan}}
lessOrEqualThan Prüft, ob die erste Zahl kleiner oder gleich der zweiten ist. {{#lessOrEqualThan 3 5}}Kleiner oder gleich{{else}}Nicht kleiner oder gleich{{/lessOrEqualThan}}
numberFormat Formatiert eine Zahl im deutschen Zahlenformat. {{numberFormat 1234567.89}}

Hinweise

  • Verwende Handlebars in templateHtml, um dynamische Inhalte einzufügen.
  • Nutze die Helper, um Inhalte bequem zu formatieren.
  • Stelle sicher, dass die Daten im content korrekt formatiert sind.
  • Das PDF wird im Hintergrund generiert und als Datei-Referenz zurückgegeben.

Tipp

Nutze JSONata, um content und filename dynamisch aus Prozessdaten zu erzeugen.