Voraussetzungen

  • Es muss ein Workflow und die Funktion im Kundensystem vorhanden sein, welche ermöglichen, dass diese Verwendung funktioniert. Wenden Sie sich dazu an den Verantwortlichen Administrator ihrer JAXForms Lösung.

Beispiele aus der Praxis

Strassenverkehrsamt BE

Beim SVSA des Kanton Bern können Adressänderungen online angemeldet werden. Dabei muss, wer noch ein Papierausweis besitzt, gleich ein Gesuch für einen neuen Führerausweis in Kreditkartenform gestellt werden.

Die Meldeperson erhält in einem Folgeschritt direkt ein vorausgefülltes Gesuch für einen neuen Ausweis. Dieses wird, zusammen mit einem vorbereiteten Begleitbrief, als PDF-Download zur Verfügung gestellt.

Schritt 2 im Formular > Download-PDF

Im Schritt "Beilagen" kann die Meldeperson die PDF Dateien öffnen (Download) und ausdrucken. Alternativ kann sich die Meldeperson die Beilagen zusenden lassen.

Staatskanzlei BE

Anmeldung / Bestellung einer Beglaubigung von Dokumenten. In diesem Fall dient das JAXForms Formular lediglich der Erstellung eines PDFs - es werden keine Daten gespeichert/übermittelt.

Formular

Downlaod PDF

Formulardaten im PDF


Word zu PDF

Beide vorgängig gezeigten Anwendungsfälle zeigen eine Lösung, bei welcher mit einer WORD (docx) Vorlage ein PDF generiert wird. Dieses enthält dann Angaben / Werte aus dem aktuellen Formular (Formulardatensatz). Dabei müssen die Daten nicht zwingend übermittelt werden.

Herausforderungen bei der Verwendung von WORD-Vorlagen

