Eine PDF-Vorlage besteht aus:
Es gibt folgende Befehle:
(sortiert nach Anmeldereihenfolge)
BefehlBeschreibung
Schriftart von nachfolgenden Elementen
|Font Fontname
|Font Fontname Size
|Font Fontname Size Typ
|Font Fontname Size Typ C
|Font Fontname Size Typ R
Legt die Schriftart, -größe und -typ fest
Beispiel (Arial 10pt fett): |Font Arial 10 B
Parameter:
  • 1. Parameter = Fontname: Courier, Arial, Helvetica, Times, Symbol, ZapfDingbats, ArialEmbedded (bei ArialEmbedded wird die Schrift eingebettet), OpenSans, Candara, Constantia, CatherineDeBeaumont, kaufmanb, azoft-sans-bold, arialnarrow/arialnarrowbold, ocrb10n, roboto, trebuchet, calibri, chiller, sanssemicondensed, segoeui, immenhausen-regular, secca, oldenglt, sourcesanspro, overpass, tcm, russo_one, helvetica_normal, CabinCondensed, Bitter
  • 2. Parameter = Schriftgröße
  • 3. Parameter = Typ: Kombination aus B (fett), U (unterstrichen), I (kursiv), R (regulär =Standard, auch "-" möglich)
  • 4. Parameter = Anordnung: "C": Zentriert, "R": Rechtsbündig, "J": Blocksatz(experimentell!) (ggf. als 3. Parameter Typ "R" angeben!)

