# 5. Definition der Positionen im PDF

In der Übersicht der angelegten Formulare gibt es einen zusätzlichen Icon (ein PDF-Symbol), wenn die PDF-Erstellung aktiv ist. In der nachfolgenden Tabelle werden die Positionen der Einträge im Vorlagen-PDF festgelegt. Es können beliebig viele Positionen angelegt werden.

<table border="1" id="bkmrk-" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td class="align-right">[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/wxl6gcsNKxgGmQhd-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/wxl6gcsNKxgGmQhd-image.png)

</td></tr></tbody></table>

Es gibt die Möglichkeit direkt im Backend ein ausgefülltes **Test-PDF** zu erzeugen. Damit können Sie schnell überprüfen, ob alle Positionen die richtigen Stellen im Formular ausfüllen. Alle veröffentlichten Positionen werden ausgegeben, bei Formularfeldern steht dort der Feldname.  
Da keine Eingangsdaten verfügbar sind, werden die Bedingungen nicht abgeprüft, es werden also <span style="text-decoration: underline;">alle Felder</span> und alle Seiten in das Test-PDF übernommen.

<table border="1" id="bkmrk--1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/6S6Gb3RGeYobdbaF-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/6S6Gb3RGeYobdbaF-image.png)

</td></tr></tbody></table>

Es gibt verschiedene Typen der Positionen:

- **Textposition** - Ausgabe von Formularinhalten, Texten und InsertTags
- **Bildposition** - Ausgabe von Bilddaten
- **Barcode** - Ausgabe eines Barcodes aus Formularinhalten, Text, InsertTags

#### Anlegen der einzelnen Positionen:

##### a) Textpositionen

<table border="1" id="bkmrk--2" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/LDP4krBQ1wdLpJuX-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/LDP4krBQ1wdLpJuX-image.png)

</td></tr></tbody></table>

Im ersten Abschnitt werden die einzutragenden Informationen eingestellt. Es gibt folgende Möglichkeiten:

- einen Feldnamen aus dem Formular
- ein fester Text in Anführungszeichen
- InsertTags müssen auch in Anführungszeichen gesetzt werden, da sie als Text verarbeitet werden sollen

Im Beispiel sind das die Formularfelder nachname und vorname und ein fester Text mit Komma. Diese einzelnen Definitionszeilen werden mit Leerzeichen aneinander gereiht (kein Leerzeichen vor einem Komma). Sollte das **automatische Leerzeichen** in seltenen Situationen stören, kann man dieses abschalten.

In der 2. Spalte kann für die Ausgabe eine Bedingung programmiert werden. Wenn die Bedingung leer ist, wird die Position immer ausgegeben. Im Beispiel ist das Komma abhängig davon, ob das Feld **vorname** im Formular ausgefüllt (ver­wen­det) wurde. Das Komma wird also nur ausgegeben, wenn der vorname ausgefüllt wurde.

Zusätzlich kann die Bedingung invertiert werden:  
verwendet = Feld ausgefüllt / Checkbox oder Radiobutton ausgewählt  
leer = Feld ist leer / Checkbox oder Radiobutton nicht ausgewählt

Die festen Texte können auch InsertTags enthalten:

<table border="1" id="bkmrk--3" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/hHuEwdxaUH1xxGvQ-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/hHuEwdxaUH1xxGvQ-image.png)

</td></tr></tbody></table>

In diesem Beispiel wird "Berlin, 04.02.2024" oder aber nur "04.02.2024" im PDF eingetragen, je nachdem, ob **ort** angegeben ist oder nicht.

Um Checkboxen in der PDF-Vorlage anzukreuzen, verwendet man ein "X" mit dem Checkbox-Wert in der Bedingung

<table border="1" id="bkmrk--4" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/cYSSpo6yCX1KnOQp-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/cYSSpo6yCX1KnOQp-image.png)

</td></tr></tbody></table>

In der Zeile „Bemerkungen und Notizen“ können Sie Hinweise zu der Position speichern, beispielsweise bei Checkboxen oder Radiobuttons, wo nur ein „X“ ausgegeben wird, kann hier für die Backend-Ansicht die Option beschrieben werden.

Möchten Sie alle angekreuzten Werte in einer kommegetrennten Liste als Text anzeigen, dann geben Sie nur den Feldnamen an.

Im folgenden Teil des Backend-Formulars geht es um die Position im PDF, wo genau die gewählte Information eingetragen wird und um die Schriftattribute.

<table border="1" id="bkmrk--5" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/PkmRe6GR4nDtMzUG-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/PkmRe6GR4nDtMzUG-image.png)

</td></tr></tbody></table>

Die **Position** besteht aus der PDF-Seite (bezieht sich auf die Seite in der Vorlage), dem horizontalen Abstand vom linken Seitenrand und dem vertikalen Abstand vom oberen Rand. Optionell kann auch ein rechter Rand eingegeben werden. Das ist oft sinnvoll bei Formularfeldern vom Typ Textarea, wo der Zeilentext umbrechen soll. Abhängig von der verwendeten Schriftart gibt es möglicherweise eine konstante Verschiebung durch Über- und Unterlängen im Font.  
Eine gute Möglichkeit, die Positionen zu ermitteln, ist das Ausmessen der PDF-Seite in Programmen, wie Photoshop. In einem Positionstest kann schnell der Versatz ermittelt und in den anderen Positionen eingerechnet werden.  
*Hinweis: Die Positionen beziehen sich immer auf den Grund-Offset in den Formulareigenschaften.*

