CSV/JSON/Spreadsheet zu PDF

Moin zusammen,


gibt es mit Synesty die Möglichkeit, eine CSV/JSON oder Spreadsheet zu einem PDF zu konvertieren und formatieren?


Falls das gar nicht geht, kennt jemand eine gute Alternative für soetwas?


LG
Mark

Hallo Mark,


um PDFs zu erstellen haben wir den Html2PdfConverter-Step. Dazu kannst du entweder ganz simpel eine Textdatei einfügen oder wenn es komplexer werden soll mit Bilder, farbiger Schrift etc. kannst auch HTML einfügen.


Viele Grüße,

Lukas

Hi Lukas,


hier müsste ja eine vorformatierte HTML Datei als Input genommen werden, die dann einfach als PDF ausgegeben wird, richtig?


Geht das auch irgendwie mit Key-Value-Paaren, sodass ich quasi vorgeben kann, an welcher Stelle in dem PDF, welcher Inhalt stehen soll?


Beispiel in meiner JSON:

"branddata": {
                "logo": "https://bildurl",
                "firstname": "Max",
                "secondname": "Mustermann"
                     }

Nun sollen lediglich das Bild, der Name und der Secondname in der PDF ausgegeben werden.


Ist das mit Synesty umsetzbar?


LG
Mark

Hallo Mark,


also wenn du Json als Quelle hast, müsstest du das vorher mit einem JSONReader Step einlesen und anschließend in dem Html2PdfConverter-Step wie folgt einfügen:

<#list output@JSON2Spreadsheet_10.getRows() as row> 
${row.get("logo")!}
${row.get("firstname")!}
${row.get("secondname")!}
</#list>


Viele Grüße,

Lukas

Hi Lukas,


ich habe es wie folgt aufgebaut:

image


Im TextHTMLWriter steht folgendes:

{    "data": [
  {
        "firstname": "Test1",
        "logo": "Test2",
        "firstname": "Test3",
        "secondname": "Test4"
  }
  ]
}

Im JSONReader Step steht dies:

<#list output@JSON2Spreadsheet_5.getRows() as row> 
${row.get("logo")!}
${row.get("firstname")!}
${row.get("secondname")!}
</#list>

Folgende Fehlermeldung erscheint:

image


Hast du eine Ahnung woran das liegen könnte?


LG
Mark


Der Inhalt im JSONReader passt nicht. Dort muss eher sowas hier stehen, um das JSON einzulesen.

Das was jetzt im JSONReader steht, müsste z.B. in einen weiteren TextHTMLWriter nach dem JSONReader.


Der Aufbau ist grundsätzlich ungefähr so:


1. StringToFile (dort das Test-JSON reinschreiben) -> Ausgabe ist ein FILE. Grundsätzlich kann man diesen Step durch alles ersetzen, was ein JSON holt (z.B. APICall, FTPDownload...)

2. JSONReader (liest Datei aus 1. ein)

3. TextHTMLWriter (erzeugt HTML-Ausgabe, woraus das PDF erzeugt werden soll)

4. StringToFile (den STRING aus 3. wieder ein FILE zu machen)

5. HTML2PDF Step (der macht aus dem FILE das PDF)


Danke, soweit funktioniert es alles.


Ich habe in meiner HTML Datei, die der StringToFile Step generiert, Bilder enthalten. Diese habe ich mit Style Tags versehen, (Max-width etc) um sie anzupassen. Dies wird scheinbar vom Html2PdfConverter ignoriert. Ist CSS (auch inline) in der HTML Datei nicht möglich?


LG
Mark

Das HTML2PDF Step unterstützt nur wenige Basis-HTML und CSS Attribute.

z.B. funktioniert font-style:italic;


<td style="font-style:italic;">${row.get("company")!}</td>


Man kann sich grob an der XSL-FO Referenz orientieren. Unter der Haube wird das HTML quasi in dieses XSLF-FO übersetzt. D.h. die Style-Attribute, die man verwenden darf, müssen die von XSL-FO sein. Die sehen oft genau so aus wie die von CSS, aber nicht immer.


In einem anderen Thread hat ein Nutzer auch einiges hinbekommen.
Ggf. auch mal versuchen im HTML2PDFConverter Step die Option strictValidation deaktivieren. Dadurch verzeiht der Konverter auch mal, wenn man ein falsches Attribut verwendet.