Weitere Schriftarten können wir sehr gerne für Sie einbinden, hierfür benötigen wir die Ergebnisse dieser Webseite (fpdf.org setzen wir für die Generierung der PDFs ein): http://www.fpdf.org/makefont/
Die Ergebnisse dieser Seite können auch unter "Admin/Basiskonfig/Dateien" im Unterverzeichnis "font" angelegt werden:
SCHRIFTNAME.php, SCHRIFTNAME.z (in .php-Datei muss der Dateiname der .z-Datei ggf. angepasst werden!)
Stilversionen b,bi,i ergänzend so:
SCHRIFTNAMEb.php, SCHRIFTNAMEb.z
SCHRIFTNAMEi.php, SCHRIFTNAMEi.z
SCHRIFTNAMEbi.php, SCHRIFTNAMEbi.z
|Color rot grün blau
|Color grauwert
Setzt die Schriftfarbe/Linienfarbe
alle Werte 0..255
Beispiel blau = |Color 0 0 255
Positionierung von nachfolgenden Elementen
|Pos x
|Pos x y
|Pos x -y
|Pos x y xRechterRand
|Pos x +dy xRechterRand
|Pos x y -xRechterRand
|Pos x ^
|Pos x ^+20
|Pos x ^-10 |Pos x * 190
Setzt die Position für den nachfolgenden Text.
Alle Angaben in Millimeter.
x negativ: Angabe von rechts.
y negativ: Angabe von unten (für die Anwendung im Footer; ansonsten sicherstellen dass |Bottom weit genug unten gesetzt ist!).
^ ist die y-Position des letzten |Pos-Befehls.
+dy ist eine Diffenenzangabe zum letzten |Pos-Befehl
* ist die aktuelle y-Position
|Bottom mmSetzt den Rand von unten (in Millimeter). Standard ist 30 mm. Befehl sollte am Anfang der Seite stehen.
|Paper x y Legt die Größe des Papiers in Millimeter fest.
Beispiel A4 quer: |Paper 297 210
Die Position des Befehls ist unerheblich.
|NewPageErzwingt eine neue Seite
|LineHeight wert
LineHeight wert werttabelle werttabellezeile1
Gibt den Zeilenabstand an. Gilt auch für Tabellen. Standard ist 1. 10% größerer Abstand: 1.1
Ein optionaler 2. Parameter gibt den Abstand innerhalb einer Tabellenzelle an
Ein optionaler 3. Parameter gibt den Abstand innerhalb einer Tabellenzelle an der nur für die 1. Zeile gilt
Negative Werte gelten vom rechten/unteren Rand aus berechnet.
Bildelemente
|Image dateiname
|Image unterverz/dateiname
|Image dateiname x
|Image dateiname x y
|Image dateiname x *
|Image dateiname hHÖHE
|Image dateiname h##w##
Bindet das Bild ein. Bei Angabe eines x-Wertes wird das Bild auf diese Größe verkleinert. Bei Angabe eines y-Wertes bzw. * (=automatische Berechnung) wird der Cursor auf die Zeile nach dem Bild gesetzt. Bei Angabe eines Höhe-Wertes (h30 für 30 mm) wird das Bild in dieser Höhe dargestellt und die Breite entsprechend berechnet.
Folgende Zeilen zentrieren Bild (feste Höhe!) und Text:
|Pos 20 100 100
|Font Arial 12 - C
|Image datei.jpg h20 20
|Bildunterschrift
h##w## als Breite legt die Maximal-Breite und Höhe fest (Verhältnisgemäße Verkleinerung)
|QrCode breite textWird ersetzt durch ein QR-Code-Bild für den Scan per Smartphone-App.
Die Breite gibt die Größe in mm an.
"text" kann beliebige Platzhalter wie {#URL#}, {#vcard#} o.ä. enthalten. \n definiert einen Zeilumbruch im QR-Code.
|QrCode 30 <EPCQR>
Erstellt auf Rechnungen einen QR-Code für Bezahlungs-Apps (Girocode)
|Barcode breite höhe inhaltWird ersetzt durch einen Barcode, standardmäßig C128.
Abweichender Typ ist möglich: |BarcodeC39 80 30 1234567890
Verfügbare Typen: C39, C39+, C39E, C39E+, C39, S25, S25+, I25, I25+, C128, C128A, C128B, C128C, EAN2, EAN5, EAN8, EAN13, UPCA, UPCE, MSI, MSI+, POSTNET, PLANET, RMS4CC, KIX, IMB, CODABAR, CODE11, PHARMA, PHARMA2T
Geometrische Elemente
|Line x1 y1 x2 y2Zeichnet eine Linie (alle Angaben in Millimeter)
Bei y1 und/oder y2 kann per # die aktuelle Position verwendet werden.
|Rect x y breite hoehe
|Rect x y breite hoehe F
|Rect x y breite hoehe X
|Rect ^ ^ breite hoehe
Zeichnet ein Rechteck (alle Angaben in Millimeter).
"F" gibt an, dass der Innenraum mit der "FillColor" gefüllt wird.
"DF" ist Rahmen+Füllung.
"X" ist ein Kreuz in der Mitte (um leicht angehakte Checkboxen zu zeichnen).
Ein 6. Paramater (ggf. "-" als 5. Parameter angeben) gibt die Strichstärke an (0.2 ist der Standard).
^ verwendet die aktuelle Position als x- bzw. y-Wert.
|Circle x y radius
|Circle x y radius F
Zeichnet einen Kreis (alle Angaben in Millimeter).
"F" gibt an, dass der Innenraum mit der "FillColor" gefüllt wird.
"DF" ist Rahmen+Füllung.
|FillColor rot grün blau
|FillColor grauwert
Setzt die Füllfarbe für |Rect
|BorderColor rot grün blau
|BorderColor grauwert
Setzt die Randfarbe für |Rect
Tabellen
|PositionenZeigt an dieser Stelle die Rechnungspositionen an (mögliche Parameter: size=9 sizesmall=7 pos=nein betragsumme=FONTNAME betragsummestyle=B betragsummelast=FONTNAME summe=rechts colorhead=#c8c8c8 colorfoot=#c8c8c8 gitter=H1H2BF1F2F3V1V2V3 header=LR height=6 heightsmall=4 space=1 spacesmall=1 headerheight=2 colorfont=#ff0000 bold=ja)
|PositionenStartOptional vor |Positionen: Liste von Tabellen-Kopfzeilen, |-getrennt, ggf. jeweils mit text:breite
Standard: Pos.|Anzahl|Beschreibung|Einzelpreis|Gesamtpreis
|PositionenFieldsOptional vor |Positionen: Liste von Tabellen-Felder,|-getrennt
Standard: pos|anzahl|text|betrag|summe
Mögliche Felder: pos, anzahl, text, betrag, betragnetto, summenetto, betragohnerabatt, betragnettoohnerabatt, rabatt, summe, mwst, artikelcode, key_ARTIKELEXTRAFELD
|TableParameter zebra header noborder noborderH noborderV colorborder=#00FF00 color2=#FF0000
|TableStart Beschreibung | Ist | Soll
|Table Vorname | {#vorname#} |
...
|TableEnd
Erstellt eine freie Tabelle mit den angegebenen Spalten und Zeilen.
Beim Header können auch die Spaltenbreiten (Verhältnisangaben) gesetzt werden:
Beschreibung:1 | Ist:1 | Soll:2
Ohne Angabe orientiert sich die Spaltenbreite am Inhalt.
Im Header kann mit dem Prefix ##L:, ##R: bzw. ##C eine links- bzw. rechtsbündige bzw. zentrierte Ausrichtung, damit dann auch aller Zeilen, erreicht werden.
Parameter:
- zebra: Zeilen werden abwechselnd weiß und grau hinterlegt
- header: Die Kopfzeile wird ausgegeben
- noborder: Es wird kein Rand
- noborderH: Es wird kein horizontaler Rand ausgegeben
- noborderV: Es wird kein vertikaler Rand ausgegeben
- colorborder=#00FF00: legt die Randfarbe fest
- color_=#FF0000: Farbe des Textes der x. Spalte (color1=.. color2=.. )
Bei |Table kann ein Zelleninhalt fett gedruckt werden, wenn der Inhalt mit ##BOLD: beginnt.
Bedingte Bereiche
|IF {#..#}
...
|ElseIf ...
...
|Else
...
|EndIf
Optionaler Abschnitt, der gezeigt wird, wenn die Variable {#..#} nicht leer ist. Die If-Else-Endif-Befehle sind kaskadierbar.
Ausdrücke mit || und && (oder/und) kombinierbar.
auch möglich:
|IF {#Rolle[ROLLENNAME].anrede#}=Herr
Beispiel:
|IF {#mitglied:key_kundennummer#}
Ihre Kundennummer: {#mitglied:key_kundennummer#}
|Endif
|IF heuteoderzukunft:{#VERANSTALTUNG:DATUM:-12T#}
|IF heuteodervergangenheit:...
|IF rolle=Mitglied
|IF gruppe=Arbeitsgruppe1
...
Sonstiges
|BodyLegt fest, dass an dieser Stelle der echte Inhalt beginnt
|NoBodyLegt fest, dass kein Inhalt ausgegeben wird (z.B. bei Urkunden, in denen nur der Name usw. stehen soll)
|Liste
|Liste farbeKopf farbeZeile
Wird ersetzt durch die Listen- bzw. Kalenderdaten
|Etikett breite hoehePlatziert alle nachfolgenden Zeilen öfters auf ein Etikett.
"breite" hat folgendes Format:
linkerRand+anzahlEtikettenHorizontal*breiteEinEtikett+lueckeZwischenEtiketten
"hoehe" hat folgendes Format:
obererRand+anzahlEtikettenVertikal*hoeheEinEtikett+lueckeZwischenEtiketten
Alle Angaben in mm.
Beispiel: |Etikett 5+2*105 5+7*41
text.. |t## text...Tabulator-Sprung. Nur innerhalb von Text, nicht am Anfang (1 Leerzeichen am Anfang der Zeile genügt.
Beispiel: Spalte1 |t20 Spalte2 |t40 Spalte3
|Upsidedown text..Druckt den angegebenen Text "auf dem Kopfe stehend", z.B. für umzuknickende Tisch-Namensschilder.
Bei "|Font .. .. .. R" startet der Text RECHTS an "|Pos 1. Parameter" und bricht an "|Pos 3. Parameter" um.
Beispiel:
|Pos 80 10 5
|UpsideDown xxxx
|BottomUp text..Druckt den angegebenen Text "senkrecht nach oben"
|# text..Kommentar, der nicht ausgedruckt wird
Schleifen
|Loop OPTIONEN
{#OPTIONEN:feldname#}
|EndLoop
Schleife, die für jede Anmeldeoption durchlaufen wird. Beispiel siehe PDF-Vorlage "Antwortfax".
|Loop VERANSTALTUNGEN
{#VERANSTALTUNG:feldname#}
|EndLoop
Schleife über alle Rahmenprogramm-Programmpunkte bzw. Serientermine.
|Loop VERANSTALTUNGSVORSCHAU
{#VERANSTALTUNG:feldname#}
|EndLoop
Schleife über alle zukünftigen Veranstaltungen (ab dem kommenden Tag). Auch per z.B. "VERANSTALTUNGSVORSCHAU:5" auf 5 limitierbar.
|Loop TEILNEHMER
{#TEILNEHMER:nr#} {#TEILNEHMER:vorname#} {#TEILNEHMER:nachname#} {#TEILNEHMER:anmeldung:key_XXX#}
|EndLoop
Schleife über die angemeldeten Teilnehmer der Veranstaltung (sortiert inkl. Begleiter; nur in Veranstaltungsvorlagen): titel, vorname, nachname, firma, strasse, land, plz, ort, telefon, email, alter, key_...
TEILNEHMERALLE (alle Teilnehmer, auch abgemeldete usw.)
TEILNEHMERANWESEND (nur angemeldete + anwesende Teilnehmer)
TEILNEHMERETC (nur nicht-angemeldete oder nicht-anwesende Teilnehmer)
TEILNEHMER sort=id
|Loop TEILNAHMESERIENVERANSTALTUNGEN
{#VERANSTALTUNG:feldname#}
|EndLoop
Teilnahmebescheinigung: Schleife über alle angemeldeten Serientermine
|Loop PROGRAMMPUNKTE
{#DATUM#}, {#ZEIT#}, {#ORT#}, ..., {#TEILNEHMER#}, {#programmpunkt:wochentag#}, {#datum:wochentag#}, {#programmpunkt:datum.lang#}, {#if:key_dresscode#} (Dresscode: {#key_dresscode#}){#/if#}
|EndLoop
Schleife über alle Programmpunkte der Rahmenveranstaltung
|Loop ANGEMELDETEPROGRAMMPUNKTE
{#TITEL#}, {#DATUM#}, {#ZEIT#}, {#ORT#}, {#KOSTEN#}, {#programmpunkt:wochentag#}
|EndLoop
Schleife über alle Programmpunkte der Rahmenveranstaltung, zu denen der Teilnehmer angemeldet ist.
Auch auf Eintrittskarte möglich.
ANGEMELDETEPROGRAMMPUNKTE_EINEZEILE gibt alles in einer Zeile aus.
|Loop MITGLIEDER
{#vorname#} {#nachname#}
|EndLoop
Schleife, die für alle Mitglieder durchlaufen wird. Platzhalter: Alle Mitgliedsdatenfelder. Bedingung möglich: {#IF:titel#}{#titel#} {#/IF#}. Berechnete Felder {#strasse#} {#plz#} {#ort#} {#land#} {#telefon#} {#fax#} {#mobil#} {#email#} {#homepage#} möglich. Optional: .. sort:mitgliedsnummer (o.a. Felder, Standard: nachname,vorname)
|Loop MARKIERTEMITGLIEDER
{#vorname#} {#nachname#}
|EndLoop
Schleife, die für alle markierten Mitglieder in der Mitgliedersuche durchlaufen wird. Platzhalter: Alle Mitgliedsdatenfelder. Bedingung möglich: {#IF:titel#}{#titel#} {#/IF#}. Berechnete Felder {#strasse#} {#plz#} {#ort#} {#land#} {#telefon#} {#fax#} {#mobil#} {#email#} {#homepage#} möglich. Optional: .. sort:mitgliedsnummer (o.a. Felder, Standard: nachname,vorname)
|Loop FAMILIENMITGLIEDER
{#vorname#} {#nachname#}
|EndLoop
Schleife über alle Familienmitglieder des Mitglieds. Platzhalter: Alle Mitgliedsdatenfelder. Bedingung möglich: {#IF:titel#}{#titel#} {#/IF#}. Berechnete Felder {#strasse#} {#plz#} {#ort#} {#land#} {#telefon#} {#fax#} {#mobil#} {#email#} {#homepage#} möglich. Optional: .. sort:mitgliedsnummer (o.a. Felder, Standard: nachname,vorname)
|Loop ANSPRECHPARTNER
{#vorname#} {#nachname#}
|EndLoop
Schleife über alle Ansprechpartner des Firmen-Mitglieds. Platzhalter: Alle Mitgliedsdatenfelder. Bedingung möglich: {#IF:titel#}{#titel#} {#/IF#}. Berechnete Felder {#strasse#} {#plz#} {#ort#} {#land#} {#telefon#} {#fax#} {#mobil#} {#email#} {#homepage#} möglich. Optional: .. sort:mitgliedsnummer (o.a. Felder, Standard: nachname,vorname)
ANSPRECHPARTNER_EINEZEILE erzeugt eine einzeilige Ausgabe.
|Loop TOP
{#TOP:position#} {#TOP:titel#} {#TOP:beschreibung#} {#TOP:protokoll#} {#TOP:abstimmung#} {#TOP:aufgabe#} {#TOP:anhaenge#}
|EndLoop
Schleife über die Tagesordnungspunkte
|Loop rolle:rollenname
{#vorname#} {#nachname#}
|EndLoop
Schleife, die für jeden Rollenteilnehmer durchlaufen wird. Platzhalter: Alle Mitgliedsdatenfelder. Bedingung möglich: {#IF:titel#}{#titel#} {#/IF#}. Berechnete Felder {#strasse#} {#plz#} {#ort#} {#land#} {#telefon#} {#fax#} {#mobil#} {#email#} {#homepage#} möglich. Optional: .. sort:mitgliedsnummer (o.a. Felder, Standard: nachname,vorname)
|Loop rollefamilie:rollenname
{#vorname#} {#nachname#}
|EndLoop
Schleife, die für jedes Familienmitglied (für die das aktuelle Mitglied der Beitragszahler ist) durchlaufen wird. Platzhalter: Alle Mitgliedsdatenfelder. Bedingung möglich: {#IF:titel#}{#titel#} {#/IF#}. Berechnete Felder {#strasse#} {#plz#} {#ort#} {#land#} {#telefon#} {#fax#} {#mobil#} {#email#} {#homepage#} möglich.
|Loop gruppe:gruppenname
{#vorname#} {#nachname#}
|EndLoop
Schleife, die für jeden Gruppenteilnehmer durchlaufen wird. Platzhalter: Alle Mitgliedsdatenfelder. Bedingung möglich: {#IF:titel#}{#titel#} {#/IF#}. Berechnete Felder {#strasse#} {#plz#} {#ort#} {#land#} {#telefon#} {#fax#} {#mobil#} {#email#} {#homepage#} möglich. Optional: .. sort:mitgliedsnummer (o.a. Felder, Standard: nachname,vorname)
|Loop rolle:rollenname,gruppe:gruppenname,...auch in Kombination möglich...
|Loop RECHNUNGEN_OFFEN:2020
{#datum#}, {#rechnungsnummer#}, {#betrag#}
|EndLoop
Schleife über alle offenen Rechnungen aus dem Jahr 2020; auch Datum tt.mm.jjjj möglich, es gilt dann ab diesem Datum.
auch RECHNUNGEN_UNVERSCHICKT und auch ohne Jahresangabe (dann alle Jahre) möglich.
auch RECHNUNGEN_BEZAHLT möglich.
|Loop LISTE:LISTENAME
{#liste:feldname#}
{#liste:mitgliedsfeld.nachname#}
{#liste:listenverweisfeld.feldinzielliste#}
|EndLoop
Schleife über alle Datensätze einer Liste
|Loop DATA
{#data1#}
{#data2#}
|EndLoop
Schleife über alle Datensätze einer Aufzählung (z.B. bei PDF Versammlungsprotokoll)