Skip to main content

Konfiguration von Druckvorlagen

Mit Klick auf die Schaltfläche Drucken können Agenten ein PDF mit den jeweiligen Objektinformationen generieren und dieses anschließend zur Weiterverwendung herunterladen. Dem Layout dieser PDFs liegt eine objektspezifische Druckvorlage zugrunde.

Eine Druckvorlage ist die Blaupause eines PDFs im JSON-Format. Sie dient dazu, die PDFs zu generieren. In der Druckvorlage ist definiert, welche Daten in welcher Form und an welcher Stelle im PDF enthalten sind.

Aktuell stellt KIX für die Kontexte Ticket, Artikel und Asset je eine Druckvorlage als Standard bereit. Sie können zusätzliche Druckvorlagen im System bereitstellen oder im Bedarfsfall die Standard-Druckvorlagen modifizieren.

Warnung

Änderungen an den Standard-Druckvorlagen haben globale Auswirkung! Alle Funktionen, die eine Standard-Druckvorlage nutzen, verwenden dann auch die geänderte Standard-Vorlage.

Für das Erstellen einer Druckvorlage bis zur Bereitstellung des PDF benötigen Sie grundlegendes Wissen über die jeweiligen Objekte (z.B. Ticket, Asset, Artikel, Kontakt usw.) sowie ausreichend Kenntnisse in JSON, SQL und HTML/CSS.

Zum Erstellen (oder Modifizieren) einer Druckvorlage müssen Sie ein valides JSON bereitstellen, welches mit spezifischen Inhaltsbausteinen (Bausteine) befüllt ist. KIX wandelt dieses JSON in mehrere HTML-Dateien um (Header, Content, Footer) und konvertiert diese anschließend in ein PDF. Sie müssen daher genau wissen, WAS, WIE und WO im PDF angezeigt werden soll.

Zum Bereitstellen von Druckvorlagen in KIX On-Premises-Umgebungen benötigen Sie administrative Rechte auf den Server und Zugriff auf die KIX Datenbank. Für KIX.Cloud-Umgebungen übernimmt das unser Support, wenn Sie uns eine entsprechende Druckvorlage bereitstellen (Support-Vertrag vorausgesetzt).

Die im System bereitgestellten Druckvorlagen können in verschiedenen Bereichen von KIX ausgewählt und angewendet werden:

  • innerhalb der Macro Action "Konvertieren zu PDF" bei Jobs/Aktionen

    Sie können zusätzlich aus den importierten Druckvorlagen auswählen, um auf deren Basis die PDFs zu erstellen. Zudem können Sie der Macro Action zusätzliche Parameter mitgeben, um die Ausgabe zu modifizieren.

  • beim Druck von Assets

    Sie können klassenspezifische Druckvorlagen bereitstellen.

    Agenten können die zu verwendende Druckvorlage auswählen.

  • für den Standard Ticketdruck

    Für Agenten besteht keine Möglichkeit, die zu verwendende Druckvorlage auszuwählen. Sie können jedoch die Standard-Vorlage mit geändertem Inhalt über die KIX-Datenbank bereitstellen.

    Achtung

    Änderungen an der Standard-Druckvorlage beeinflussen auch den Sammeldruck von Tickets.

  • bei Verwendung des Konsolenbefehls Console::Command::Admin::HTMLToPDF::Convert

Eine Druckvorlage besteht aus mehreren Abschnitten, die zusammen den Aufbau des PDF bilden. Der Aufbau wird im JSON-Format abgebildet, um eine klare Struktur zu erhalten, welche gut vom System interpretiert werden kann.

Die einzelnen Abschnitte bestehen aus einer Liste von Eigenschaften und/oder Objektinformationen:

Beispiel: Aufbau einer Druckvorlage

{
  "Expand": [
    "DynamicField",
  ],
  "Page": {
    "Top": "10",
    "Left": "15",
    "Right": "10",
    "Bottom": "10",
    "SpacingHeader": "1",
    "SpacingFooter": "1",
    "Format": "A5",
    "Orientation": "Landscape"
  },
  "Header": [ ... ],
  "Content": [ ... ],
  "Footer": [ ... ]
}
  1. Expands: Ist eine Liste von Erweiterungen, die das Hauptobjekt bereitstellen soll (z. B. Dynamische Felder)

  2. Page: Definiert die Seiteneinstellung des PDF (Randabstände, Format usw.)

  3. Header: Definiert den Seitenkopf, in dem beispielsweise ein Logo enthalten ist.

    Ist der Header gesetzt, wird er auf jeder Seite wiederholt angewendet.

  4. Content: Definiert den Inhalt der PDF-Datei über alle Seiten.

    Hier ist festgelegt, WAS für Informationen WIE und WO im PDF dargestellt werden sollen.

    Hinweis: Positionierungen auf einer bestimmten Seite ist nicht direkt möglich.

  5. Footer: Definiert eine Fußzeile, die beispielsweise Seitenzahl, Kontaktdaten usw. anzeigt.

    Ist der Footer gesetzt, wird er auf jeder Seite wiederholt angewendet.

Tipp

Informationen zum Aufbau einer Druckvorlage erhalten Sie im Menü System > Konsole durch Ausführung des Konsolenbefehls Console::Command::Admin::HTMLtoPDF::Inspect (s. auch: Verwendung der Konsole‌ und Console::Command::Admin::HTMLToPDF::Inspect)Console::Command::Admin::HTMLToPDF::Inspect

Seitenaufbau

Der Aufbau der Seite kann in 4 Kombinationsvarianten erfolgen. Die gewählte Variante gilt für das gesamte PDF. Folgende Kombinationen sind möglich:

  1. Header + Content + Footer (H+C+F)

    Seitenkopf + Seiteninhalt + Seitenfuß

  2. Content + Footer (C+F)

    Seiteninhalt + Seitenfuß

  3. Header + Content (H+C)

    Seitenkopf + Seiteninhalt

  4. nur Content (C)

    nur Seiteninhalt

H+C+F

C+F

H+C

C

pdf-druck_Struktur_HCF
pdf-druck_Struktur_CF
pdf-druck_struktur_HC
pdf-druck_Struktur_C

Header und Footer (blau) sind Abschnitte, die optional gesetzt werden können. Sind sie nicht gesetzt, nimmt der Content diesen Platz ein.

Der Content (grün) ist ein Pflicht-Abschnitt, der gesetzt werden muss. Er liefert den grundlegenden Inhalt des PDF. Im Content ist definiert, welche Objektinformationen an welcher Position auf der Seite angezeigt werden.

Für die Anzeige der Objektinformationen stehen verschiedene Bausteine zur Verfügung. Sie ermöglichen die Darstellung der Inhalte in einer bestimmten Form (Tabellen, Listen, Bilder, Text etc.). Zudem können CSS-Stylings angegeben werden, um die Anzeige ansprechend zu gestalten.

Seiteneinstellung

Damit der Inhalt korrekt auf der Seite platziert wird, müssen Seiteneinstellungen wie Format und Randabstände angegeben werden. Die Einstellungen werden jeweiligen Template im Abschnitt Page hinterlegt.

Beispiel für die Seiteneinstellung

{
  "Expand": [ ... ],
  "Page": {
    "Top": "10",
    "Left": "15",
    "Right": "10",
    "Bottom": "10",
    "SpacingHeader": "1",
    "SpacingFooter": "1",
    "Format": "A5",
    "Orientation": "Landscape"
  },
  "Header": [ ... ],
  "Content": [ ... ],
  "Footer": [ ... ]
}
Parameter für die Seitenkonfiguration

Wichtig

Bitte geben Sie die Maßeinheit ausschließlich in Millimeter an!

Parameter

Beschreibung

Format

Legt das Seitenverhältnis fest, z. B. A4

Wird nichts angegeben, dann wird automatisch A4 als Standard verwendet.

Hinweis: Nicht alle existierenden DIN-Formate werden unterstützt. Wird ein DIN-Format nicht akzeptiert, sollte Height/Width angegeben werden.

Orientation

Definiert die Ausrichtung der Seite.

  • Landscape: Seitenausrichtung im Querformat

  • Portraite: Seitenausrichtung im Hochformat (Standard)

Height

Konfigurierbare Seitenhöhe.

Wenn definiert, muss Width mit angegeben werden.

Wenn unter Format ein Seitenverhältnis definiert ist, wird diese Einstellung ignoriert.

Width

Konfigurierbare Seitenbreite

Wenn definiert, muss Height mit angegeben werden.

Wenn unter Format ein Seitenverhältnis definiert ist, wird diese Einstellung ignoriert.

Top

Definiert den oberen Seitenrand (Abstand zum Seitenrand in Millimeter)

Bottom

Definiert den unteren Seitenrand (Abstand zum Seitenrand in Millimeter)

Left

Definiert den linken Seitenrand (Abstand zum Seitenrand in Millimeter)

Right

Definiert den rechten Seitenrand (Abstand zum Seitenrand in Millimeter)

SpacingHeader

Abstand der Kopfzeile in Millimeter

Je kleiner der Wert, desto weiter ragt die Kopfzeile ins PDF.

SpacingFooter

Abstand der Fußzeile in Millimeter

Je kleiner der Wert, desto weiter ragt die Fußzeile ins PDF.

Bausteine ermöglichen die Darstellung der Inhalte in einer bestimmten Form (Tabellen, Listen, Bilder, Text etc.). Sie können in den Abschnitten Header, Content und Footer angewendet werden.

pdf-druck_strukturtyp

Abb.: Baustein unterhalb eines Containers

