DOCX-Template-Funktionen¶
Beim Generieren eines Word-Reports stellt flexiDok eine Reihe von Hilfsfunktionen zur Verfügung, die Sie direkt in Ihrem Word-Template aufrufen können — zum Beispiel, um Bilder einzufügen, Listen zu erzeugen oder Datumswerte zu formatieren.
So rufen Sie Funktionen im Template auf¶
Die Funktionen werden über die normale Template-Syntax verwendet:
| Syntax | Bedeutung |
|---|---|
+++INS funktion(arg)+++ |
Funktion aufrufen und Ergebnis als Text einfügen |
+++FOR eintrag IN funktion(arg)+++ … +++END-FOR eintrag+++ |
Über Listen-Ergebnis iterieren |
+++IMAGE funktion(arg)+++ |
Bild einfügen, das eine Funktion zurückgibt |
+++EXEC funktion(arg)+++ |
Funktion ausführen, ohne ein Ergebnis anzuzeigen |
Schleifenvariable mit $
Innerhalb einer FOR-Schleife wird die Schleifenvariable mit $ präfixiert angesprochen — also +++IMAGE $page+++, nicht +++IMAGE page+++.
Übersicht¶
| Funktion | Wofür |
|---|---|
createPDFPages |
PDF-Seiten als Bilder ins Dokument einfügen |
createImage |
Einzelnes Bild aus einer Bildsammlung einfügen |
createImageFromPDF |
Bereits geladenes PDF-Seitenbild wiederverwenden |
getValidator |
Namen des Ersteller-/Prüferuser für Unterschriftenzeile |
getFilename |
Dateinamen nach konfigurierter Regel erzeugen |
formatDate |
Datumswert formatieren |
timespanToMinutes |
Zeitwert in Minuten:Sekunden umwandeln |
fromDatabase |
Wert aus einer hinterlegten Lookup-Tabelle holen |
getComponentListByChapterSectionComponentName |
Alle Vorkommen einer bestimmten Komponente sammeln |
getComponentListByChapterSectionName |
Alle Komponenten eines Abschnitts sammeln |
getComponentListForAllSectionsByChapterName |
Pro Abschnitt ein flaches Objekt erzeugen (z.B. für Tabellen) |
getListFromChapterAndChapterType |
MultiChapter nach Typ filtern |
Bild- und PDF-Funktionen¶
createPDFPages¶
Rendert ein im Dokument hinterlegtes PDF seitenweise als Bilder, die dann mit +++IMAGE ...+++ ins Word-Template eingebettet werden.
Parameter
| Name | Beschreibung |
|---|---|
pdfInput |
PDF-Feld aus dem Dokument (z.B. aus einem Zertifikats- oder Anhang-Feld) |
pages |
Seitenbereich — z.B. `1-3`, `1,3,5` oder `` für alle Seiten |
width |
Breite in cm (Standard: 14) |
height |
Höhe in cm (Standard: 20) |
rotationInDegree |
Rotation in Grad, z.B. `90` (Standard: keine Rotation) |
Beispiel
+++FOR page IN createPDFPages(anhang.pdf)+++
+++IMAGE $page+++
+++END-FOR page+++
Tip
Kann ein PDF nicht geladen werden, wird automatisch ein Platzhalter-PDF verwendet, damit der Report trotzdem generiert werden kann.
createImage¶
Fügt ein einzelnes Bild aus einer Bildsammlung ins Template ein. Eventuell auf dem Bild hinterlegte Markierungen/Beschriftungen (Annotationen) werden dabei automatisch mit eingebrannt.
Parameter
| Name | Beschreibung |
|---|---|
image |
Bild-Eintrag aus einer Bildsammlung |
width |
Breite in cm (Standard: 6) |
height |
Höhe in cm (Standard: 6) |
ppiOverride |
Bildauflösung (PPI) für genau dieses Bild; übersteuert die Template-Einstellung Bildauflösung im PDF. 0 = kein Herunterskalieren (Originalauflösung). Leer lassen bzw. null ⇒ Template-Einstellung verwenden |
showAlt |
true ⇒ Titel des Bildes als Alt-Text übernehmen |
showCaption |
true ⇒ Kommentar des Bildes als Bildunterschrift übernehmen |
rotationInDegree |
Rotation in Grad (Standard: keine Rotation) |
Reihenfolge der Parameter
ppiOverride steht vor showAlt und showCaption. Wer showAlt/showCaption setzt, muss ppiOverride davor angeben – mit null für die Template-Einstellung oder 0 für die Originalauflösung. Beispiel: createImage($pic, 10, 7, null, true, true).
Beispiel
+++FOR pic IN allgemein.fotos.bilder+++
+++IMAGE createImage($pic, 10, 7, null, true, true)+++
+++END-FOR pic+++
Einzelnes Bild mit fester Auflösung von 300 PPI:
+++IMAGE createImage($pic, 7.5, 5, 300)+++
createImageFromPDF¶
Übernimmt ein bereits geladenes PDF-Seiten-Bild (z.B. aus createPDFPages) in die Form, die +++IMAGE+++ erwartet. Sinnvoll, wenn Sie zwei Template-Durchläufe auf dasselbe Bild machen möchten, ohne die PDF-Seite erneut zu rendern.
Beispiel
+++IMAGE createImageFromPDF(seite)+++
Text- und Datums-Funktionen¶
getValidator¶
Liefert den Namen des Benutzers, der das Dokument erstellt hat — gedacht für Unterschriftenblöcke.
Parameter
| Name | Beschreibung |
|---|---|
firstNameFirst |
true ⇒ "Vorname Nachname" · false (Standard) ⇒ "Nachname Vorname" |
Beispiel
Geprüft durch: +++INS getValidator(true)+++
getFilename¶
Erzeugt den Dateinamen des Reports anhand der Regel, die im Dokument unter Dynamischer Dateiname konfiguriert ist. Die dort angelegten Bausteine (Feldwerte, Trennzeichen, Freitext, Revisionsnummer) werden in der eingestellten Reihenfolge zusammengesetzt.
Beispiel
Dateiname: +++INS getFilename()+++
formatDate¶
Formatiert einen Datumswert. Die Sprache entspricht der in flexiDok eingestellten Oberflächensprache.
Parameter
| Name | Beschreibung |
|---|---|
datestr |
Datumswert (z.B. aus einem Eingabefeld) |
format |
Formatvorlage, z.B. `dd.MM.yyyy`, `MMMM yyyy`, `MMyy` |
Ist der Eingabewert kein gültiges Datum, wird ein Hinweistext in der aktuellen Sprache ausgegeben.
Beispiel
Erstellt am +++INS formatDate(allgemein.dokumentation.datum.value, `dd.MM.yyyy`)+++
timespanToMinutes¶
Wandelt einen Zeitwert in Sekunden in das Format m:ss um.
Beispiel — 725 wird zu "12:05":
Dauer: +++INS timespanToMinutes(messung.ablauf.dauer_sekunden.value)+++ min
Bei einem ungültigen Wert wird ein leerer Text zurückgegeben.
fromDatabase¶
Schlägt einen Eintrag in einer der in flexiDok hinterlegten Lookup-Tabellen (z.B. Kundenstammdaten, Artikellisten) nach.
Parameter
| Name | Beschreibung |
|---|---|
database |
Name der Datenbank |
document |
Name der Tabelle/des Dokuments innerhalb der Datenbank |
searchKey |
ID, nach der gesucht wird |
Wird der Eintrag gefunden, erhalten Sie das komplette Objekt und können auf alle Felder zugreifen.
Beispiel
+++INS fromDatabase(`kunden`, `stammdaten`, allgemein.kunde.id.value).name+++
Listen-Funktionen¶
Diese Funktionen helfen dabei, Daten aus mehreren Kapitel-Wiederholungen oder Abschnitten gesammelt im Template zu verwenden — typischerweise für Tabellen oder Aufzählungen.
getComponentListByChapterSectionComponentName¶
Sammelt alle Vorkommen einer bestimmten Komponente über alle Wiederholungen eines Kapitels hinweg.
Parameter
| Name | Beschreibung |
|---|---|
chaptername |
Name des Kapitels |
sectionname |
Name des Abschnitts darin |
componentname |
Name der Komponente, deren Werte gesammelt werden sollen |
Anwendungsfall — Wenn in jeder Wiederholung eines Kapitels dasselbe Feld existiert (z.B. ein Messwert) und Sie alle Werte gebündelt auflisten möchten.
Beispiel
+++FOR m IN getComponentListByChapterSectionComponentName(`kapitelname`, `abschnittname`, `komponentenname`)+++
Nr. +++INS $m.ChapterCount+++: +++INS $m.value+++
+++END-FOR m+++
getComponentListByChapterSectionName¶
Wie oben, liefert aber alle Komponenten eines Abschnitts — nicht nur eine bestimmte.
Parameter
| Name | Beschreibung |
|---|---|
chaptername |
Name des Kapitels |
sectionname |
Name des Abschnitts |
Beispiel
+++FOR c IN getComponentListByChapterSectionName(`kapitelname`, `abschnittname`)+++
+++INS $c.name+++: +++INS $c.value+++
+++END-FOR c+++
getComponentListForAllSectionsByChapterName¶
Liefert pro Abschnitt ein flaches Objekt mit allen Komponenten dieses Abschnitts — ideal, wenn jeder Abschnitt eine Zeile einer Tabelle ergibt.
Jeder Eintrag enthält zusätzlich Name und Title des Abschnitts.
Beispiel
+++FOR s IN getComponentListForAllSectionsByChapterName(`kapitelname`)+++
+++INS $s.Title+++: +++INS $s.wert.value+++ +++INS $s.einheit.value+++
+++END-FOR s+++
Bei wiederholten Kapiteln erhalten Sie eine Liste von Listen (eine pro Wiederholung).
getListFromChapterAndChapterType¶
Filtert ein wiederholtes Kapitel auf die Einträge eines bestimmten Kapitel-Typs.
Parameter
| Name | Beschreibung |
|---|---|
chaptername |
Name des Kapitels |
multichaptertype |
Kapitel-Typ, nach dem gefiltert werden soll |
Beispiel
+++FOR e IN getListFromChapterAndChapterType(`kapitelname`, `TypA`)+++
+++INS $e.Title+++
+++END-FOR e+++