HTML2PDFConverter
Der Step HTML2PDFConverter kann aus HTML-Text eine PDF-Datei erstellen.
Der Step unterstützt einige wenige HTML Tags sowie Inline CSS-Stylesheets, um das Aussehen zu beeinflussen.
Beispiel
Folgendes Beispiel erzeugt ein klassisches Rechnungsdokument. Es kann als Grundlage für eigene Templates genommen werden.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<table width="100%">
<tr>
<td style="font-size:10pt;">
ACME Company<br />
Jane Doe<br />
Main Street. 1<br />
123456 Doecity<br />
Doeland<br />
</td>
<td align="right" style="font-size:9pt;">
Foo Company<br />
Foo Street. 2a<br />
23456 Footown<br />
<small>
CEO: Foo Bar<br />
</small>
</td>
</tr>
</table>
<hr />
<h3>Invoice: 1000234 </h3>
<small>Service Invoice<br />
Invoice-Number: 1000234<br />
Customer-Nr.: 23456<br />
Invoice Date: 2020-11-20<br />
</small>
<br />
<table width="100%" style="margin-top:10mm">
<thead style="font-size:10pt;font-weight:bold;">
<tr>
<th align="left" style="width:8mm">Pos</th>
<th align="left" style="width:12mm">Qty</th>
<th align="left" style="width:20mm">Type</th>
<th align="left" style="width:95mm">Description</th>
<th align="right" style="width:20mm">Amount net</th>
<th align="right" style="width:20mm">Total net</th>
<th align="right" style="width:20mm"></th>
</tr>
<tr>
<td colspan="7" style="border-top:1px solid #000;"></td>
</tr>
</thead>
<tbody style="font-size:10pt;">
<tr>
<td>
1
</td>
<td>1</td>
<td>Service</td>
<td>
<small><strong>Service</strong><br />
Consulting about XYZ</small>
</td>
<td style="text-align:right;">100.00 €</td>
<td style="text-align:right;">100.00 €</td>
<td style="text-align:right;"></td>
</tr>
<tr>
<td colspan="7" style="border-bottom:1px solid #000"></td>
</tr>
<tr>
<td colspan="7" style="border-bottom:1px solid #000"></td>
</tr>
<tr>
<td colspan="3">
</td>
<td>
Summe Nettobetrag:
</td>
<td colspan="2" style="text-align:right;">
100.00 €
</td>
</tr>
<tr>
<td colspan="3">
</td>
<td>
VAT. (19%):
</td>
<td colspan="2" style="text-align:right;">
19.00 €
</td>
</tr>
<tr>
<td colspan="3">
</td>
<td>
<b>Total gross:</b>
</td>
<td colspan="2" style="text-align:right;">
<b>119.00 €</b>
</td>
</tr>
<tr>
<td colspan="7" style="border-bottom:1px solid #000"></td>
</tr>
</tbody>
</table>
<table style="margin-top:3mm">
<tr>
<td colspan="5" ><br />Thank you for being our customer.<br /></td>
</tr>
<tr style="font-size:8pt">
<td colspan=5>
Our terms and conditions apply (<a href="#">Terms and Conditions</a>). </td>
</tr>
</table>
CSS Inline Styles sind XSLFO Styles
Das was im Beispiel aussieht wie CSS-Styles sind eigentlich XSLFO-Styles (siehe z.B. hier). [XSLFO](https://de.wikipedia.org/wiki/Extensible_Stylesheet_Language_%E2%80%93_Formatting_Objects#:~:text=XSL%2DFO%20(Extensible%20Stylesheet%20Language,auf%20einer%20Seite%20angeordnet%20werden.&text=Mit%20XSL%2DFO%20k%C3%B6nnen%20Dokumente,%C3%BCber%20einen%20Sprachsynthesizer%20formatiert%20werden.) ist die zugrundeliegende Sprache, aus der das PDF-erzeugt wird. Das HTML wird dabei in XSLFO umgewandelt und daraus dann das PDF erzeugt.
D.h. es dürfen nur Style bzw. Attribute verwendet werden, die auch XSLFO erlaubt wie z.B. background-color, font-size, text-align usw.
Weitere Attribute: https://www.data2type.de/xml-xslt-xslfo/xsl-fo/xslfo-referenz/attribute (externer Link)
D.h. dieser inline-style
style="text-align: center; color: red"
wird im Hintergrund umgeschrieben zu:
text-align="center" color="red"
Vorlage
Eine Vorlage, wie man dynamisch aus JSON-Daten ein PDF erzeugt findet man in dieser Vorlage.
Unterstützte HTML Tags
- h1
- h2
- h3
- h4
- h5
- h6
- a
- p
- div
- span
- img (Bild-URL muss öffentlich erreichbar sein oder base64, siehe Beispiel)
- hr
- br
- pre
- b
- strong
- i
- u
- cite
- code
- big
- small
- sub
- blockquote
- ul / ol / li
- table
- tr
- td
- thead
- tbody
- tfoot
Bilder in PDF einbinden
Um Bilder in der PDF Datei einzubinden können sie den img Tag verwenden. Als Quelle (src) kann dabei eine öffentlich erreichbare URL oder base64 kodierte Bilddaten verwendet werden, z.B. :
<h1>Html2PdfConverter Bilder</h1>
<hr />
<h2>JPG URL</h2>
<img width="100" src="https://apps.synesty.com/templates/templatesv2/img/studio_inline_logo_square_200.jpg">
<h2>JPG Base 64</h2>
<img width="100" src="data:image/jpeg;base64,/9j/4AAQSkZ...">
Beispielflow:
FlowExport-pdf-1-Bilderinpdf.json
Inputs
Das sind die Optionen, mit denen man den Step konfigurieren kann.
Name | Datentyp | Beschreibung | Pflichtfeld | Werte |
---|---|---|---|---|
inputFile | FILELIST | Ihre HTML Eingabedatei | Ja | |
outputFileName | STRING | PDF-Dateiname. | Ja | |
pageSize | STRING | Ermöglicht es Ihnen, die Größe der Seiten festzulegen (z.B. A4, A3 oder eine benutzerdefinierte Höhe und Breite). | Ja |
|
pageHeight | STRING | Seitenhöhe in mm | Nein | |
pageWidth | STRING | Seitenbreite in mm | Nein | |
pageOrientation | STRING | Seitenausrichtung | Nein |
|
enablePageNumbers | STRING | Wenn aktiviert, werden die Seitenzahlen auf die Ergebnis-PDF-Datei gedruckt | Nein |
|
enablePageTitle | STRING | Wenn aktiviert, wird der Seitentitel (aus dem HTML-Titel-Tag) auf jeder Ergebnisseite gedruckt | Nein |
|
marginBottom | STRING | Margin des Inhalts bis zum Ende der Seite in mm | Nein | |
marginTop | STRING | Margin des Inhalts bis zum Ende der Seite in mm | Nein | |
marginLeft | STRING | Margin des Inhalts bis zum Ende der Seite in mm | Nein | |
marginRight | STRING | Margin des Inhalts bis zum Ende der Seite in mm | Nein | |
outputType | STRING | FILE - Die Ausgabe ist eine einzelne Datei (Standard). FILELIST - Die Ausgabe ist eine Liste von Dateien. | Nein |
|
strictValidation | STRING | Wenn Sie diese Option auf "Deaktiviert" setzen, ist der PDF-Renderer nachsichtiger, wenn es um gültige oder nicht erlaubte Attribute geht, z.B. dürfen Sie border in einem body angeben, ohne dass ein Fehler kommt - was aber eigentlich nicht erlaubt ist. | Nein |
|
Outputs
Das sind die Ergebnisse des Steps, die von nachfolgenden Steps, nach der Ausführung verwendet werden können.
Name | Datentyp | Beschreibung | Pflichtfeld | Werte |
---|---|---|---|---|
pdfFile | FILE | Eine oder mehrere PDF-Dateien (je nach Anzahl der Eingabedateien). | Ja |