"Blocks" ist ein Baustein, der andere Bausteine unter sich kombinieren kann und speziellere Daten vererbt. Hierbei sind folgende Varianten möglich:

  • wiederholende Kombination: Kombination von Bausteinen, die wiederholt nacheinander dargestellt werden sollen. Dabei werden den Bausteinen mit jeder Wiederholung andere Daten bereitgestellt.

  • einfache Kombination: Kombination aus zwei oder mehreren Bausteinen, die einmalig abgebildet werden, aber spezielle Daten erhalten.

Zum Abbilden wiederholender Kombinationen ist zu beachten:

  1. "Blocks" muss vom Typ "List" sein.

    Damit wird gewährleistet, dass sich die darunter liegenden Bausteine wiederholen.

  2. Angegeben werden müssen:

    • Ein Objekt, welches die neuen Daten aufbereitet

    • das Data, welches die notwendige ID, Name und Nummer liefert

  3. Filter oder Expands (Datenerweiterung) sind optional.

    Filter prüft, ob die geholten Daten zulässig sind.

  4. Soll mit weiteren Daten des Objekts innerhalb des Blocks gearbeitet werden, muss dies angegeben werden. 

pdf-druck_wiederholende-doppelstrukturen

Abb.: Baustein für ein Objekt

Parameter*

Pflichtfeld

Hinweise

Objekt

ja

Objekt, welches in den darunter liegenden Bausteinen genutzt werden soll.

Expands

Erweiterung der Datenmenge um zusätzliche Angaben des gewählten Objekts.

Filters

Einschränkung der Datenliste von Data.

Data

ja

Daten aus der Datenerweiterung des darüber liegenden Objekts (Elternobjekt), welche im Baustein angewendet werden sollen.

Achtung: Hier sollten nur Array Daten Anwendung finden.

Type

ja

Angabe des Type "List"

ID

Kenner des gesamten Blocks (Default: Blocks)

* siehe auch: Die Parameter und ihre Bedeutung

Beispiel 3. Beispiel: Struktur für "Blocks" (wiederholende Kombination)
{
   "Type": "List",
   "Object": "Article",
   "Expand": "DynamicField",
   "Data": "Article",
   "Blocks": [
      {
         "ID": "ArticleHeader",
         "Type": "Text",
         "Value": [
            "<Font_Bold>Article",
            "#<Count>"
         ],
         "Join": " ",
         "Break": true,
         "Translate": true,
         "Style": {
            "Size": "1.1em",
            "Color": "gray"
         }
      },
      ….
   ]
}


Diese Bausteinvariante kann Bausteine kombiniert darstellen, die gemeinsame Daten beziehen oder beispielsweise nebeneinander dargestellt werden sollen.

Sollen Bausteine nebeneinander dargestellt werden, dann muss ein Style-Width mit 48 bis 50%, sowie ein Style-Float gesetzt sein.

pdf-druck_einfache-doppelstruktur

Abb.: Bausteinvariante für eine einfache Kombination

Parameter*

Hinweise

Data

Daten aus der Datenerweiterung, welche in Blocks angewendet werden sollen.

Ist kein Data gegeben, werden nur die Hauptdaten des Objekts genutzt

Achtung: In diesem Fall sollten die Daten aus einem Expands kommen, welches kein Array ist.

ID

Kenner des gesamten Blocks (Default: Blocks)

* siehe auch: Die Parameter und ihre Bedeutung

Beispiel 4. Beispiel: Nebeneinander dargestellte Bausteine
{
   "Data": "LinkObject",
   "Blocks":
   [
      {
         "ID": "LinkedHeader",
         "Type": "Text",
         "Value": "<Font_Bold>Linked Objects",
         "Translate": true,
         "Break": true,
         "Style":
         {
            "Size": "1.1em",
            "Color": "gray"
         }
      },
      {
         "ID": "LinkedTable",
         "Type": "Table",
         "Columns":
         [
            "<Font_Bold>Key",
            "Value"
         ],
         "Translate": true,
         "Join": "<br>"
      }
   ]
},


Der Baustein "Text" wird für die Darstellung einzeiliger Texte oder Überschriften verwendet. Der Text kann als Hyperlink hinterlegt werden. Die URL dazu muss im Value angegeben sein. 

Parameter*

Pflichtfeld

Hinweise

Type

ja

Muss "Text" sein

ID

ja

Kenner

AsLink

Bestimmt, ob der Text als Link dargestellt werden soll.

Value

ja

Array oder String; Kann Platzhalter auflösen

Translate

Aktiviert die Übersetzung

Style

Benötigt einen ID

Zulässige Styles:

  • Color

  • Height

  • Width

  • Float

  • BGColor

  • Size

  • Class

Break

Aktiviert die Trennlinie unterhalb des Strukturtyps

Join

Wird benötigt, wenn Value als Array genutzt wird.

ReplaceAs

Definiert einen Wert, der gesetzt werden soll, wenn der Platzhalter nach dem Ersetzen keinen Wert beinhaltet.

Es ist möglich, ein Leerwert zu setzen.

Standard: -

* siehe auch: Die Parameter und ihre Bedeutung

Beispiel 5. Beispiel: Struktur-Code für den Baustein "Text"
{
   "ID": "ArticleHeader",
   "Type": "Text",
   "Value":
   [
      "<Font_Bold>Article",
      "#<Count>"
   ],
   "Join": " ",
   "Break": true,
   "Translate": true,
   "Style":
   {
      "Size": "1.1em",
      "Color": "gray"
  }
},


Der Baustein "Richtext" ist die HTML-Variante zu "Text". Hiermit können mehrzeilige Texte, aber auch Bilder, Tabellen oder HTML-Code eingefügt und dargestellt werden.

Parameter*

Pflichtfeld

Hinweise

Type

ja

Muss "Richtext" sein

ID

ja

Kenner

Value

ja

Array oder String

Kann Platzhalter auflösen

Translate

Aktiviert die Übersetzung

Style

Benötigt eine ID

Zulässige Styles:

  • Height

  • Width

  • Float

  • BGColor

  • Class

Join

Wird benötigt, wenn Value als Array genutzt wird.

* siehe auch: Die Parameter und ihre Bedeutung

Beispiel 6. Beispiel: Struktur-Code für den Baustein "Richtext"
{
   "ID": "ArticleBody",
   "Type": "Richtext",
   "Value": "<KIX_ARTICLE_BodyRichtext>"
}


Mit dem Baustein "Page" können Sie die Seitenzahl angegeben. Die Seitenzahl kann als "Seite x" oder als "Seite x von y" dargestellt werden. Verwenden Sie "Page" vorzugsweise nur im Header oder Footer.

Parameter*

Pflichtfeld

Hinweise

Type

ja

Muss "Page" sein

ID

ja

Kenner

PageOf

ja

Legt die Darstellungsart fest.

  • 0 - Seite x

  • 1 - Seite x von y

Translate

Aktiviert die Übersetzung

Style

Benötigt einen ID

Zulässige Styles:

  • Height

  • Width

  • Float

  • Size

  • Class

* siehe auch: Die Parameter und ihre Bedeutung

Beispiel 7. Beispiel: Struktur-Code für den Baustein "Page"
{
   "ID": "Paging",
   "Type": "Page",
   "PageOf": 0,
   "Translate": true,
   "Style":
   {
      "Float": "right"
   }
}


Hinweis

Der Baustein "Page" und der Abschnitt "Page" haben nichts gemeinsam.

Der Baustein "Page" liefert eine Seitennummer, die man auf der Seite beliebig setzen kann.

Der Abschnitt "Page" ist die Einstellung aller Seiten des PDFs hinsichtlich Randabstand, Format, Ausrichtung usw. (s. Seiteneinstellung).

Der Baustein vom Typ "Image" ermöglicht das Einfügen einzelner Bilder, die unabhängig von einem Richtext entstammen, wie z. B. ein Header-Logo. Es gibt folgende Möglichkeiten, wie das Bild ins Dokument gelangen kann:

  1. Aus der KIX Datenbanktabelle (ObjectIcon)

  2. Als Dateipfad vom Server (wo das KIX-Backend liegt)

  3. Als übergebener Base64-Content.

Hinweis

Der ContentType muss immer image/[Dateityp] sein (z. B. image/png).

Parameter

Pflichtfeld

Hinweise

Type

ja

Muss "Image" sein

ID

ja

Kenner

Value

ja

Abhängig von Typen:

  • DB: ObjectID des Objects von ObjectIcon

  • Path: Sytempfad zum Bild (Platzhalter möglich)

  • Base64: Direkter Base64-Code im HTML-Image-Src-Style

    Beispiel: 'data:image/png;base64,<Base64-Content>;'

TypeOf

ja

Zulässige Typen:

  • DB

  • Path

  • Base64

Style

Benötigt einen ID

Zulässige Styles:

  • Height

  • Width

  • Float

  • Class

* siehe auch: Die Parameter und ihre Bedeutung

Beispiel 8. Beispiel: Baustein vom Typ "Image"
{
   "ID": "PageLogo",
   "Type": "Image",
   "Value": "agent-portal-logo",
   "TypeOf": "DB",
   "Style":
   {
      "Width": "2.5rem",
      "Height": "2.5rem",
      "Float": "left"
   }
},


Mit dem Baustein "Table" können Informationen in Form von Tabellen dargestellt werden.

Als Beispiel dienen die Standard-Druckvorlagen für Ticket oder Artikel. Sie enthalten im Seitenkopf die Metadaten des jeweiligen Objekts (Bearbeiter, Ticketstatus usw.). Zur strukturierten Darstellung dieser Informationen wird der Baustein "Table" verwendet.

pdf-druck_typ-table.jpg

Abb.: Beispiel eines Blocks vom Typ "Table" mit SubType "KeyValue"

Beispiel: Code-Struktur für die Tabellendarstellung

{
  "Columns": [
     "Key",
     "Value"
  ],
  "Type": "Table",
  "SubType": "KeyValue | DataSet | Custom | XMLStructure",
  ...
},

Hinweis

