Mehrere PDFs erstellen aus einem TextHTMLWriterMultiOutput

Hallo zusammen,

da wir aktuell für Sendungen aus UK Einzelrechnungen generieren müssen, erstelle ich aktuell eine Vorlage die dann mit Daten aus einem Mapper gefüllt werden. Der Input ist eine Excel Liste mit allen entsprechenden Daten. Die Eingabe passiert aktuell noch über den TextHTMLWriter. Dahinter erzeuge ich dann daraus ein PDF.

Jetzt muss ich allerdings eine Dokument pro Paket erstellen lassen. Hier sind wir grade so bei etwa 35 Stück, was in Zukunft natürlich mehr sein kann. Mein Problem bei dem oben beschriebenen Prozess ist aber, dass alle Daten aus der Excel Liste in ein Dokument geschrieben werden. Ich bräuchte ich aber, wie erwähnt, 35 einzelne Dokumente.

Kann man das mithilfe des Stepps TextHTMLWriterMultiOutput erstellen lassen ? Wenn ja, was genau muss man von dem TextHTMLWriter zu TextHTMLWriterMultiOutput umstellen.

Hier ist einmal der Code der aktuell in den TextHTMLWriter eingefügt ist:
TextHTMLWriter_Beispiel.json (6,8 KB)

Viele Grüße
Oliver

Hallo Oliver,

um pro Zeile deines Input Spreassheets eine Datei (ein Dokument) mit dem TextHTMLWriterMultiOutput zu erstellen, sollte das Template in etwa folgendermaßen aussehen:

  1. List Anweisung (Schleife): Mit dieser Anweisung wird über jede Zeile des Spreadsheet „gelaufen“. Der output key ist bei dir vermutlich spreadsheet@SpreadsheetMapper_10. Eventuell müssen die beiden verwendeten Spreadsheets (spreadsheet@SpreadsheetMapper_10 & spreadsheet@SpreadsheetMapper_20) vorab noch zusammengeführt werden.

  2. Assign Block: Hier kommt das Template für ein Dokument rein. Eventuell musst du das aktuelle Template noch anpassen, damit es für eine row(„einzelnes Dokument“) funktioniert.

  3. Output Anweisung: Die Datei wird für den Inhalt des assign Blocks erstellt. Der zweite Parameter ist der Dateiname. Hier solltest du einen eindeutigen Bestandteil im Dateinamen verwenden.

Beispiel Template:

<#list spreadsheet@SearchMasterDatastore_1.getRows() as row> 
<#assign fileContent>
<!DOCTYPE html>
<html>
<head> 
    <title> GLS Rechnung </title>
</head>
<body>
...

</#assign>
${output(fileContent, ("out" + row.get('identifier') +".html"), "UTF-8")}
</#list>

VG Torsten

2 „Gefällt mir“

Hallo @synesty-Torsten ,

ich werde deine Lösung heute mal ausprobieren.
Das sieht aber soweit schon echt gut aus.

Also an der Stelle schon mal ein großes Danke!

Viele Grüße,
Oliver

Hallo Oliver,

ok super. Falls du noch Fragen oder Probleme haben solltest, kannst du dich gern nochmal bei uns melden.

Viele Grüße,
Torsten

Hallo @synesty-Torsten ,

ich hatte deinen Vorschlag jetzt mal umgesetzt.
Funktioniert für mein Vorhaben entsprechend sehr gut.

Also nochmal vielen Dank für die Hilfe.

Schon mal ein schönes Wochenende und viele Grüße,
Oliver