Beginnt eine Positionsangabe mit + oder ­-, dann wird die Position **relativ** zu vorigen Position platziert. Beispielsweise kann man durch Y-Position „+5“ die Ausgabe auf 5 mm unter der letzten Ausgabeposition setzen.

##### b) Bildposition

Für die Einbindung von Bildern in das PDF gibt es 4 Möglichkeiten:

- Ein Bild aus der Dateiverwaltung auswählen
- Ein Bild aus dem Upload, also aus dem Formular übernehmen
- Ein Bild, was als DataStream in den Formulardaten enthalten ist (z.B. aus der Unterschriften-Erweiterung [do-while/contao-signature-formfield-bundle](https://packagist.org/packages/do-while/contao-signature-formfield-bundle))
- Ein Bild über die UUID der Datei einbinden (z.B. 735e095f-a30e-11ee-9009d02fd8b3)
- Ein Bild über die Pfadangabe einbinden (z.B. files/contaodemo/media/demo-images/contao-on-blue.jpg)

<table border="1" id="bkmrk--6" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/Rw1ctGNgeoPZ8q9U-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/Rw1ctGNgeoPZ8q9U-image.png)

</td></tr></tbody></table>

Bei allen Bildpositionen wird die Seite, die Position und die Größe angegeben. Das Bild wird immer auf die angegebenen Maße zurecht geschnitten (MODE\_CROP = Exaktes Format). Zusätzlich ist es möglich, eine Bedingung für die Einbindung anzugeben, das Bild wird dann nur eingebunden, wenn die Bedingung erfüllt ist. So lassen sich beispielsweise Bilder passend zu einem Auswahlfeld einbinden.

<table border="1" id="bkmrk--7" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/MUKHNDekb4mUYsl3-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/MUKHNDekb4mUYsl3-image.png)

</td><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/WglkHbiFsglhGQVA-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/WglkHbiFsglhGQVA-image.png)

</td></tr><tr><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/UTI8wLh1KBRsbdLV-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/UTI8wLh1KBRsbdLV-image.png)

</td><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-03/scaled-1680-/u3HdOkS7jWvCrRef-image.png)](https://books.softleister.de/uploads/images/gallery/2026-03/u3HdOkS7jWvCrRef-image.png)

</td></tr></tbody></table>

**Contao 5.7:** Jetzt ist es möglich, mit dem Datei-Upload mehrere Dateien hochzuladen. Um eine bestimmte Datei davon adressieren zu können, wird an den Feldnamen ein \_0, \_1, ... angehängt. Beispiel: ist der Feldname *stdupload* und es werden 3 Dateien hochgeladen, dann sind die Dateien unter den Feldnamen *stdupload\_0*, *stdupload\_1* und *stdupload\_2* erreichbar.

##### c) Barcode

Binden Sie einen Barcode aus Ihren Daten in das PDF ein:

<table border="1" id="bkmrk--8" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/KWeeKLBjHfykOUSs-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/KWeeKLBjHfykOUSs-image.png)

</td></tr></tbody></table>

Folgende Barcode-Typen zur Auswahl:  
<sup>(typenabhängig ist teilweise der Zeichensatz eingeschränkt)</sup>

**2D-Barcodes**

- QR-Code - einfache Fehlerkorrektur
- QR-Code - mittlere Fehlerkorrektur
- QR-Code - bessere Fehlerkorrektur
- QR-Code - beste Fehlerkorrektur
- PDF417 (ISO/IEC 15438:2006)
- Datamatrix (ISO/IEC 16022:2006)

**1D-Barcodes**

- Code 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9
- Code 39 + Checksumme
- Code 39 Extended
- Code 39 Extended + Checksumme
- Code 93 – USS-93
- Standard 2 of 5
- Standard 2 of 5 + Checksumme
- Interleaved 2 of 5
- Interleaved 2 of 5 + Checksumme
- Code 128 AUTO
- Code 128 A
- Code 128 B
- Code 128 C
- EAN 8
- EAN 13
- UPC-A
- UPC-E
- 5-Ziffern UPC-Based Extension
- 2-Ziffern UPC-Based Extension
- MSI
- MSI + Checksumme (module 11)
- Codabar
- Code 11
- Pharmacode
- Pharmacode TWO-TRACKS
- IMB - Intelligent Mail Barcode - Onecode – USPS-B-3200
- Postnet
- Planet
- RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)
- KIX (Klant index - Customer index)

Wie bei Textpositionen, können hier ver­schiedene Formulardaten, Texte und Insert­Tags verknüpft werden. Der re­sul­tierende Text wird in dem Barcode kodiert. Der Barcode wird normalerweise in der Standardfarbe ausgegeben, möchten Sie eine andere Farbe verwenden, geben Sie diese im Feld **Textfarbe** überschreiben an.

<table border="1" id="bkmrk--9" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>[![image.png](https://books.softleister.de/uploads/images/gallery/2026-02/scaled-1680-/J2phJJBXjjW1eSz3-image.png)](https://books.softleister.de/uploads/images/gallery/2026-02/J2phJJBXjjW1eSz3-image.png)

</td></tr></tbody></table>

Darunter geben Sie die Position im PDF und die Größe des Barcodes an. Zusätzlich ist es möglich, eine Bedingung für die Einbindung anzugeben, der Barcode wird nur eingebunden, wenn die Bedingung erfüllt ist.