Da der Platz auf einem Blatt je nach Format und Ausrichtung begrenzt ist, sollten in den Tabellen nur notwendige Attribute angezeigt werden.

Tabellenvarianten (SubTypes)

Tabellen können große Datenmengen abbilden und das in unterschiedlicher Form. Um diese Daten abzubilden, gibt es folgende Varianten, die unter SubType definiert werden:

Dieser Tabellentyp ist der Standard. Er wird eingesetzt, um die Attribute eines Objekts anzuzeigen. Ist in der Konfiguration kein SubType angegeben, dann wird "KeyValue" automatisch gesetzt.

Grundsätzlich ist "KeyValue" eine zweispaltige Tabelle, die die Daten des Objekts als Attributname (Key) und Attributwert (Value) gegenübersetzt. Dazu werden im Parameter Columns die Werte "Key" und "Value" hinterlegt. Durch Weglassen eines dieser Werte können Sie eine einspaltige Tabelle erzeugen, in der nur die Attributnamen oder nur die Attributwerte dargestellt werden.

Durch Angabe der Parameter allow und ignore können Sie den in der Tabelle anzuzeigenden Inhalt einschränken.

Durch zusätzliche Angabe von Count, können Sie der Tabelle eine Nummerierungs-Spalte hinzuzufügen. 

Beispiel 9. Beispiel: Standard-Darstellung einer Tabelle (KeyValue ohne Count)

Key

Value

Attributname

Attributwert

{
  "Columns": [
     "Key",
     "Value"
  ],
  "Type": "Table",
  "SubType": "KeyValue",
  ...
},


Beispiel 10. Beispiel: Standard-Darstellung einer Tabelle mit Nummerierungsspalte (KeyValue mit Count)

Count

Key

Value

1

Attributname

Attributwert

{
  "Columns": [
     "Count",
     "Key",
     "Value"
  ],
  "Type": "Table",
  "SubType": "KeyValue",
  ...
},


Die Parameter Allow (Erlaubt) und Ignore (Ignorieren) dienen dazu, Attribute einzuschränken. Sie beeinflussen somit den Informationsgehalt von Tabellen, die im PDF ausgegeben werden.

Beispiel für "Allow" bei Tabellentyp "KeyValue" 

{
  "ID": "InfoTableLeft",
  "Type": "Table",
  "Include": "DynamicField",
  "SubType": "KeyValue",
  "Columns":
  [
    "<Font_Bold>Key",
    "Value"
  ],
  "Allow":
  {
    "State": "KEY",
    "Queue": "KEY",
    "Lock": "KEY",
    "CustomerID": "KEY",
    "Owner": "KEY",
    "Responsoble": "KEY",
    "Type": "KEY",
    "Priority": "KEY"
  },
},
  • Allow lässt Attribute zu und definiert somit eine Whitelist.

    Es werden nur die benannten Attribute anzeigt.

    Alle Attribute, die nicht im Allow angegeben sind, werden nicht in der Tabelle angezeigt. 

    Beispiel: Allow - Lässt folgende Attribute zu (Objekt ist Ticket) 

    [...],
    "Allow": {
       "State": "KEY",      // lässt Attribut zu - egal was drin steht, da "KEY" gesetzt
       "Type": "^Prob.*"    // lässt Attribut nur zu, wenn der Ausdruck im Attributwert enthalten ist.
    }
  • Ignore verweigert Attribute und definiert somit eine Blacklist.

    Es werden die Attribute entfernt, welche es durch die Whitelist geschafft haben.

    Ist kein Ignore gesetzt, entspricht das Endergebnis dem Ergebnis der Allow-Anwendung.

    Ignore kann zusätzlich zu Allow eingesetzt werden. Der Aufbau entspricht dem von Allow, mit dem Unterschied, dass die angegebenen Attribute aus der Tabelle entfernt werden.

    Zu beachten ist:

    • Ist ein Allow für die Tabelle gesetzt, so wird das Ignore auf die Attibute angewendet, die durch Allow gefiltert wurden.

    • Ist kein Allow gesetzt, so geht Ignore über alle Attribute und schränkt diese ein.

    Beispiel: Ignore - verwirft die folgenden Attribute (Objekt ist Ticket) 

    [...],
    "Ignore": {
       "State": "KEY",      // verwirft das Attribut - egal was drin steht, da "KEY" gesetzt
       "Type": "^Prob.*"    // verwirft das Attribut nur, wenn der Ausdruck im Attributwert enthalten ist.
    }
  • Sind weder Allow noch Ignore definiert, werden alle Angaben aus den Objekten angezeigt.

  • Die Angabe eines leeren Hashes leert das vom Template vorgegebene Allow bzw. Ignore:

    {
      "ArticleMeta": {}
    }

Mit dem Tabellentyp "DataSet" können die Datensätze zeilenweise angezeigt werden. Im Gegensatz zu KeyValue muss jedoch bei Columns festlegt werden, welche Attribute aus den Datensätzen dargestellt werden sollen.

Die angegebenen Attributnamen bilden die Tabellenspalten. Der jeweilige Datensatz befüllt anhand der gesetzte Spalte die Zellen mit den entsprechenden Werten.

Durch Angabe der Parameter allow und ignore können Sie den in der Tabelle anzuzeigenden Inhalt einschränken. Dabei werden aber nicht die einzelnen Attribute beeinflusst, sondern der gesamte Datensatz.

Beispiel 11. Beispiel: Standard-Darstellung einer Tabelle

Attributname

[Attributname...]

Attributwert

[Attributwert...]

{  
  "Columns": [
    "AttributeX",
    "AttributeY",
    ...
  ],
  "Type": "Table",
  "SubType": "DataSet",
  ...
},


Die Parameter Allow und Ignore

Bei "DataSet" wirkt die Einschränkung auf den gesamten Datensatz und nicht auf einzelne Spalten. Das heißt:

  • Allow:  Der Datensatz wird nur zugelassen, wenn alle zu prüfenden Werte der Attribute übereinstimmen.

  • Ignore: Der Datensatz wird nur ignoriert, wenn eines der zu prüfenden Werte der Attribute übereinstimmt.

Wichtig

Vermeiden Sie bei "DataSet" die Verwendung von "Key" bei Allow/Ignore. Prüfen Sie ausschließlich mit regulären Ausdrücken.

Allow - Lässt den folgenden Datensatz zu (Objekt ist Ticket)

[...],
"Allow": {
   "Type": "^Prob.*" 	// lässt den Datensatz nur zu, wenn der Ausdruck für das Attribut im Attributwert enthalten ist.
}

Ignore - verwirft den folgenden Datensatz (Objekt ist Ticket)

[...],
"Ignore": {
    "Type": "^Prob.*" 	// verwirft den Datensatz, wenn der Ausdruck für das Attribut im Attributwert enthalten ist.
},

Beispiel Struktur-Code Tabletyp DataSet

{ 
  "ID": "Example",
  "Type": "Table",
  "Include": "DynamicField",
  "SubType": "DataSet",
  "Columns":
  [
    "AttributeX",
    "AttributeY"
    "AttributeZ"
  ],
  "Ignore":
  {
    "AttributeX": "Prob.*",
  }, 
},

Der Tabellentyp "Custom" ist der flexibelste Baustein hinsichtlich der Darstellung von Tabelleninhalten. Es können

  • mehrere Objektattribute in eine Zelle eingetragen werden

  • eine beliebige Anzahl an Spalten und Zeilen definiert werden

    Hinweis: Zu viele Spalten werden beim Druck abgeschnitten, da diese über den Rand hinaus ragen.

  • objektbezogene KIX-Platzhalter verwendet werden

    Beispiel für Object.Attribute.Value: Ticket.Status.Value oder Ticket.DynamicField_xyz.Value

Eine Einschränkung mit Allow/Ignore ist nicht möglich, da dieser Tabellentyp frei wählbaren Inhalt besitzt. Somit kann nicht bestimmt werden, was zulässig ist oder ignoriert werden soll.

Tipp

In der von KIX ausgelieferten Druckvorlage wird dieser Tabellentyp für die Anzeige der Daten im Block "Customer Information" verwendet.

Sie können den Aufbau der Tabelle frei gestalten, indem Sie die Tabelle ähnlich einer Tabelle im HTML bilden.

Der Parameter "Columns" definiert die Spalten der Tabelle. Die Angabe der Spaltenüberschrift ist optional. Ist kein Spaltenname angegeben, muss ein Leerstring für die jeweilige Spalte definiert sein. Mit den Platzhaltern <Class_...> kann eine CSS Klasse an einer Spalte/Zelle hinterlegt werden, welche im Style unter Angabe der Klasse konfiguriert wird. Sie können auch vordefinierte Platzhalter <Font_...> anwenden, z. B. <Class_Col1><Font_Bold> (s. auch: Zusätzliche Hinweise).

Der Parameter Rows definiert die einzelnen Zeilen in den jeweiligen Spalten und deren Inhalte. Der Parameter Rows ist eine verschachtelte Liste, wobei der erste Index die Zeile und der zweite Index die jeweilige Spalte ist. Rows beinhaltet nicht die Spaltenüberschriften, sondern nur den Tabelleninhalt.

Beispiel: Nur Angabe von "Rows"

[...],
"Rows": [
    [
      "Zeile1Spalte1"
      "Zeile1Spalte2"
    ],
    [
      "Zeile2Spalte1"
      "Zeile2Spalte2"
    ]  
]

Beispiel: Gemeinsame Angabe von "Columns" und "Rows"

[...],
"Columns": [
    "Spalte1",
    "Spalte2"
],
"Rows": [
    [
      "Zeile1Spalte1"
      "Zeile1Spalte2"
    ],
    [
      "Zeile2Spalte1"
      "Zeile2Spalte2"
    ] 	
]

Beispiel: Tabellentyp Custom (komplett)

