====== JSON-Druckvorlage: Ordneretikett snapper/tpl-folder ======
Diese JSON-Vorlage beschreibt den Aufbau eines PDFs für ein Ordneretikett im Format A7. Sie wird im System gespeichert und kann vom API direkt aufgerufen werden.
===== Gesamtstruktur =====
{
"meta": { ... },
"page": { ... },
"header": { ... },
"footer": { ... },
"elements": [ ... ]
}
===== 1. meta =====
Metadaten des PDFs, die im Dokument eingebettet werden.
^ Feld ^ Beschreibung ^ Beispiel ^
| title | Dokumenttitel | "{{folder_name}}" |
| author | Autor (Name der Person oder Organisation) | "{{first_name}} {{last_name}}" |
| subject | Thema des Dokuments | "Ordner-Etikett" |
| keywords | Stichworte, durch Kommas getrennt | "{{keywords}}" |
===== 2. page =====
Seiteneinstellungen für das Etikett.
^ Feld ^ Beschreibung ^ Beispiel ^ Mögliche Werte ^
| size | Papierformat | "A7" | A4, A5, A6, A7, Letter |
| orientation | Ausrichtung der Seite | "P" | P (Hochformat), L (Querformat) |
| margin | Seitenränder in mm | {top:20,...} | top, bottom, left, right |
===== 3. header =====
Kopfzeile auf jeder Seite.
^ Feld ^ Beschreibung ^ Beispiel ^
| enabled | Header anzeigen (true/false) | true |
| height | Höhe in mm | 15 |
| content | Textinhalt mit Variablen | "Musterfirma GmbH – {{date}}" |
| font | Schriftart | "helvetica" |
| font_size | Schriftgröße in pt | 10 |
| style | Stil (B, I, U, Kombinationen) | "B" |
| align | Ausrichtung des Textes | "C" (zentriert) |
===== 4. footer =====
Fußzeile auf jeder Seite.
^ Feld ^ Beschreibung ^ Beispiel ^
| enabled | Footer anzeigen (true/false) | true |
| height | Höhe in mm | 15 |
| content | Textinhalt mit Variablen | "Seite {{page_no}} von {{total_pages}}" |
| font | Schriftart | "helvetica" |
| font_size | Schriftgröße in pt | 8 |
| style | Stil | "I" |
| align | Ausrichtung | "C" |
===== 5. elements =====
Liste der darzustellenden Elemente im Layout. Reihenfolge ist relevant.
==== Typ: text ====
^ Feld ^ Beschreibung ^ Beispiel ^
| type | "text" | |
| x, y | Position in mm | 20, 40 |
| width | Breite in mm | 170 |
| font | Schriftart | "helvetica" |
| font_size | Schriftgröße in pt | 14 |
| style | Stil (B, I, U) | "B" |
| align | Ausrichtung (L, C, R) | "L" |
| multiline | Zeilenumbruch erlaubt (true/false) | false |
| content | Textinhalt mit Platzhaltern | "{{title}}" |
==== Typ: line ====
^ Feld ^ Beschreibung ^ Beispiel ^
| type | "line" | |
| x1, y1 | Startpunkt der Linie | 20, 55 |
| x2, y2 | Endpunkt der Linie | 190, 55 |
| style | Stilobjekt mit Dicke und Farbe | {"width":0.3,"color":[0,0,0]} |
===== 6. Platzhaltervariablen =====
Diese Variablen können im `content`, `meta`, `header` oder `footer` verwendet werden:
^ Variable ^ Beschreibung ^
| {{folder_name}} | Name des Ordners (z. B. für den PDF-Titel) |
| {{first_name}} | Vorname des Erstellers / Nutzers |
| {{last_name}} | Nachname |
| {{keywords}} | Schlagworte |
| {{title}} | Haupttitel des Etiketts (z. B. Projekttitel) |
| {{description}} | Beschreibung des Inhalts im Ordner |
| {{date}} | Aktuelles Datum (vom Backend gesetzt) |
| {{page_no}} | Aktuelle Seitennummer (von TCPDF automatisch) |
| {{total_pages}} | Gesamtseitenanzahl (von TCPDF automatisch) |
===== Hinweise =====
* Alle Maßeinheiten sind in **Millimetern**.
* Farben werden als RGB-Array angegeben, z. B. `[0, 0, 0]` für Schwarz.
* Kommentare im JSON selbst sind nicht erlaubt – du kannst aber `_comment`-Felder nutzen.
* Diese Vorlage eignet sich ideal für **Etiketten, Karteikarten oder kleine Drucksachen**.
===== Beispiel =====
{
"meta": {
"title": "{{folder_name}}",
"author": "{{first_name}} {{last_name}}",
"subject": "Ordner-Etikett",
"keywords": "{{keywords}}"
},
"page": {
"size": "A7",
"orientation": "P",
"margin": {
"top": 20,
"bottom": 20,
"left": 15,
"right": 15
}
},
"header": {
"enabled": true,
"height": 15,
"content": "Musterfirma GmbH – {{date}}",
"font": "helvetica",
"font_size": 10,
"style": "B",
"align": "C"
},
"footer": {
"enabled": true,
"height": 15,
"content": "Seite {{page_no}} von {{total_pages}}",
"font": "helvetica",
"font_size": 8,
"style": "I",
"align": "C"
},
"elements": [
{
"type": "text",
"x": 20,
"y": 40,
"width": 170,
"font": "helvetica",
"font_size": 14,
"style": "B",
"align": "L",
"multiline": false,
"content": "{{title}}"
},
{
"type": "text",
"x": 20,
"y": 50,
"width": 170,
"font": "helvetica",
"font_size": 12,
"style": "",
"align": "L",
"multiline": false,
"content": "{{description}}"
},
{
"type": "text",
"x": 20,
"y": 60,
"width": 100,
"font": "helvetica",
"font_size": 12,
"style": "",
"align": "L",
"multiline": false,
"content": "Datum: {{date}}"
},
{
"type": "line",
"x1": 20,
"y1": 55,
"x2": 190,
"y2": 55,
"style": {
"width": 0.3,
"color": [0, 0, 0]
}
}
]
}