Hallo @Tim_Barrett
Der Grund dafür, dass deine PDF leer angezeigt wird, ist, dass du zwei verschiedene PDF-Generierungsmethoden in deinem Workflow vermischst. Du versuchst einen Template-basierten Ansatz zu verwenden (über die PDF Generator API), versorgst ihn aber mit einer Binärdatei (über den Convert to File-Node) und stellst ungültige JSON-Daten bereit.
Hier sind die drei spezifischen Probleme und wie du sie behebst:
- Der
Convert to File-Node nimmt deinen Text und wandelt ihn in eine binäre HTML-Datei um. Die PDF Generator API konvertiert jedoch keine vorhandene Datei in ein Template; sie erstellt eine neue Datei, indem sie JSON-Daten mit einem vordefinierten Template zusammenführt.
Indem du Convert to File vor den PDF-Generator platzierst, änderst du die Eingabe von einem JSON-Objekt (das die API benötigt) in ein binäres Objekt, was dazu führt, dass die API die Daten nicht finden kann, die sie zum Füllen des Templates braucht.
Lösung: Lösche den Convert to File-Node und verbinde Edit Fields1 direkt mit Generate a PDF document.
- In deinem
Generate a PDF document-Node hast du die Daten als:={} {{ $json.output }}eingestellt.
Das ist kein gültiges JSON. Die PDF Generator API benötigt ein JSON-Objekt, bei dem die Schlüssel den Platzhaltern entsprechen, die du in deinem PDF Generator API Dashboard-Template erstellt hast.
Lösung: Ändere das Feld data auf ein korrektes JSON-Objekt. Wenn dein Template beispielsweise einen Platzhalter namens {{quote_content}} hat, sollte dein Datenfeld so aussehen:
{
"quote_content": "{{ $json.output }}"
}
- Damit die Daten tatsächlich auf der PDF erscheinen, muss der Schlüssel, den du in n8n verwendest, exakt dem Variablennamen in deinem Template entsprechen (ID: 1649628).
- Wenn dein Template leer ist: Das bedeutet, dass die API die Anfrage erhalten hat, aber keine Schlüssel in deinem JSON finden konnte, die den
{{variable}}-Tags in deinem Design entsprechen. - Empfehlung: Überprüfe dein Template im PDF Generator API Dashboard. Wenn du Tags wie
{{client_name}}oder{{total_price}}hast, musst du diese speziell im JSON angeben:
{
"client_name": "{{ $(\"Edit Fields\").item.json[\"What's your name?\"] }}",
"quote_content": "{{ $json.output }}"
}