{
  "Type": "List",
  "Object": "Contact",
  "Data": "Contact",
  "Expand": "DynamicField",
  "Blocks":
  [
    {
      "ID": "Contact",
      "Type": "Table",
      "SubType": "Custom",
      "Include": "DynamicField",
      "Columns":
      [
        "<Class_Col1><Font_Bold>",  //Spalte 1 in Fettschrift
        ""                            //Spalte 2
      ],
      "Rows":
      [
        [
          "Contact",
          "Contact.Fullname.Value"
        ],
        [
          "Phone",
          "Contact.Phone.Value"
        ],
        [ 
          "Mobile",
          "Contact.Mobile.Value"
        ]
      ],
      "Translate": true,
      "Style":
      {
        "Class":
        [
          {
            "Selector": ".Col1", //Formatierung für Spalte 1 (s. "Columns")
            "CSS": "width: 20%;"
          }
        ]
      }
    }
  ]

} 

Das Beispiel erzeugt folgende Tabelle (Breite 1. Spalte: 20%). Die Werte werden beim Druck durch die reellen Werte ersetzt.

Contact

Contact.Fullname.Value

Phone

Contact.Phone.Value

Mobile

Contact.Mobile.Value

Der Tabellentyp ist "XMLStructure" ist nur in Kombination des Objekts "Asset" nutzbar. Er erzeugt eine Tabelle, die ähnlich der Asset Detailansicht ist.

Zu beachten ist:

  • Einstellungen mit Columns und Rows sind nicht möglich.

  • Im Konfigurationsblock muss als Data immer XMLStructure gesetzt sein.

  • Einschränkungen mittels allow oder i gnore sind nicht möglich.

  • Attribute ohne Werte werden nicht angezeigt.

  • Einrückungen und Formatierung können anhand von CSS-Klassen beeinflusst werden.

    • Nur die erste Spalte wird beeinflusst

    • Die jeweilige Ebene (Nummer) bestimmt die Endung der CSS-Klasse

    • Attribute mit dem Inputtyp Dummy haben als Klassenprefix DL

    • Alle anderen Attribute haben den Klassenprefix PL

    • Wenn kein CSS hinterlegt ist, greift das CSS der Standard-Tabelleneinstellung.

Beispiel 12. Beispiel: Struktur des Tabellentyps "XMLStructure"
{
   "ID": "AssetVersionMeta",
   "Type": "Table",
   "SubType": "XMLStructure",
   "Data": "XMLStructure",
   "Translate": true,
   "Style": {
      "Class": [
         {
            "Selector": " .DL0",
            "CSS": "padding: 0.625rem 0; font-weight: bold;"
         },
         {
            "Selector": " .DL1",
            "CSS": "font-weight: bold; padding: 0.625rem 0 0.625rem 0.313rem; color: gray;"
         },
         {
            "Selector": " .DL2",
            "CSS": "font-weight: bold; padding-left: 0.625rem 0 0.625rem 0.625rem; color: gray;"
         },
         {
            "Selector": " .DL3",
            "CSS": "font-weight: bold; padding-left: 0.625rem 0 0.625rem 0.938rem; color: gray;"
         },
         {
            "Selector": " .DL4",
            "CSS": "font-weight: bold; padding-left: 0.625rem 0 0.625rem 1.25rem; color: gray;"
         },
         {
            "Selector": " .DL5",
            "CSS": "font-weight: bold; padding-left: 0.625rem 0 0.625rem 1.563rem; color: gray;"
         },
         {
            "Selector": " .PL1",
            "CSS": "padding-left: 0.313rem;"
         },
         {
            "Selector": " .PL2",
            "CSS": "padding-left: 0.625rem;"
         },
         {
            "Selector": " .PL3",
            "CSS": "padding-left: 0.938rem;"
         },
         {
            "Selector": " .PL4",
            "CSS": "padding-left: 1.25rem;"
         },
         {
            "Selector": " .PL5",
            "CSS": "padding-left: 1.563rem;"
         }
      ]
   }
}


Parameter*

Pflichtfeld

Hinweise

ID

ja

Kenner der Tabelle

Type

ja

Angabe des Blocktyps.

Muss Table sein

SubType

ja

Definiert den konkreten Tabellen-Typ

Mögliche Tabellen-Typen:

  • KeyValue: Schlüssel-Wert-Paar (Standard)

  • DataSet: Angabe eines Datensatzes

    z. B. Name und Daten eines Dynamischen Feldes

  • Custom: Flexible Darstellung

    z. B. Freitext oder mehrere Attribute in einer Zeile

  • XMLStructure: Fixierte Darstellung von Asset-Attributen

    Nur in Kombination mit Objekt-Typ Asset möglich.

