HTML als Vorlage

Neben der Konvertierung von bestehenden HTML-Dokumenten über den Webservice "Converter" oder die Konvertierung von URLs über den Webservice "URLConverter" kann webPDF auch HTML-Dokumente als Basis für neue PDF-Dokumente verwenden, die eine Vorlage definieren.

 

Mittels der Template Engine Freemarker kann webPDF ein HTML-Dokument in eine Vorlage verwandeln, die als Basis für neue PDF-Dokumente dient. Diese Dokumente können dann dynamisch mit Inhalten (Variablen) gefüllt und daraus ein neues PDF-Dokument erstellt werden. Sowohl die Vorlage als auch die Variablen werden dynamisch beim Webservice-Aufruf bzw. über die Parameter des Webservice übergeben.

 

Bei der Gestaltung der HTML-Dokumente steht Ihnen (neben der Template-Engine) die gesamte HTML- und CSS-Syntax zur Verfügung. Das so erstellte HTML-Dokument (HTML-Template) wird dann über den Webservice "Converter" unter Verwendung der Chromium-Bridge in ein PDF-Dokument umgewandelt.

 

hint

Die Beschreibung der Template Engine Freemarker finden Sie auf der Website https://freemarker.apache.org/docs/index.html

 

Sie übergeben das definierte HTML-Template als Ausgangsdatei (das zu konvertierende Dokument) beim Aufruf des Webservice "Converter". Über die Parameter des Webservice "Converter" im Bereich "<html>" setzen Sie das Attribut "useAsTemplate" auf "true".

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<operation xmlns="http://schema.webpdf.de/1.0/operation">
  <converter>
      <html useAsTemplate="true">
          <templateData>a29J60iOHFQkrn01...JUVPRg0K</templateData>
      </html>
  </converter>
</operation>
 

Durch diese Einstellung wird die Template-Engine aktiviert, und der Webservice interpretiert das HTML-Dokument als Vorlage. Vor der eigentlichen Konvertierung wird jetzt noch die Variablen-Ersetzung durchgeführt und das HTML-Dokument bei der Konvertierung als Freemarker-Template behandelt.

 

Die Übergabe der Variablen erfolgt unter "<templateData>" in den Parametern als "BASE64 encoded" JSON-Objekt.

 
{
"page1": "Text for page 1",
"page2": "Text for page 2",
"page3": "Text for page 3",
"image": {
  "name": "Warning!",
  "data": "data:image/png;base64,iVBORw0KGgoAAAAN...SUhEUgAABJwAAAMRCAIAAAAmxTsD"
 }
}

 

Das JSON-Objekt wird dann während der Ausführung der Konvertierung in Freemarker-Variablen umgewandelt. Diese Variablen erhalten den Prefix "${custom. ...}" und können so in dem HTML-Dokument verwendet werden (rot hervorgehoben).

 

<html>
<head>
   <meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
   <style type="text/css" media="print">
       div.page {
           page-break-after: always;
           page-break-inside: avoid;
       }
   </style>
</head>
<body>
<div class="page">
   <h1>This is Page 1</h1>
   <i>${custom.page1?upper_case}</i>
   <br>
  ${custom.image.name}<img src="${custom.image.data}" width="100" height="100"/>
</div>
<div class="page">
   <h1>This is Page 2</h1>
   <b>${custom.page2}</b>
</div>
<div class="page">
   <h1>This is Page 3</h1>
   <u>${custom.page3}</u>
</div>
</body>
</html>

 

Über diesen Weg können Sie komplexe HTML-Dokumente mit Makros und Variablen definieren. So entstehen neue PDF-Dokumente, die dynamisch während der Konvertierung berechnet werden.