Grundsätzlich können alle mit einem JAXForms Formular erfassten Daten/Werte in über einen Platzhalter in ein Worddokument in das PDF übernommen werden. Es gibt jedoch diverse Herausforderungen, die entscheidend für die effiziente Verwendung des Konzeptes (Word zu PDF) sind. 

  • Der Umfang der der Inhalte die aus dem Formular kommen sollte möglichst stabil sein. Jede grössere, dynamische Veränderung des Umfangs führt dazu, dass im Ziel-PDF Seitenumbrüche / Abstände oder sonstige Darstellungen nicht immer gleich aussehen. Während im Webformular ganze Bereiche rasch und einfach ein-/ausgeblendet und so das Formular der Verwendung angepasst werden kann, kann dies im WORD nahezu nicht effizient abgehandelt werden.
  • Eine Mehrfachauswahl im Formular muss in der WORD Vorlage mit komplizierten Formeln abgehandelt werden. Hier gibt es rasch Diskrepanzen zwischen der gewünschten Ansicht und der mit vernünftigem Aufwand erreichbaren Lösung. Siehe Knowhow-Tipps.
  • Mehrseite Vorlagen und Tabellendarstellungen können zu Problemen führen, wenn der Umfang des Inhaltes nicht immer gleich sein wird.
  • Schriftarten und Sonderzeichen können zu Problemen führen. Es gilt der Grundsatz, dass nur Schriftarten und Zeichen in der Vorlage geführt sein dürfen, welche auch auf dem Server (Betrieb JAXForms auch installiert sind. Sonst kann aus dem Word kein PDF generiert werden. Achtung - Spezialschriftarten müssen eventuell extra dafür lizenziert werden. Es empfiehlt sich, möglichst allgemein verwendete Schriftarten zu verwenden.

Platzhalter verwenden

Im Word können die Platzhalter an der Stelle eingefügt werden, wo ein Wert aus dem Formular angezeigt werden soll. Das Beispiel zeigt aus dem Beglaubigung-Bestellen Formular das erfasste Verwendungsland an - Variable (FeldID) ist hier f_land

Beispiel im Fliesstext eingebettet: ...Die Kosten betragen CHF ${FORMULA=node(f_kostenDok)} pro Dokument...

Die Formatierung im Word wird dabei übernommen. Wenn CHF und die Kosten Fett sein sollen, muss dazu folgendes im WORD fett markiert werden.

 ...Die Kosten betragen CHF ${FORMULA=node(f_kostenDok)} pro Dokument... > Des führt zu dieser Ausgabe  « ...Die Kosten betragen CHF 25.00 pro Dokument... »

Platzhalter mit Bedingungen

Damit in der nachfolgenden Darstellung nur ein Komma kommt, wenn ein weiteres Dokument folgt, muss eine Logik verwendet werden.

Im Beispiel wissen wir, dass es max. 10 Dokumente sind. So kann gefragt werden, ob es nach dem Dokument 1 ein Dokument 2 gibt.

Zwischen der Ausgabe des Dokument 1 und Dokument 2 wird dir ROTE Formel eingefügt. Wenn f_doc2 grösser als 0 ist, dann füge das Komma (gelb markiert) ein. Diese Formel prüft die Länge eines Strings (Begriffes).

Alternative für Mehrfachauswahl, die nach einem bestimmten Wert sucht:  ${FORMULA=if(contains(nodeValue(auswahlDoks_natP),"faSchiff"),"• Bisheriger Schiffsführerausweis (Original)","")} - in diesem Fall (Mehrfachauswahl) wird nach dem technischen Wert verglichen. Ist dieser in der Auswahl (auswahlDoks_natP) aktiviert (faSchiff) trifft die Regel zu. Der Text (blau) wird somit ausgegeben.

Beispiel aus der Praxis (Beglaubigung)

Mit dem Formularelement "Ausgabetext" wird mit folgendem Code der Button zum Download ermöglicht:

"<p><a class=\"pdf btn-default\" target=\"_blank\" href=\"" + buildCurrentRepresentationPrintLink("resources/KAIO/STA-ARP-BestellungBeglaubigungen/" + JAX_USER_LANGUAGE + "/STA-ARP-BestellungBeglaubigungen.docx","STA-ARP-BestellungBeglaubigungen" + firstName + lastName + ".pdf") + "\" >Download der Bestellung Beglaubigungen (PDF)</a></p>"

Dabei wird (oben Grün) der Pfad im System angegeben, wo das Dokument (Vorlage) liegt. Oben Blau, bestimmt den Dateinamen der generierten PDF-Datei. In beiden Fällen werden System- oder Formularwerte mit fixen Werten (Strings) zusammengeführt.

Dies zeigt dann den Button (technisch ein Link) wie folgt.

Benennung der generierten PDF-Datei bei unterschiedlichen Sprachen

Die Mehtode com.jaxfront.eforms.core.actions.AbstractWorkflowAction#getFileNameFromDom ist erweitert worden, so dass neu auch JEP-Formeln auf dem DOM-Property JAX_FILE_NAME hinterlegt werden können. Dadurch kann z.B. mittel JEP-Formel ein Formel eingestellt werden, die erst später beim Erzeugen des Print-Links evaluiert wird. 

setApplicationProperty("JAX_FILE_NAME","getNLS(\"fileName_FamiliennachzugA2\") + \"_\" + pid + \".pdf\"")

Referenzierte Tickets: JFB-1941JAXINT-1035

Damit die ausgegebene PDF-Datei bei unterschiedlichen Formularsprachen einen entsprechende Namen erhalten kann muss folgendes erstellt werden.

Sprachdatei

Für jede Sprache muss eine generel_[Sprache].nls existieren, die den entsprechenden fileName_[Formularname] mit einem entsprechenden Dateinamen. 
z.B.

  • general_de.nls
    • fileName_GesuchAuslaenderbewilligungA1=GesuchAuslaenderbewilligungA1

  • general_it.nls
    • fileName_GesuchAuslaenderbewilligungA1=DomandadipermessoperstranieriA1

Feldkonfiguration

Im Formular muss ein verstecktes Feld erstellt werden, am besten auf der ersten Seite.

Fragetyp

Fragetyp

Sichtbarkeit

Sichtbarkeit

Regel

Regel

Klartext (zum kopieren): setApplicationProperty("JAX_FILE_NAME","getNLS(\"fileName_GesuchAuslaenderbewilligungA1\") + \"_\" + pid + \".pdf\"")


Knowhow Tipps

Wie kann verhindert werden, dass bei nicht vorhandenen Werten eine leere Zeile entsteht?

Mögliche Lösung

Ein Zeilenumbruch nach der Ausgabe, welche einem Punkt Höhe hat, kann das Problem lösen. Dies bedingt, dass eine Abfrage erfolgt, ob ein Wert vorhanden ist.

> ${FORMULA=if(stringLength(node(dievariable)) > 0,node(dievariable),"")}

Direkt nach der } muss der neuer Absatz oder Zeilenumbruch in der Grösse von 1 erfolgen

Beispieldatei (WORD, KTBE SVSA Begleitschreiben)


Verhindern der Ausgabe von falschen Werten 

Verschiedene Felder liefern mit... 

${FORMULA=nodeValue()}

...falsche Werte bzw. die Formatierung wird falsch dargestellt.. z.B. Datumsfelder, Auswahllisten, etc.

Lösung:

Ein Beispiel aus dem Projekt KTGR:
Mit der Funktion... 

${FORMULA=getVarValue()}

...kann dem entgegengewirkt werden.

Abfrage MUSS-Felder im Formular

Wenn im Formular der Status MUSS- oder KANN Feld bestimmt werden muss, kann dies mittels...

IsRequired(node(....)) == true)

..abgefragt werden.

Lösung:

Ein Beispiel aus dem Projekt KTGR: Es wird ermittelt welchen Status das Feld «Strasse» bei Laufzeit aufweist. 
entsprechend wird dann entweder die Strasse aus der Schweizer Adresse oder aus der Ausländeradresse angezeigt.

${FORMULA=if((IsRequired(node(Strasse)) == true), nodeValue(Strasse), nodeValue(auslandsadresseStrasse))}






























































































  • Keine Stichwörter