Je nach gewähltem SubType stehen unterschiedliche Parameter zur Verfügung (s. auch: Verfügbarkeit der Parameter je SubType

Allow

Liefert ein Hash mit Attributen die je Variante das Attribute oder den Datensatz in der Tabelle darstellt. (Whitelist)

Ignore

Liefert ein Hash mit Attributen die je Variante das Attribute oder den Datensatz nicht in der Tabelle darstellt. (Blacklist)

Columns

ja

(vom SubType abhängig)

Angaben der Spalten je Variante

Rows

ja

(vom SubType abhängig)

Nur für Tabellentyp "Custom"

Definiert den Tabelleninhalt zeilen- und spaltenweise

Include

Fügt ein Expand in die Hauptdaten nur für diese Tabelle hinzu.

Achtung: Der Expand sollte vorher vom Objekt geholt worden sein.

Translate

Wenn aktiviert: Übersetzt den Spalteninhalt und den Spaltenkopf

Style

Benötigt einen ID

Zulässige Styles:

  • Height

  • Width

  • Float

  • Class

Headline

Aktiviert den Spaltenkopf

  • false: inaktiv

  • true: aktiv

ReplaceAs

Definiert einen Wert, der gesetzt werden soll, wenn die Platzhalter nach dem Ersetzen keinen Wert beinhaltet.

Standard: -

Es ist auch möglich, ein Leerwert zu setzen.

ReplaceKey

Ändert die internen Schlüsselbezeichnung mit übersetzbaren Anzeigenamen.

Nur möglich mit dem Tabellentyp "KeyValue".

Die ersetzbaren Schlüsselbezeichnungen sind aktuell fest im System hinterlegt.

* Siehe auch: Die Parameter und ihre Bedeutung

Parameter

KeyValue

DataSet

Custom

XMLStructure

ID

Type

SubType

Allow

Ignore

Columns

Rows

Include

Translate

Style

Headline

ReplaceAs

ReplaceKey

Mit dem Baustein "List" können Aufzählungen mit oder ohne vorangestellte Aufzählungspunkte abgebildet werden. Die Anzahl der aufzulistenden Daten kann unabhängig der gelieferten Daten eingeschränkt werden.

Abhängig von den anzuzeigenden Daten ist es möglich, dass nicht alle Datensätze belegt sind. Dann wird der Eintrag nicht angezeigt, was in bestimmten Fällen die Darstellung beeinflusst. Daher können Einträge, die keinen Wert haben, auch als Leerzeile angezeigt werden.

Parameter*

Pflichtfeld

Hinweise

Type

ja

Muss "List" sein

ID

ja

Kenner

Data

ja

Beinhaltet die Daten aus einer Datenerweiterung. So werden bspw. genutzt:

  • für Assets: XMLContent (Hash)

  • für Tickets: Contact (Array)

Object

(ja)

Objekt, welches in den darunter liegenden Strukturen genutzt werden soll.

ListObject

(ja)

Objekt welches in den darunter liegenden Strukturen genutzt werden soll.

Nur möglich, wenn ListData gesetzt ist und die Daten darin einem anderem Objekt unterliegen als das angegebene Object.

ListData

(ja)

Beinhaltet den Parameternamen, der in Data die Daten für die Auflistung enthält.

  • Wenn unter Data ein Hash angegeben ist, muss in ListData ebenfalls ein Hash angegeben sein

  • Wenn unter Data ein Array angegeben ist, dann ist die Angabe von ListData nicht erforderlich

Data muss ein Hash sein, wenn Array, dann ist ListData nicht notwendig

ListCount

Definiert eine maximale Anzahl von Listeneinträgen die angezeigt werden sollen.

Ist die Anzahl der Datensätze kleiner als die maximale Anzahl, werden diese aufgefüllt, sofern ShowEmpty aktiv ist.

ListStyle

Definiert den Stil der Liste

Folgende Typen sind möglich:

  • ul: nicht geordnete Liste (symbolisch)

  • ol: geordnete Liste (numerisch)

  • none: keine führenden Listenpunkte

ShowEmpty

Zeigt Leerzeilen an, wenn beim Datensatz kein Wert vorhanden ist.

Kann kombiniert werden mit ListCount.

Value

ja

Beinhaltet den Wert der pro Datensatz angezeigt werden soll.

Erwartet Array oder String

Wird dies als Array aufgebaut, werden alle Einträge kombiniert und in einer Zeile dargestellt.

Kombinierbar mit „Join“

Kann Platzhalter auflösen

Join

Definiert, wie die Werte aus Value zusammengesetzt werden sollen.

ReplaceAs

Definiert einen Wert, der gesetzt werden soll, wenn Platzhalter nach dem Ersetzen keinen Wert beinhalten.

Standard: -

Sie können auch einen Leerwert setzen.

Translate

Aktiviert die Übersetzung

Style

Benötigt eine ID

Zulässige Styles:

  • Height

  • Width

  • Float

  • Size

  • Class

* siehe auch: Die Parameter und ihre Bedeutung

Beispiel 13. Beispiel: Struktur-Code für den Baustein "List"
{
   "ID": "Contact",
   "Type": "List",
   "Data": "XMLContents",
   "ListData": "SectionContacts::1::OwnerContact",
   "ListObject": "Contact",
   "ListCount": 4,
   "ShowEmpty": 1,
   "ListType": "none",
   "Translate": true,
   "Value": [
      "Contact.Title.Value",
      "Contact.Fullname.Value"
   ],
   "ReplaceAs": "",
   "Join": "&nbsp;",
   "Style": {
      "Width": "100%",
      "Float": "left",
      "Class": [
         {
            "Selector": " ",
            "CSS": "margin-bottom: 0.5rem;"
         },
         {
            "Selector": " > li",
            "CSS": "font-family:arial; font-size:28pt; "
         }
      ]
   }
}


Parameter

erwarteter Datentyp

Bedeutung

Object

String

Ist das Objekt, welches die Daten aufbereitet und bereitstellt.

Für die Aufbereitung wird - abhängig vom Objekt - eine ID, Name oder Nummer benötigt.

Expands

Array | String

Mit diesem Parameter kann die Datenmenge des Objekts um weitere Daten erweitert werden.

Je Objekt sind unterschiedliche Expands möglich.

Abhängig des Expands wird entweder eine Datenerweiterungen oder eine ID-Liste bereitgestellt.

Data 

String

Wird nur von den Bausteinen Blocks und List unterstützt.

Hiermit können explizit nur die Daten genutzt werden, die per Expands angefordert wurden.

Es ist zu beachten, dass das die Daten des übergeordnetem Objekt-Expands sind und nicht des Objekts, welches aufgebaut wird.

Allow

Hash

Whitelist für den Baustein "Table" vom Typ "KeyValue" und "DataSet".

Je nach Tabellentyp werden auch die darin genutzten Daten entsprechend gefiltert.

Wird beispielsweise nur ein KeyValue-Typ genutzt, können damit nur bestimmte Attribute zugelassen werden.

Wird stattdessen nur der Attribut-Typ genutzt, können nur bestimmte Datensätze zugelassen werden - sofern die Werte der zu prüfenden Attribute stimmen.

Es gibt zwei Wertprüfungen die angewendet werden können:

  • KEY: Zulassen des Eintrags ohne direkte Prüfung des Attributes

  • Prüfwert: Ein Wert, der mit dem Wert des Parameters gegengeprüft werden soll (RegEx möglich)

Ignore

Hash

Blacklist für den Baustein "Table" vom Typ "KeyValue" und "DataSet".

Abhängig von der vorliegenden Tabellenstruktur werden auch die darin genutzten Daten entsprechend gefiltert.

Wird beispielsweise nur ein KeyValue-Typ genutzt, können damit bestimmte Attribute ignoriert werden.

Wird stattdessen der Attribut-Typ genutzt, können bestimmte Datensätze weggelassen werden - sofern die Werte der zu prüfenden Attribute übereinstimmen.

Es gibt zwei Wertprüfungen, die angewendet werden können:

  • KEY: Auslassen des Eintrags ohne direkte Prüfung des Attributes

  • Prüfwert: Ein Wert, der mit dem Wert des Parameters gegen geprüft werden soll. Es sind reguläre Ausdrücke möglich.

Columns

Array

Ein Parameter für den Baustein "Table".

Mit diesem Parameter kann festgelegt werden, wie die Tabelle aufgebaut werden soll. Dabei wird unterschieden zwischen den Typen: 

  • KeyValue: Angabe des Parameters als Schlüssel-Wert-Paar.

    Das heißt: In der Tabelle wird pro Spalte der Schlüsselname als "Key" und der Wert als "Value" angegeben.

    'Columns' => [
       '<Class_Key><Font_Bold>Key',
       'Value'
     ],
  • Attribute: Definiert, welches Attribut in welcher Spalte angezeigt werden soll

Info: "KeyValue" und "Attribute" sind hier nur indirekte Bezeichnungen zum Verdeutlichen.

Rows

ArrayOfArrays

Ein Parameter für den Baustein "Table" und dem Tabellentyp "Custom".

Mit diesem Parameter kann der Inhalt der Tabelle festgelegt werden. Dieser Parameter steht in Kombination mit Columns.

'Rows' => [
   [
     'Title',
     'Contact.Title.Value',
     'Phone',
     'Contact.Phone.Value'
  ],

Headline

Boolean

Aktiviert die Kopfzeile der Tabelle und zeigt die unter Columns hinterlegten Einträge an.

ID

String

Ist der Kenner des jeweiligen Bausteins.

Sichert ab, dass das gesetzte Style nur den betreffenden Baustein beeinflusst.

In Tabellen mit der angegebenen ID kann die Verwendung von Allow oder Ignore das in der jeweiligen Tabelle inital definierte Allow oder Ignore überschreiben.

Translate 

Boolean

Aktiviert die Übersetzung.

Style

Hash

Definiert die Darstellung des jeweiligen Bausteins. Nicht jeder Style-Typ findet in jedem Baustein Anwendung.

Achtung: Für eine gute Darstellung, sollten im Style möglichst nur die Maßangaben %, em oder rem angegeben werden.

  • Width (%, rem, em): Beeinflusst die Breite des Strukturtyps. Geben Sie möglichst nur Prozentwerte an (z. B.: 50%)

  • Height (rem, em): Höhe eines Strukturtyps

  • Size (rem, em): Schriftgröße

  • Float (right, left): Ausrichtung des Strukturtyps

  • Color (Hex, Farbname): Schriftfarbe

  • BGColor (Hex, Farbname): Hintergrundfarbe

  • Class (ArrayOf Hash): Klassenspezifisches CSS

Join

String

Mit Join können Textpassagen kombiniert werden, wenn beim Baustein "Text" als Value ein Array genutzt wird.

Break 

Boolean

Setzt eine Trennlinie unterhalb des Bausteins "Text".

Value 

Array | String

Werte, die im jeweiligen Baustein angezeigt werden sollen (Platzhalter-Ersetzung möglich).

Nicht für Strukturtyp "Table" geeignet.

'Value' => 'Ticket.Title.Value'

'Value' => [
   '<Font_Bold>Customer Information'
]

Dieser Parameter kann sowohl als Array oder String genutzt werden.

Hintergrund für das Array ist, dass nicht immer vollständige Texte übersetzt sind oder in Kombination mit Inhalten aus Platzhaltern diese Inhalte nicht existieren. Dadurch können die einzelnen Passagen mit Join kombiniert und vorher einzeln übersetzt (Translate) werden.

Type 

String

Ist der Baustein (wie Table, Text, Richtext usw.)

SubType

String

Ist der Tabellentyp (wie Custom, KeyValue, DataSet usw.)

PageOf

Boolean

Ist Teil des Bausteins "Page". Legt fest, ob "Seite X von Y" oder nur die Seitennummer angezeigt werden soll.

TypeOf

String

Ist Teil des Bausteins "Image". Legt fest, was mit dem Wert aus dem Parameter Value geschehen soll. 

  • DB: Sucht anhand der "ObjektID" in der Datenbank-Tabelle "ObjectIcon" nach einem Bild.

  • Path: Sucht lokal auf dem Server nach einem Bild. Fügt dieses anschließend als Base64 der Struktur hinzu.

  • Base64: Übergibt dem Strukturtyp einen Base64-String (z. B. ein Bild).

Hinweis: Es sollte die HTML-Schreibweise genutzt werden (data:<ContentType>; base64,<base64Content>)

AsLink

Boolean

Definiert, dass der Baustein als Hyperlink dargestellt wird. Nur für Baustein "Text" anwendbar.

Achtung: Wenn angegeben, dann sollte auch eine URL als Value hinterlegt werden.

ReplaceKey

Boolean

Ändert die internen Schlüsselbezeichnung mit übersetzbaren Anzeigenamen.

Nur möglich mit dem Tabellentyp "KeyValue".

Die ersetzbaren Schlüsselbezeichnungen sind aktuell fest im System hinterlegt.

ReplaceAs

String

Definiert einen Wert, der gesetzt werden soll, wenn ein Platzhalter nach dem Ersetzen keinen Wert beinhaltet.

Standard ist: -

Es ist möglich, einen Leerwert zu setzen. Dies gilt für alle Platzhalter, die im Valueangewendet wurden.

ListObject

String

Definiert das Objekt, welches die Daten aufbereitet und bereitstellt. Nur für Baustein "List" anwendbar.

Für die Aufbereitung wird - abhängig vom Objekt - eine ID, Name oder Nummer benötigt.

ListData

String

Hiermit können explizit nur die Daten genutzt werden, die als Data angefordert wurden. Nur für Baustein "List" anwendbar.

Bitte beachten Sie: Es handelt sich hierbei um die Daten des übergeordneten Objekt-Expands und nicht um die Daten des Objekts, welches aufgebaut wird.

ListStyle

String

Definiert den Style der Liste. Nur für Baustein "List" anwendbar.

Folgende Styles sind möglich:

  • ul: nicht geordnete Liste (symbolisch)

  • ol: geordnete Liste (numerisch)

  • none: kein führender Anstrich

ListCount

Numeric

Legt eine maximale Anzahl von anzuzeigenden Listeneinträgen fest. Nur für Baustein "List" anwendbar.

Ist die Anzahl der Datensätze kleiner der maximalen Anzahl werden diese aufgefüllt - sofern ShowEmpty aktiv ist.

ShowEmpty

Boolean

Zeigt Leerzeilen an, wenn beim Datensatz kein Wert vorhanden ist. Nur für Baustein "List" anwendbar.

Kann kombiniert werden mit ListCount.

Damit die Ausdrucke auch Daten beinhalten, wird pro Vorlage ein Objekt (Ticket, Asset, Artikel o.a.) zu gewiesen, welches die Daten bereitstellt. Pro Vorlage kann immer nur ein Objekt als Hauptobjekt festgelegt werden. Dieses muss in der Datenbank hinterlegt sein.

Unterobjekte

In Vorlagen können auch Unterobjekte gesetzt werden. Diese sind von den Erweiterungen des Hauptobjekts abhängig.

Zum Beispiel bei einem Objekt vom Typ Ticket kann als Erweiterung "Article" gesetzt werden. Diese liefert eine Liste von Artikel-IDs des angefragten Tickets. Diese Liste kann dann als Block-Kombination mit dem Baustein List genutzt werden.

Erweiterungen (Expands)

Expands sind zusätzliche Daten des Hauptobjekts, die in Relation zu ihm stehen. Durch Angabe von Expand definieren Sie, welche zusätzlichen Daten des Objekts Sie bereitstellen möchten, z. B. die am Objekt hinterlegten Dynamischen Felder. Damit deren Werte im PDF angezeigt werden können, müssen Sie diese zusätzlich in den Blocks inkludieren:

{
  "Type": "List",
  "Object": "Organisation",
  "Data": "Organisation",
  "Expand": "DynamicField",
  "Blocks":[
    {
      "ID": "Organisation",
      "Type": "Table",
      "SubType": "Custom",
      "Include": "DynamicField",
      "Columns":[
         "<Class_Col1><Font_Bold>",
         "<Class_Col2>",
         "<Class_Col1"<Font_Bold>",
         "Class_Col2"
      ],
      "Rows":[
        [
          "Organisation",
          "Organisation.Name.Value",
          "Customer No. / Type",
          "Organisation.Number.Value / Organisation.DynamicField_Type.Value.0"
        ],
        [...]
      ],
      "Translate":true,
      "Style":{
         "Class":[{...}]
      }
    }
  ]
}
Ticket

Erweiterung

Beschreibung

Dynamic Field

Fügt den Ticketdaten den Parameter DynamicField hinzu.

Die Daten werden als HashRef hinterlegt. Dieser beinhaltet den Schlüssel DynamicField_xyz und ein HashRef mit der Feldkonfiguration und dem Anzeigewert (xyz entspricht dem Namen des Dynamischen Feldes).

Article

Fügt den Ticketdaten den Parameter Article hinzu mit einer Liste von IDs (Array).

LinkObject

Fügt den Ticketdaten den Parameter LinkObject hinzu mit einer Liste (Array) der Verlinkungen zum Ticket.

Möglichle Verlinkungen sind:

  • Person

  • Ticket

  • FAQArticle

  • Asset

Contact

Fügt den Ticketdaten den Parameter Contact hinzu mit einer Liste von IDs (Array)

Organisation

Fügt den Ticketdaten den Parameter Organisation hinzu mit einer Liste von IDs (Array)

Article

Erweiterung

Beschreibung

Dynamic Field

Fügt den Artikeldaten den Parameter DynamicField hinzu.

Die Daten werden als HashRef hinterlegt. Dieser beinhaltet den Schlüssel DynamicField_xyz und ein HashRef mit der Feldkonfiguration und dem Anzeigewert (xyz entspricht dem Namen des Dynamischen Feldes).

Organisation

Erweiterung

Beschreibung

Dynamic Field

Fügt den Organisationsdaten den Parameter DynamicField hinzu.

Die Daten werden als HashRef hinterlegt. Dieser beinhaltet den Schlüssel DynamicField_xyz und ein HashRef mit der Feldkonfiguration und dem Anzeigewert (xyz entspricht dem Namen des Dynamischen Feldes).

Contact

Erweiterung

Beschreibung

Dynamic Field

Fügt den Kontaktdaten den Parameter DynamicField hinzu.

Die Daten werden als HashRef hinterlegt. Dieser beinhaltet den Schlüssel DynamicField_xyz und ein HashRef mit der Feldkonfiguration und dem Anzeigewert (xyz entspricht dem Namen des Dynamischen Feldes).

Asset

Erweiterung

Beschreibung

Version

Fügt den Assetdaten den Parameter Version hinzu.

Darin ist ein Hashref mit den Grunddaten der Version.

Es werden keine XMLData oder XMLDefinition mit ausgeliefert

XMLAttributes

Fügt den Assetdaten den Parameter XMLAttributes als Hashref hinzu.

Als Schlüsselwert wird der XML-Pfad des jeweiligen Attributs genutzt und der aufbereitete Wert dazu gesetzt.

Beispiel Schlüssel: SectionOwner::1::OwnerOrganisation::1

XMLStructure

Fügt den Assetdaten den Parameter XMLStructure als Array-Liste hinzu.

Diese Struktur kann nur im Zusammenhang mit dem gleichnamigen Tabellentyp XMLStructure genutzt werden.

XMLContents

Fügt den Assetdaten den Parameter XMLContents als HashRef hinzu.

Als Schlüsselwert wird der XML-Pfad des jeweiligen Attributs genutzt und der gespeicherte Inhalt (unaufbereitet) dazu gesetzt.

Beispiel Schlüssel: SectionOwner::1::OwnerContact::1

Für die Formatierung und für spezifische Angaben können Platzhalter verwendet werden. Dies sind keine KIX-Platzhalter in herkömmlichen Sinn, sondern Platzhalter für die Texte und Tabelleninhalte im PDF.

Platzhalter

Beschreibung

<Font_Bold>

Stellt den Inhalt fett und serifenlos dar.

<Font_Italic>

Stellt den Inhalt kursiv und serifenlos

<Font_BoldItalic>

Stellt den Inhalt fett-kursiv und serifenlos dar.

<Font_Mono>

Stellt den Inhalt in der Schriftart "Mono" dar.

<Font_MonoBold>

Stellt den Inhalt in der Schriftart "Mono" und fett dar.

<Font_MonoItalic>

Stellt den Inhalt in der Schriftart "Mono" und kursiv dar.

<Font_MonoBoldItalic>

Stellt den Inhalt in der Schriftart "Mono" und fett-kursiv dar.

Platzhalter

Beschreibung

<Current_Time>

Liefert das aktuelle Datum inkl. Zeit

<Current_User>

Liefert den Namen des Users der die Konvertierung ausgeführt hat.

<Count> | Count>

Liefert eine vorangestellte Zahl (Anwendung für Tabellen um Datensätze zu markieren).

<Current_Date>

Liefert das aktuelle Datum ohne Zeit.

Platzhalter

Beschreibung

<TIME_YYYYMMDD>

Liefert den aktuellen Zeitstempel zurück als "JahrMonatTag" (20250319).

<TIME_YYYYMMDD_hhmm>

Liefert den aktuellen Zeitstempel zurück als "JahrMonatTagStundenMinuten" (202503191111).

Syntax: <Object>.<Attribut>.<Key|Value>[.<ValueIndex>]

Attribut

Beschreibung

<Object> 

Ist das Objekt, welches die Vorlage nutzt.

Wenn ein Block ein "Data" hat, ändert sich das Objekt in das Objekt des "Datas", weil zu diesem Zeitpunkt andere Daten für den Block verwendet werden.

<Attribute>

Das Attribut, welches Teil des Objekt ist.

Mit dem Parameter Inlcude am Block können Expands aus dem Objekt direkt als Attribut verwendet werden.

<Key|Value>

Bestimmt, was angezeigt werden soll.

  • Key zeigt den Attributname an

  • Value zeigt den Attributwert an.

<Index>

Optional: Ist das Attribut ein Array, so kann nach dem Value noch der Index angeben werden, um den anzuzeigenden Wert zu bestimmen.

Wird kein Index angegeben, werden alle Werte kommasepariert angezeigt.

Beispiel: Platzhalter für das Objekt Ticket 

// TicketNumber
// <Object>.<Attribute>.<Key>
Ticket.TicketNumber.Key

// Dynamisches Feld (nur wenn Include DynamicField gesetzt ist)
// <Object>.<Attribute>.<Value>
Ticket.DynamicField_XYZ.Value

// Multiselect Dynamisches Feld (nur wenn Include DynamicField gesetzt ist)
// <Object>.<Attribute>.<Value>.<Index>
Ticket.DynamicField_XXY.Value.1

Beispiel: Platzhalter für Objekt Asset

Bei Objekten vom Typ "Asset" können Sie neben den Standard Attributen auch die Attribute der Klassendefinition angewendet werden. Dafür müssen Sie allerdings in der Konfiguration des jeweiligen Blocks XMLAttributes als Data setzen, da es sich um Expand-Daten handelt.

Zum Anzeigen der Attributwerte müssen Sie die Struktur der Klassendefinition kennen. Verwenden Sie die gleiche Schreibweise wie in der SysConfig.

Syntax: <Attribut>::<Position>[...<SubAttribut::<Position>]

// Type
// <Object>.<Class-Attribute>.<Value>
Asset.SectionGeneral::1::Type::1.Value

// Assigned Organisation
// <Object>.<Class-Attribute>.<Value>
Asset.SectionOwner::1::OwnerOrganisation::1.Value

Der Platzhalter <Class_...> kann in jedem Baustein (außer "Blocks") angewendet werden. Mit ihm kann einer Spalte (unter Columns) oder einem Text/Richtext (unter Value) eine Style-Klasse mitgegeben werden, um den Inhalt zu formatieren.

Das Setzen der jeweiligen CSS für eine Klasse erfolgt im Parameter Style mit dem Key Class.  Class ist ein ArrayOfHashes, wo jeder Hash eine Klasse inkl. CSS ist. Im Hash gibt es zwei Keys:

Key

Beschreibung

Selector

CSS-Klasse, welche an die BlockID gesetzt wird.

Es ist auf die CSS-Regeln der Selectoren zu achten.

.<BlockID><Selector> {} 

CSS

Enthält die CSS-Angaben zum Selector.

Die Angaben erfolgen als String und werden daher ohne {} geschrieben.

Beispiel 

{
  "Type": "List",
  "Object": "Organisation",
  "Data": "Organisation",
  "Expand": "DynamicField",
  "Blocks":
  [
    {
      "ID": "Organisation",
      "Type": "Table",
      "SubType": "Custom",
      "Include": "DynamicField",
      "Columns":
      [
        "<Class_Col1><Font_Bold>",
        "<Class_Col2>",
        "<Class_Col1><Font_Bold>",
        "<Class_Col2>"
      ],
      "Rows":
      [
        [
          "Organisation",
          "Organisation.Name.Value",
          "Customer No. / Type",
          "Organisation.Number.Value / Organisation.DynamicField_Type.Value.0"
        ],
        [ 
          "Street",
          "Organisation.Street.Value",
          "ZIP, City, Country",
          "Organisation.Zip.Value, Organisation.City.Value, Organisation.Country.Value"
        ]
      ],
      "Translate": true,
      "Style":
      {
        "Class":
        [
          {
            "Selector": " .Col1",
            "CSS": "width: 20%;"
          },
          {
            "Selector": " .Col2",
            "CSS": "width: 30%;"
          }
        ]
      }
    }
  ]
},

Aktuell können Sie ein PDF aus einem HTML nur über einen Befehl in der Konsole (Terminal) konvertieren. In Zukunft wird das Konvertieren auch über die GUI möglich sein.

Über die Konsole können nur zwei Befehle ausgeführt werden. Das Hinzufügen einer neuen Vorlage ist vorerst nicht vorgesehen.

Im Menü System > Konsole stehen 2 Konsolenkommandos für HTMLToPDF zur Verfügung:

Mit dem Konsolenkommando Console::Command::Admin::HTMLToPDF::Inspect kann eine bestehende Vorlage eines Objekts eingesehen werden. Angezeigt wird die Struktur der Vorlage im PEARL-Format.

Anhand der angezeigten Struktur können Sie erkennen, wie die Vorlage aufgebaut ist und welche Parameter initial gesetzt sind. Diese Informationen können Sie nutzen, um bspw. in der Konfiguration der Macro Action "Konvertieren zu PDF" (KIX Pro) oder bei Ausführung des Convert-Befehls entsprechende Filter, Expands, Allows oder Ignores zu setzen oder zu ändern. 

Nutzer von On-Premises-Installationen können optional in der Konsole (Terminal) folgenden Befehl nutzen:

webuser@system:/<KIX_HOME>$ ./bin/kix.Console.pl Admin::HTMLToPDF::Inspect --allow-root

Parameter 

Sie können dem Konsolenbefehl zusätzliche Parameter mitgegeben, um anzugeben, welche Vorlagen Sie einsehen möchten:

Parameter

Pflichtfeld

Beschreibung

--name

ja

Name der Vorlage, die eingesehen werden soll. Die Angabe von --id ist dann nicht notwendig

Beispiele:

  • --name Ticket 

  • --name Article 

--id

ja

ID der Vorlage, die eingesehen werden soll (sofern bekannt). Die Angabe von --name ist dann nicht notwendig.

Beispiele: 

  • --id 1 (Ticket)

  • --id 2 (Artikel)

Hinweis: Je nach Installation kann die ID abweichend sein. Wir empfehlen die Verwendung des Namens.

Der Konsolenbefehl Console::Command:: Admin::HTMLToPDF::Convert erstellt ein PDF auf Konsolenebene. Mit ihm wird die Konvertierung eingeleitet. Das heißt, es wird das HTML aus der gewählten Vorlage generiert und anschließen zu einem PDF konvertiert.

Nutzer von On-Premises-Installationen können optional in der Konsole (Terminal) folgenden Befehl nutzen:

webuser@system:/<KIX_HOME>$ ./bin/kix.Console.pl Admin::HTMLToPDF::Convert --allow-root

Das Convert-Kommando ist das Pendant zur Macro Action Konvertieren zu PDF

Das Convert-Kommando legt das PDF dort ab, wo das System liegt. Wird kein Dateiname oder Ablageort angegeben, wird der Standard verwendet. Das Standard-Ablageverzeichnis ist aktuell /tmp. Der Standard-Dateiname wird aus dem Vorlagenname, der gelieferten ID oder Nummer und der aktuellen Zeit gebildet. Zum Beispiel:

<Templatename>_<ID | Number>_<Timestamp> -> Ticket_1_20221008090052

Sie können dem Konsolenbefehl zusätzliche Parameter mitgegeben und damit die PDF-Ausgabe manipulieren.

Parameter

Pflichtfeld

Beschreibung

--name

ja

Name der Vorlage die konvertiert werden soll, z. B. Ticket

--user_id

UserID des Erstellers.

Es wird der Name des Benutzers im Dokument als <Current_User> angegeben, wenn dieser gesetzt ist.

--filename

Spezifischer Dateiname der PDF (Angabe ohne Datei-Endung)

--directory

Ablageort der erstellten PDF

--filter

(als JSON-String)

Filtert die in der Vorlage gesetzten Objekte

--allow

(als JSON-String)

Überschreibt die in der Tabelle gesetzten Allows. Dazu ist die ID des jeweiligen Bausteins notwendig (s. Allow und Ignore).

--ignore

(als JSON-String)

Überschreibt in die in der Tabelle gesetzten Ignores. Dazu ist die ID des jeweiligen Bausteins notwendig (s. Allow und Ignore).

--id

ja

Notwendige ID, damit das Objekt die Daten aufbereiten kann (z. B. TicketID oder ArticleID)

Was das Objekt erwartet, kann mit --help in Erfahrung gebracht werden.

--number

ja

Notwendige Nummer, damit das Objekt die Daten aufbereiten kann.

Was das Objekt erwartet, kann mit --help in Erfahrung gebracht werden.

--help

Liefert Information zu einem Befehl.

Filter

Mit Filter können in der Vorlage gesetzte Objekte gefiltert werden. Das Hauptobjekt sollte nicht enthalten sein, da sonst das PDF leer sein könnte. Im Befehl muss dies als JSON-String hinterlegt werden.

Struktur Filter Format 

{
   "Object":
   {
      "AND|OR":
      [
         {
            "Field": "Attribute",
            "Type": "EQ|CONTAINS",
            "Value": "some values"
         }
      ]
   }
}

Beispiel Filter Format 

{
   "Article":
   {
      "AND":
      [
         {
            "Field": "ArticleType",
            "Type": "EQ",
            "Value": "external"
         }
      ]   
   }
}
Allow und Ignore

Die Struktur der Parameter Allow und Ignore  ist ein Hash-Wert im JSON-Format. Key ist der Attributname. Mit dem dazugehörigen Wert kann bestimmt werden, was mit dem Attribut zu tun ist.

Um die jeweilige Tabelle anzusprechen, wird deren Referenz-ID benötigt. Diese kann der Template-Struktur entnommen werden. Nutzen Sie dazu im Menü System > Konsole den Konsolen-Befehl Console::Command::Admin::HTMLToPDF::Inspect.

macroaction_PDFConvert_ConsoleCommand_HTMLToPDFInspect.png

Abb.: Ermitteln der Referenz-ID für Tickets anhand der Template-Struktur in der Konsole

Ist die ID bekannt, kann ein JSON aufgebaut werden, welches die einzuschränkenden Attribute enthält. Bei der Einschränkung gibt es zwei Möglichkeiten:

  1. Wird dem Attribut der Wert KEY gesetzt, dann wird das gesamte Attribut ohne weitere Prüfung entweder angezeigt (Allow) oder wird ignoriert (Ignore).

  2. Wird dem Attribut anstelle des KEY ein regulärer Ausdruck gesetzt, dann wird dieser reguläre Ausdruck auf den Wert des Attributes angewendet.

    Durch Nutzung eines RegEx können die Werte eines Attributes geprüft werden. Trifft der jeweilige Wert zu, wird das Attribut ignoriert bzw. angezeigt.

    Das RegEx ist frei wählbar. Es darf jedoch nicht KEY enthalten, da KEY das Schlüsselwort für das gesamte Attribut ist.

    Syntax: 

    {
      "Referenz-ID": {
         "Attribut": "KEY",
         "Attribut": "regex"
      }
    }

    Beispiel: 

    {
      "ArticleMeta": {
         "Channel": "KEY",
         "From": "kixdesk.com"
      }
    }
    • Bei Allow bedeutet dies, dass der Channel angezeigt wird.

      From wird aber nur angezeigt, wenn "kixdesk.com" am Ende enthalten ist. Alle anderen möglichen Attribute werden nicht angezeigt.

    • Bei Ignore bedeutet dies, dass der Channel direkt ignoriert wird.

      From wird jedoch nur ignoriert, wenn "kixdesk.com" am Ende enthalten ist. Alle anderen Attribute werden angezeigt.

In den ausgelieferten Vorlagen ist vordefiniert, welche Informationen das PDF enthält. Da diese Informationen ausreichend oder zu umfangreich sein können, können diese mit --allow oder --ignore temporär beeinflusst werden. Diese Beeinflussung gilt nur für die aktuelle Ausführung des Konsolenbefehls bzw. nur bei Ausführung der Macro Action "Konvertieren zu PDF" (KIX Pro).

Es ist vorher abzuwägen, was einfacher abzubilden ist. Mitunter ist die Anwendung einer Whitelist (allow) einfacher als die Anwendung einer Blacklist (ignore) - oder umgekehrt. Es kommt immer darauf an, was angezeigt werden soll.

Wichtig

Sind beide Optionen (allow und ignore) angegeben und beide Optionen enthalten eine ID, so wird die ID aus allow verwendet.

In diesem Beispiel wird ignore verwendet. Die Struktur des JSON ist die gleiche wie bei allow. Der Unterschied ist, dass ignore als Blacklist und allow als Whitelist gehandelt wird. Da ignore verwendet wird, werden auch alle Informationen zum Artikel angezeigt. Das betrifft auch die Dynamischen Felder, sofern beim Strukturtyp ein Include gesetzt ist. Im Standard ist dies nicht der Fall.

Zunächst wird die ID des Strukturtyps "Table" benötigt. Damit wird angegeben, auf welche Tabelle die Einschränkung der anzuzeigenden Informationen gilt. In beiden Vorlagen enthält die ID "ArticleMeta" die Artikelinformationen.

Im Beispiel sollen alle Artikelinformationen angezeigt werden, außer den Angaben zu CustomerVisible, MessageID, TicketID, ChannelID, Body, Cc und Bcc. Der Channel soll jedoch nur angezeigt werden, wenn dieser nicht "note" ist.

Hinweis

KEY ist ein Trigger dafür, dass das gesamte Attribut entweder zu- oder weggelassen wird

Beispiel 

{
   "ArticleMeta":
   {
      "CustomerVisible": "KEY",
      "MessageID": "KEY",
      "TicketID": "KEY",
      "ChannelID": "KEY",
      "Body": "KEY",
      "Cc": "KEY",
      "Bcc": "KEY",
      "Channel": "note"
   }
}

Minimieren Sie den JSON-String, um ihn anschließend in den Konsolenbefehl einzufügen (Klick auf "minify" im JSON-Editor). Nach dem Absenden des Konsolenbefehls wird das PDF erstellt. 

webuser@system:/<KIX_HOME>$ ./bin/kix.Console.pl Admin::HTMLToPDF::Convert --allow-root --id 1 --name Ticket --ignore '{"ArticleMeta":{"CustomerVisible":"KEY","MessageID":"KEY","TicketID":"KEY","ChannelID":"KEY","Body":"KEY","Cc":"KEY","Bcc":"KEY","Channel":"note"}}'

Die Macro Action "Konvertieren zu PDF" erwartet die Angaben im Parameter Allows bzw. Ignores ebenfalls als JSON-String. Hier ist es nicht nötig, den JSON-String zu minimieren.

Es soll nur ein bestimmter Artikel mit Angabe zusätzlicher Ticketinformationen gedruckt werden. Grundsätzlich könnte dazu die Vorlage "Article" genutzt werden. Diese enthält jedoch keine Ticketinformationen, weshalb die Vorlage "Ticket" zu verwenden ist. Die Vorlage "Ticket" wiederum druckt aber alle Artikel des Tickets. Daher muss dem Befehl ein Filter hinzugefügt werden, welcher den gewünschten Artikel selektiert. In diesem Beispiel wird der Filter über die Artikelnummer eingeschränkt.

Hinweis

Die Artikelnummer ist kein Parameter des Artikels, sondern ein externer Zähler. Dieser kann nur mit der Vorlage "Ticket" angewendet werden.

Ein über den Konsolenbefehl gesetzter Filter muss ein JSON-String sein. Verwenden Sie dazu ggf. einen JSON-Editor (z. B. jsonformatter.io). Für dieses Beispiel sieht der Filter folgendermaßen aus:

Artikelfilter auf den 4. Artikel des Tickets 

{
   "Article":
   {
      "AND":
      [
         {
            "Field": "ArticleNumber", 
            "Type": "EQ",
            "Value": "4"
         }
      ]
   }
}

Minimieren Sie den JSON-String, um ihn anschließend in den Konsolenbefehl einzufügen (Klick auf minify im JSON-Editor). Nach dem Absenden des Konsolenbefehls wird das PDF erstellt. Es enthält die Ticketinformationen und den gewählten Artikel.

webuser@system:/<KIX_HOME>$ ./bin/kix.Console.pl Admin::HTMLToPDF::Convert --allow-root --id 1 --name Ticket --filter '{"Article":{"AND":[{"Field":"ArticleNumber","Type":"EQ","Value":"4"}]}}'

Die Macro Action "Konvertieren zu PDF" erwartet den Filter ebenfalls als JSON-String. Hier ist es nicht nötig, den JSON-String zu minimieren.

In KIX Pro steht Ihnen eine Macro Action zur Verfügung, mit der Sie den PDF-Druck eines Artikels oder Tickets via Job oder Aktion auslösen können.

Die Macro Action konvertiert Informationen eines Objekts (wie bspw. Artikel, Ticket oder Asset) entsprechend der gewählten Druckvorlage in eine PDF-Datei. Sie ist das Pendant zum Konsolen-Befehl Console::Command:: Admin::HTMLToPDF::Convert.

Sie ermöglicht

  • die Ausgabe von Objekt-Informationen mittels Job oder Aktion in einer PDF-Datei.

  • die Bereitstellung von Artikel- oder Ticket-Inhalten in automatisiert erstellten Tickets oder in E-Mails (z. B. Erstellen und Versenden von Abrechnungen oder Serviceberichten).

  • die Bereitstellung des erstellten PDFs an einem Dynamischen Feld vom Typ Attachment (z. B. als Artikel-Anhang).

  • in Verbindung mit Webhooks auch das Archivieren von Ticketvorgängen als PDF in ein Dokumentenmanagementsystem

  • die kombinierte Verwendung mit den Macro Actions Artikel Anhang hinzufügen und Objekt zusammenstellen.

Die Macro Action nutzt die im System hinterlegten Druckvorlagen für den PDF-Druck. In der Konfiguration der Macro Action müssen Sie angeben, welche der zur Auswahl stehenden Druckvorlagen genutzt werden soll und von welchem Objekt (basierend auf der Angabe der Druckvorlage) die Informationen für das PDF bezogen werden sollen.

Zusätzlich zu den Pflichtangaben können Sie Dateiname, Filter, Allow und Ignore angeben und so die zu druckenden Informationen beeinflussen. Hierbei werden bestimmte Informationen der gewählten Druckvorlage überschrieben, sofern diese enthalten sind. Die Vorgaben der Druckvorlage werden dabei nur temporär für die PDF-Ausgabe geändert.

Als Rückgabewert liefert die Macro Action einen Dateianhang im JSON-Format, in dem Content, Filename, FileSize und ContentType enthalten ist. Auf diesen Rückgabewert kann bspw. in der Macro Action Article Attachment Add referenziert werden, um das erzeugte PDF als Anhang an einen Artikel zu setzen. 

macroaction_PDFConvert.png

Abb.: Verwendungsbeispiel Macro Action "Konvertieren zu PDF"

Verwendung/Jobtyp: Ticket

Parameter

Beschreibung

Datei

Name der Ergebnisvariable

Gibt einen Dateianhang als JSON zurück, in dem Content, Filename, FileSize und ContentType enthalten ist.

Sie können bspw. in der Macro Action "Artikel Anhang hinzufügen" auf die Variable referenzieren, um das erzeugte PDF als Anhang an einen Artikel zu setzen.

Vorlage

Auswahl der Vorlage, welche für den PDF-Druck verwendet werden soll.

Zur Auswahl stehen die im System hinterlegten Vorlagen für den PDF-Druck.

Identifier Type

Bestimmt den internen Parameter des Objekts (Objekttyp der gewählten Druckvorlage), z. B. ArticleID

Definiert, von welchem Objekt die Daten bezogen werden.

Identifikator

Wertangabe, die aufgrund des Identifikator-Typs gesetzt werden muss, damit die Daten für die Druckvorlage gewonnen werden können.

Z. B.<KIX_ARTICLE_ArticleID> oder ${RootObjectID}.

Dateiname

Optionaler Dateiname, der anstatt des Standardnamens verwendet werden soll

Z. B.: Article_<KIX_ARTICLE_ArticleID>_<TIME_YYMMDD>.

Sie können den Platzhalter <TIME_YYMMDD> verwenden, um dem Dateinamen die Erstellungszeit der PDF-Datei hinzuzufügen.

Erweitert

Optional: Definiert, welche zusätzlichen Daten (Expands) für den Druck herangezogen werden sollen, z. B.: Dynamisches Feld.

Die zur Auswahl stehenden Erweiterungen hängen von der gewählten Vorlage ab.

Filter

Optional: Sie können Filter angeben, um bestimmte Erweiterungen einzuschränken (Format als JSON)

Möglich nur bei ID-Listen. Gilt überall dort, wo das gleiche Objekt genutzt wird.

Beispiel: Von einem Ticket sollen nur die für den Kunden sichtbaren Artikelberücksichtigt werden:

{
  "Article": {
      "AND": [{
        "Field": "CustomerVisible",
        "Type": "EQ",
        "Value": "1"
      }]
  }
}

Erlaubt

(Whitelist)

Optionale Einschränkung des Tabelleninhalts.

Nur möglich bei Tabellentyp "KeyValue" oder "DataSet"

Überschreibt/manipuliert das, was in der Druckvorlage für die jeweilige Tabelle gespeichert ist.

Die Verwendung von Regulären Ausdrücken (RegEx) ist möglich.

{
  "InfoTableLeft": {
    "AccountedTime": "KEY",
    "DynamicField_DFChecklist": "KEY",
    "DynamicField_DFDropdown": "^regex$",
    "Created": "KEY",
    "CreateBy": "KEY",
    "ContactID": "KEY",
    "PendingTime": "KEY"
  }
}

Ausführliche Hinweise zum Parameter: Die Parameter Allow und Ignore

Ignorieren

(Blacklist)

Optionale Einschränkung des Tabelleninhalts.

Nur möglich bei Tabellentyp "KeyValue" oder "DataSet"

Überschreibt/manipuliert das, was in der Druckvorlage für die jeweilige Tabelle gespeichert ist.

Der Aufbau ist analog Erlaubt - mit dem Unterschied, dass die gesetzten Werte ignoriert werden.

Ausführliche Hinweise zum Parameter: Die Parameter Allow und Ignore