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.
Im Schritt "Beilagen" kann die Meldeperson die PDF Dateien öffnen (Download) und ausdrucken. Alternativ kann sich die Meldeperson die Beilagen zusenden lassen.
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
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.
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.
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... »
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.
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-1941, JAXINT-1035
Damit die ausgegebene PDF-Datei bei unterschiedlichen Formularsprachen einen entsprechende Namen erhalten kann muss folgendes erstellt werden.
Für jede Sprache muss eine generel_[Sprache].nls existieren, die den entsprechenden fileName_[Formularname] mit einem entsprechenden Dateinamen.
z.B.
fileName_GesuchAuslaenderbewilligungA1=GesuchAuslaenderbewilligungA1
fileName_GesuchAuslaenderbewilligungA1=DomandadipermessoperstranieriA1
Im Formular muss ein verstecktes Feld erstellt werden, am besten auf der ersten Seite.
Klartext (zum kopieren): setApplicationProperty("JAX_FILE_NAME","getNLS(\"fileName_GesuchAuslaenderbewilligungA1\") + \"_\" + pid + \".pdf\"")
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)
Verschiedene Felder liefern mit...
${FORMULA=nodeValue()} |
...falsche Werte bzw. die Formatierung wird falsch dargestellt.. z.B. Datumsfelder, Auswahllisten, etc.
Ein Beispiel aus dem Projekt KTGR:
Mit der Funktion...
${FORMULA=getVarValue()} |
...kann dem entgegengewirkt werden.
Wenn im Formular der Status MUSS- oder KANN Feld bestimmt werden muss, kann dies mittels...
IsRequired(node(....)) == true) |
..abgefragt werden.
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))} |