CIB jView form technischer Leitfaden
Sitio: | CIB eLearning |
Curso: | CIB jView form |
Libro: | CIB jView form technischer Leitfaden |
Imprimido por: | Invitado |
Día: | Friday, 11 de April de 2025, 21:58 |
Tabla de contenidos
- 1. Lieferumfang
- 2. Einführung
- 3. Ergonomische Anforderungen an CIB jView&form
- 4. Unterstützte Formularfeldtypen
- 5. Dokument mit Formularfeldern vorbereiten
- 6. Schneller Einstieg: Einbindung von JView&form&sign in eine Java Swing-Applikation
- 7. Schneller Einstieg: Dynamische Anbindung an die Formularkomponente JView&form
1. Lieferumfang
Komponente |
Softwareumfang |
CIB jView&form |
Form ist in CIB jView integriert (als Package) und kann nicht als Standalone Applikation gestartet werden. |
CIB jView&form für Windows
Zusätzlich zu den im Technischen Leitfaden für CIB jView beschriebenen Komponenten enthält jView&form für Windows keine weiteren Komponenten.
CIB jView&form für Linux
Zusätzlich zu den im Technischen Leitfaden für CIB jView beschriebenen Komponenten enthält jView&form für Linux keine weiteren Komponenten.
2. Einführung
Die vorliegende technische Dokumentation gibt einen Überblick über die Konfigurations- und Einsatzmöglichkeiten nebst Codebeispielen für einen "schnellen Einstieg" in die Thematik. Dieses Kapitel beschäftigt sich dabei mit einem Überblick über die Funktionalitäten und Benutzeroberfläche des Programms.
Elektronische Formulare sind eine unverzichtbare Grundlage
für effiziente Verwaltungsabläufe.
Ein optimaler Ablauf erfordert aber nicht nur, diese hausintern im Rahmen von Unternehmens
spezifischen Applikationen bearbeiten zu können, sondern auch die Einbindung
der Kunden ohne Medienbruch.
Viele Kunden lernen den Komfort der Nutzung elektronischer Formulare in Ihrer heimischen Umgebung als zusätzlichen Service schätzen.
Mit CIB jView&form können Sie neben Ihren hausinternen Abläufen auch den Arbeitsplatz Ihrer Kunden voll in Ihre Geschäftsprozesse einbinden.
Cib jView&form - Allgemein
CIB jView&form ist eine Erweiterung des von der CIB software GmbH entwickelten Dokument-Viewers „CIB jView“. Diese Erweiterung schafft die Möglichkeit, Formularfelder in PDF- und RTF-Dokumenten zu bearbeiten und die geänderten Formulare auszudrucken oder zu speichern.
Das bisherige Seitenvorschaumodul CIB jView wird um diese Funktionalität ergänzt:
- Anzeige und Hervorhebung der Formularfelder
- Vorbelegung von Formularfeldern
- Interaktives Ausfüllen und Ändern der Formularfelder
- Drucken des Formulardokuments einschließlich der Änderungen
- Speichern des bearbeiteten Formulardokuments
Für Entwickler stehen Schnittstellen zur optimalen Einbindung in Ihre Anwendungen und Geschäftsprozesse und zur Vor- und Nachbearbeitung der (Daten-)Ergebnisse zur Verfügung.
CIB unterstützt mit CIB jView&form die spezifizierten*) Formularfelder der Dokumentformate:
- PDF-Formulare (Adobe Acrobat )
RTF-Formulare (Microsoft Office)
*) Folgende Formularfeldtypen werden derzeit noch nicht unterstützt:
- List, PushButton
3. Ergonomische Anforderungen an CIB jView&form
Für die interaktive Nutzung von Formularen im PDF- oder RTF-Format bietet CIB jView&form folgendes Benutzerverhalten:
- Dynamisches Erkennen von Formularfeldern in PDF und RTF Dokumenten
- Sichtbares Hervorheben der Formularfelder. Dazu stehen dem Anwender spezielle Eigenschaften (=Properties) für die Farbgebung der aktiven und inaktiven Formularfelder zur Verfügung.
- Optionales Umschalten in den Formulareditiermodus per Mausdoppelklick auf den Formularfeldern und per Toolbarbutton bzw. Menüfunktion.
- Navigation durch das Formular mit der Tabulatortaste und Mausbedienung
- (Zwischen-)Speichern von (teil-)ausgefüllten Formularen in die konfigurierten Zielformate
- Ausdrucken von ausgefüllten Formularen (auch auf Vordrucke)
- Nacherfassung von Formulardaten ermöglichen
- Unterstützung von Feldplausibilitäten (Ausbaustufe 1.1)
- Unterstützung von feldübergreifenden Formular-Events (Ausbaustufe)
4. Unterstützte Formularfeldtypen
Formularfelder sind elementarer Bestandteil eines elektronischen Formulars. Sie steuern die Interaktion mit dem Nutzer. CIB jView&form unterstützt die nachfolgend aufgelisteten Formularfeldtypen, die je nach Art der erforderlichen Daten zweckmäßig zum Einsatz kommen können. Bitte beachten Sie, dass nicht jedes unterstützte Dateiformat alle Formularfeldtypen anbietet.
Bildschirmelement |
Feldtyp |
Wertebereich |
Format |
|
CheckBox |
Es können zwei Zustände dargestellt werden: aktiviert und deaktiviert Der aktivierte Zustand kann über Häkchen, Kreuz, Karo, Kreis, Stern und Quadrat sichtbar gemacht werden. |
PDF/RTF |
|
RadioButton / Optionsfeld |
Mit Optionsfeldern können zwei Zustände abgebildet werden: aktiviert und deaktiviert. Man kann Optionsfelder zu Gruppen zusammenfassen, in der dann nur ein Feld den Zustand aktiv haben kann. Es ist im Gegensatz zu Kontrollkästchen immer genau ein Feld in der Gruppe aktiv. Die optische Erscheinung kann sehr variabel sein, es sind z.B. auch Kästchenformen möglich. |
|
|
Textfeld einzeilig / mehrzeilig |
Dient zur Eingabe von freiem Inhalt. Die Eingabelänge kann i.d.R. begrenzt werden. |
|
|
Unterschriftenfeld / Signaturfeld |
Dient zur Eingabe einer elektronischen Unterschrift über eine entsprechende Hardware (Pad, Tablet PC). Siehe gesonderte Dokumentation zu "CIB jView&sign" |
|
Bildschirmelement |
Feldtyp |
Wertebereich |
Format |
|
ComboBoxen |
Ermöglicht dem Benutzer eine Auswahl aus vorgegebenen Werten in einem Feld. |
PDF/RTF |
|
ComboBox / Kombinationsfeld mit eigener Eingabe |
In Entwicklung: Ermöglicht dem Benutzer eine Auswahl aus vorgegebenen Werten in einem Feld. Gleichzeitig ist auch die Eingabe eines anderen Eintrages möglich. |
|
|
Listboxen / Listenfeld mit einfacher Auswahl |
Hat eine ähnliche Funktion wie das Kombinationsfeld. Es kann jedoch kein eigener Eintrag gesetzt werden, sondern nur ein Eintrag aus der angebotenen Menge ausgewählt werden. |
|
|
Listboxen / Listenfeld mit mehrfacher Auswahl |
Es können mehrere der angebotenen Listeneinträge ausgewählt werden und erscheinen später im Formular. |
|
5. Dokument mit Formularfeldern vorbereiten
Für die Erstellung der PDF- und RTF-Formulare, die von CIB jView&form unterstützt werden, gibt es verschiedene Werkzeuge von unterschiedlichen Anbietern. Es werden an dieser Stelle gängige Werkzeuge für das jeweilige Dateiformat (RTF und PDF) und die CIB eigenen Produkte CIB pdf brewer und die CIB format/pdf beispielhaft genannt:
- Das Produkt Adobe Acrobat von Adobe
- Das Produkt Microsoft Word aus der Microsoft Office Palette
- Der CIB pdf brewer, über den man aus Microsoft Word direkt ein PDF-Formular generieren kann
- CIB format/pdf als Komponente zum direkten Umwandeln von RTF nach PDF Dokumenten (inkl. Formularfeldern)
5.1. PDF-Formular
AllgemeinFeldanweisungen aus MS-Office in PDF Formularfelder umwandeln
PDF-Formular aus MS-Office über den CIB pdf brewer
PDF-Formular aus RTF Dateien über das CIB format/pdf Modul
Allgemein
Das PDF ist seit seiner Einführung in den 90er Jahren aufgrund seiner plattformübergreifenden, universellen Einsatzmöglichkeiten ein inzwischen weit verbreitetes Dateiformat, das in viele Bereiche vorgedrungen ist. Formulare, die online zur Verfügung gestellt werden oder für interne Zwecke verwendet werden, liegen sehr häufig als PDF vor.
Ein nicht unerheblicher Vorteil z. B. in Bezug auf die Archivierung bildet dabei auch die kleine Dateigröße, die das PDF gegenüber vielen anderen Office-Formaten hat.
Ein Nachteil - aus Sicht der dynamischen Dokumentaufbereitung - ist die geringe Dynamik, die das PDF-Dateiformat in Bezug auf variabel lange Textpassagen bilden kann. Das ist mit ein Grund, warum CIB jView&form neben der direkten PDF-Unterstützung auch den Weg über RTF-Formulare und z. B. eine anschließende Konvertierung nach PDF ermöglicht. Hierzu ist die Property „form.Enabled“ zu aktivieren.
PDF-Formular mit Acrobat erzeugen
Bitte nutzen Sie dazu die von Adobe bereitgestellte Benutzerdokumentation für den Adobe Acrobat für das direkte Erstellen eines PDF-Formulars.
PDF-Formular aus MS-Office Dokumenten erzeugen
Man kann auch das MS-Office Textsystem nutzen und aus den dort verfügbaren Feldanweisungen ein Formular designen und unter Nutzung verschiedener Alternativen der CIB Module daraus ein PDF Formular erzeugen.
Feldanweisungen aus MS-Office in PDF Formularfelder umwandeln
Die nachfolgende Aufstellung gibt einen Überblick, welche MS-Office Feldanweisungen für die Gestaltung eines PDF-Formulars genutzt werden können.
– Dies sind zum einen alle unter MS-Office verfügbaren Formularfelder.
– Zusätzlich gibt es noch die Möglichkeit, die Variablenplatzhalter von Word (REF, MERGEFIELD/SERIENDRUCK) in Formularfelder konvertieren zu lassen. Dafür sind zusätzliche Schalterkommandos eingeführt worden, die eine spezielle Umsetzung gezielter steuern lassen.
– Die CIB workbench (=MS-Office AddIn) ist ein ideales Hilfsmittel zur interaktiven Erfassung dieser Feldattribute (siehe CIB workbench Anwenderhandbuch).
REF / MERGEFIELD Feldanweisung mit
Es gibt nun einen neuen Feldschalter, der XML/XHTML und CSS konform genutzt werden soll. Er ermöglicht eine variablere Spezifikation der Feldeigenschaften eines gewünschten Formularfeldes im Zielformat.
Der Schalter sieht wie folgt aus:
\* <cib-formfield type="" value="" style="" ... />
Details zu den Attributen und Werten des <cib-formfield>-Schalters entnehmen Sie bitte den Schulungsunterlagen „Dynamische Dokumente - Band 1 – Grundlagen“
MS-Office Formularfeldanweisungen
MS-Office Feldanweisung |
Bemerkung |
{ FORMTEXT } |
Wird in Texteingabefeld umgewandelt. Es kann von CIB merge keine Vorbelegung eingemischt werden. |
{ FORMCHECKBOX } |
Wird in eine Checkbox(Ankreuzfeld) umgewandelt |
{ FORMDROPDOWN } |
Wird in ein Dropdownmenü umgewandelt |
Mehrzeilige Formularfelder
Eine gesonderte Ausnahme innerhalb der Formularfelder bilden mehrzeilige Textfelder:
{ FORMTEXT \* CIB_RECBEGIN } <Text und/oder Zeilenschaltungen> { FORMTEXT \* CIB_RECEND }
Details zu diesen mehrzeiligen Textfeldern entnehmen Sie bitte den Schulungsunterlagen „Dynamische Dokumente - Band 1 – Grundlagen“
DF-Formular aus MS-Office über den CIB pdf brewer
Der CIB pdf brewer ist ein für alle Windows Anwendungen tauglicher PDF Drucker. Er verfügt in einer MS-Office Umgebung über ein zusätzliches AddIn, mit dem Sie bequem aus MS-Office heraus PDF-Formulare erstellen können. Mit der Installation des CIB pdf brewer erhalten Sie im MS-Office eine zusätzliche Symbolleiste.
PDF-Formular aus RTF Dateien über das CIB format/pdf Modul
Die CIB format/pdf Komponente, ist ein Modul mit dem direkt RTF Dateien in PDF Dateien konvertieren kann. Über die Property „ShowFormfields“ kann man das Konvertieren von Formularfeldern aktivieren. Alle Details zu dieser Konvertierungsmöglichkeit entnehmen Sie bitte dem gesonderten Technischen Leitfaden zu CIB format/output.
5.2. RTF-Formular
Das RTF wurde von Microsoft in den 80ziger Jahren als allgemeines Format zum Austausch von Textdokumenten definiert. In Microsoft-Produkten wird das RTF-Dateiformat seit vielen Jahren auf breiter Front unterstützt. So ist es z.B. auch schon sehr lange als Austauschformat für die Windows-Zwischenablage im Einsatz. Die Spezifikation ist vollständig offen gelegt.
Microsoft Word unterstützt RTF schon seit DOS Version 5.0. Seit der Einführung von Windows und Word für Windows gibt es nun die Möglichkeit, Formularfelder in Word-Dokumenten zu hinterlegen und Word über spezielle Schutzmechanismen auch so zu starten, dass nur solche Felder zu beschreiben sind.
CIB jView&form unterstützt auch die direkte Formularverarbeitung im RTF-Dateiformat ohne dass vorher ein PDF Dokument daraus erzeugt wurde. Hierzu ist die Property „rtfForm.Enabled“ zu aktivieren.
MS-Office bietet für Formularfelder die folgenden Feldtypen an:
- Textfelder (FORMTEXT)
- Kontrollkästchen (FORMCHECKBOX)
- Dropdown-Formularfeld (FORMDROPDOWN)
Von den CIB Modulen wird nur das Kontrollkästchen unterstützt.
5.3. Die Programmoberfläche
Nachdem das Programm gestartet wurde, öffnet sich das Hauptfenster der Anwendung. Nach dem Öffnen eines Formulardokuments können die Formularfelder ausgefüllt werden. Falls die Formularfelder nicht standardmäßig aktiviert sind, können sie über den Toolbar-Button „Formularfelder aktivieren“ zur Bearbeitung freigeschaltet werden. Das Ausfüllen der Formularfelder ist in dieser Abbildung dargestellt.
Die einzelnen Menüpunkte sind:
- Felder markieren: Checkbox um die Markierung der Felder zu de/aktivieren.
- Markierungsfarbe: Anzeige der aktuellen Markierungsfarbe; durch Klick auf den Menüeintrag öffnet sich ein Farbdialog, um die Markierungsfarbe zu ändern.
- Transparenz: Anzeige des aktuellen Transparenzgrads der Markierungsfarbe (0 – 255); durch Bewegen des Schiebereglers kann der Transparenzgrad geändert werden.
Die Toolbar des Programms enthält unter anderen einen Button, der für das Form-Modul wichtig ist:
Sind die Formularfelder aktiviert, werden sie mit der Markierungsfarbe hinterlegt angezeigt und können ausgefüllt oder der eventuell vorhandene Inhalt geändert werden.
Sind die Formularfelder deaktiviert, werden sie ohne Markierungsfarbe angezeigt und können nicht geändert werden.
|
|
5.4. Konfiguration durch Properties
Allgemeine Properties
Mit den folgenden Properties können generelle Einstellungen für die Applikation vorgenommen werden.
Property-Bezeichnung |
Property-Text |
Typ |
Default |
PROPERTY_FORM_ENABLED |
form.Enabled |
Boolean |
False |
Diese Property legt fest, ob die Formular-Komponente aktiviert oder deaktiviert ist. TRUE: In der Menüleiste erscheint das Menü „Formular“ und in der Toolbarleiste erscheint der Button „Formularfelder de/aktivieren”. Das Formular kann bearbeitet werden, wenn die Formularfelder aktiviert sind. FALSE: Das Menü „Formular“ und der Toolbar-Button „Formularfelder de/aktivieren” wird nicht angeboten. Das Formular kann nicht bearbeitet werden. |
Property-Bezeichnung |
Property-Text |
Typ |
Default |
PROPERTY_RTF_FORM_ENABLED |
rtfForm.Enabled |
Boolean |
False |
Diese Property legt fest, ob die Formular-Komponente für RTF-Formulare aktiviert oder deaktiviert ist. TRUE: RTF-Formulare können bearbeitet werden. Derzeit werden nur Checkboxen in RTF-Formularen unterstützt. FALSE: RTF-Formulare können nicht bearbeitet werden. |
Property-Bezeichnung |
Property-Text |
Typ |
Default |
PROPERTY_FORM_MENU_ENABLED |
formmenu.Enabled |
Boolean |
True |
Diese Property legt fest, ob das Menü „Formular“ in der Menüleiste angezeigt wird oder nicht. TRUE: In der Menüleiste erscheint das Menü „Formular“. FALSE: In der Menüleiste wird das Menü „Formular“ nicht angezeigt. |
Property-Bezeichnung |
Property-Text |
Typ |
Default |
PROPERTY_DEFAULT_FORM_HIGHLIGHTING_ENABLED |
defaultformfieldhighlighting.Enabled |
Boolean |
True |
Diese Property legt fest, ob die Formularfeldmarkierung beim Start aktiviert ist oder nicht. TRUE: Die Formularfeldmarkierung ist beim Start aktiviert. FALSE: Die Formularfeldmarkierung ist beim Start nicht aktiviert. |
Property-Bezeichnung |
Property-Text |
Typ |
Default |
PROPERTY_DEFAULT_FORM_HIGHLIGHTING_COLOR |
formfielddefaultcolor |
Integer |
7 |
Diese Property legt die Standardfarbe der Formularfeldmarkierung
fest. 1 = rot Default: 7 = blau |
Property-Bezeichnung |
Property-Text |
Typ |
Default |
PROPERTY_DEFAULT_FORM_HIGHLIGHTING_COLOR_TRANSPARENCY |
defaultformhighlightingcolortransparency |
Integer |
100 |
Diese Property legt die Standardtransparenz der
Formularfeldmarkierung fest. Default: 100 |
Property-Bezeichnung |
Property-Text |
Typ |
Default |
PROPERTY_FORM_SIGNED_LOCK_ENABLED |
formSignedLock.Enabled |
Boolean |
True |
Diese Property legt fest, ob das Ausfüllen der Formularfelder gesperrt wird, wenn in einem Formular mindestens ein Signaturfeld unterschrieben ist. TRUE: Wenn in einem Formular mindestens ein Signaturfeld unterschrieben ist, wird das Ausfüllen der Formularfelder gesperrt und es erscheint eine Hinweismeldung. FALSE: Das Ausfüllen der Formularfelder wird nicht gesperrt, auch wenn in einem Formular mindestens ein Signaturfeld unterschrieben ist. |
Property-Bezeichnung |
Property-Text |
Typ |
Default |
PROPERTY_SIGN_NOT_FILLED_FORM_WARNING |
signNotFilledFormWarning.Enabled |
Boolean |
True |
Diese Property legt fest, ob eine Hinweismeldung erscheint, wenn in einem nicht ausgefüllten Formular ein Signaturfeld unterschrieben wird. TRUE: Wenn in einem nicht ausgefüllten Formular ein Signaturfeld unterschrieben wird, erscheint eine Hinweismeldung, dass danach keine weiteren Formularfelder ausgefüllt werden können. FALSE: Wenn in einem nicht ausgefüllten Formular ein Signaturfeld unterschrieben wird, erscheint keine Hinweismeldung, dass danach keine weiteren Formularfelder ausgefüllt werden können. |
6. Schneller Einstieg: Einbindung von JView&form&sign in eine Java Swing-Applikation
import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.util.List;
import javax.swing.Action; import javax.swing.JFrame; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; import com.cib.comod.jobs.ICibFormatJob; import de.cib.gui.framework.ICibApplication; import de.cib.gui.framework.ICibRecApplication; import de.cib.gui.framework.JCibApplication; import de.cib.gui.util.trace.JCibTrace; import de.cib.view.modules.form.FormFieldCallback; import de.cib.view.modules.form.FormFieldInfo; public class JCibViewFormSignRunner { public static final String TEST_FILENAME = "test_form.pdf"; public static void main(java.lang.String[] args) { // activate / deactivate traces JCibView.enableDebug(true); JCibTrace.setTraceLevel(JCibTrace.LEVEL_INFO); // create a new viewer instance JCibView viewer = new JCibView(); // set license information to the viewer setLicenseInformation(viewer); // set input file (optional) viewer.setProperty(ICibApplication.PROPERTY_INPUTFILE, TEST_FILENAME); // create a new jrec2 instance and set properties initJrec2(viewer); // set programmatically properties to the viewer setViewerProperties(viewer); // set properties for &form setFormProperties(viewer); // set properties for &sign setSignProperties(viewer); // set properties to the viewer given by command line setCommandLineProperties(viewer, args); // create and show GUI createAndShowGUI(viewer); // register FormFieldCallbackTester viewer.setFormFieldCallback(new FormFieldCallbackTester()); } private static void createAndShowGUI(final JCibView viewer) { // create a test jframe to embedd the viewer in it. final JFrame viewerFrame = createViewerFrame(); // connect the test frame to the viewer viewer.setFrame(viewerFrame); viewerFrame.getContentPane().add(viewer, BorderLayout.CENTER); // couple window closing to exit hook of viewer application viewerFrame.setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE); viewerFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { Action t_action = viewer.getActionMap() .get(ICibApplication.ACTION_EXIT); if (t_action != null) t_action.actionPerformed(null); System.exit(0); } }); // here special exit operations can be implemented // which will be executed when the viewer gets closed viewer.setExitHook(new Runnable() { public void run() { // do post processing here viewer.stop(); // unregister FormFieldCallbackTester viewer.setFormFieldCallback(null); } }); // start and run the viewer viewer.load(); viewer.start(); // show frame in which the viewer is embedded SwingUtilities.invokeLater(new Runnable() { public void run() { viewerFrame.setVisible(true); } }); } private static void initJrec2(JCibView viewer) { // create jrec2 instance without starting it JCibApplication t_cibRec = viewer.getRec(false); if (t_cibRec != null) { // embedded jrec2 doesn't need Jrec-Ini file t_cibRec.setProperty(ICibRecApplication. PROPERTY_JREC_INIFILENAME, null); // Activate OK/Cancel icons in JRec toolbar t_cibRec.setProperty(ICibRecApplication. PROPERTY_REC_SHOW_OK_CANCEL_ICON, Boolean.TRUE); // Enable hyphenation t_cibRec.setProperty(ICibRecApplication. PROPERTY_HYPHENATION_ENABLED, Boolean.TRUE); // Set hyphenation dictionary path t_cibRec.setProperty(ICibRecApplication. PROPERTY_HYPHENATION_DICTIONARY_PATH, "./lib/dict/"); // Enable spell checking t_cibRec.setProperty(ICibRecApplication. PROPERTY_SPELLCHECKING_ENABLED, Boolean.TRUE); // Set spell checking dictionary path t_cibRec.setProperty(ICibRecApplication. PROPERTY_SPELLCHECKING_DICTIONARY_PATH, "./lib/dict/"); try { String currentDir = new java.io.File(".") .getCanonicalPath(); currentDir += "/lib"; JCibTrace.info("Current lib directory: " + currentDir); currentDir += "/win32"; t_cibRec.setProperty(ICibRecApplication. PROPERTY_SPELLCHECKING_NATIVE_LIBRARY_PATH, currentDir); t_cibRec.setProperty(ICibRecApplication. PROPERTY_SPELLCHECKING_LANGUAGE, "de_DE"); } catch (IOException e) { e.getMessage(); } } } private static JFrame createViewerFrame() { JFrame res = new JFrame(); res.setTitle("CIB JView&form&sign"); // 75 % of the screen width and height int frameWidth = (int) ((Toolkit.getDefaultToolkit() .getScreenSize().getWidth()) * 0.75); int frameHeight = (int) ((Toolkit.getDefaultToolkit() .getScreenSize().getHeight()) * 0.75); // restore the frame's last position res.setSize(frameWidth, frameHeight); return res; } private static void setLicenseInformation(JCibView viewer) { viewer.setProperty(ICibFormatJob.PROPERTY_LICENSECOMPANY, ""); viewer.setProperty(ICibFormatJob.PROPERTY_LICENSEKEY, ""); } private static void setViewerProperties(JCibView viewer) { viewer.setProperty( ICibApplication.PROPERTY_MENU_ENABLED, Boolean.FALSE); viewer.setProperty( ICibApplication.PROPERTY_DRAG_AND_DROP_ENABLED, Boolean.TRUE); viewer.setProperty( ICibApplication.PROPERTY_SHOWJPRINTDIALOG, Boolean.FALSE); viewer.setProperty( ICibApplication.PROPERTY_THUMBNAILS_ENABLED, Boolean.TRUE); } private static void setFormProperties(JCibView viewer){ viewer.setProperty( ICibApplication.PROPERTY_FORM_ENABLED, Boolean.TRUE); /* * Type: Integer: 1=red, 2=yellow, 3=magenta, 4=cyan, * 5=gray, 6=green, 7=blue, 8=back. * Default: 7 */ viewer.setProperty(ICibApplication. PROPERTY_DEFAULT_FORM_HIGHLIGHTING_COLOR, 6); /* * Type: Integer: 0-255 * Default: 100 */ viewer.setProperty(ICibApplication. PROPERTY_DEFAULT_FORM_HIGHLIGHTING_COLOR_TRANSPARENCY, 75); /* * Type: Boolean * Default: true */ // viewer.setProperty(ICibApplication. // PROPERTY_FORM_SIGNED_LOCK_ENABLED, Boolean.FALSE); } private static void setSignProperties(JCibView viewer){ /* * Type: Boolean * Default: false */ viewer.setProperty(ICibApplication. PROPERTY_SIGN_ENABLED, Boolean.TRUE); /* * Type: Boolean * Default: true */ viewer.setProperty(ICibApplication. PROPERTY_SIGN_FREE_SIGN_ENABLED, Boolean.FALSE); /* * Type: String * Default: "" */ viewer.setProperty(ICibApplication. PROPERTY_SIGN_PAD_PROVIDER, "signotec-signpad"); /* * Type: Boolean * Default: true */ // viewer.setProperty(ICibApplication. // PROPERTY_SIGN_NOT_FILLED_FORM_WARNING, Boolean.FALSE); /* * Type: Integer * Default: 3000 Bytes */ viewer.setProperty(ICibApplication. PROPERTY_SIGN_REQUIRED_SIZE, 1000); // Generate DigSig fields (RTF case) viewer.setProperty("UseDigitalSignatureWidgets", 1); viewer.setProperty("NeedAppearancesSignatureWidgets", 0); } private static void setCommandLineProperties( JCibView viewer, String[] args) { // set properties which were set via command line if (args.length == 0) return; for (int i = 0; i < args.length; i++) { String argument = args[i]; if (argument == null) continue; // ignore tracing, it is set to true by default if (argument.equals("-t")) continue; // a property is set as "-propertyname value" // or as "inputfile" if (argument.startsWith("-")) { viewer.setProperty(argument.substring(1), args[i+1]); i++; } else { viewer.setProperty(ICibApplication. PROPERTY_INPUTFILE, args[i]); } } } }
7. Schneller Einstieg: Dynamische Anbindung an die Formularkomponente JView&form
In CIB JView sind auch Funktionen zur Anbindung an die Formularkomponente JView&form integriert.
Dazu sind Datenstrukturen und Callback-Methoden definiert, die in den folgenden Abschnitten beschrieben werden.
Interface FormFieldInfo zum Austausch von
Informationen über ein Formularfeld
Die Datenstruktur FormFieldInfo dient zum Austausch von Informationen über ein Formularfeld, sie ist im CIB jView (package de.cib.view.modules.form) definiert.
Interface FormFieldInfo (extends FieldInfo):
package de.cib.view.modules.form;
import de.cib.view.modules.FieldInfo;
/**
* Interface representing the form field info for information exchange.
*
* It allows information exchange about a list of form fields e.g. via
* interface FormFieldCallback.
* @see FieldInfo
* @see FormFieldCallback
*/
public interface FormFieldInfo extends FieldInfo {
public Object getContent();
public void setContent(Object content);
public Object getStates();
}
Interface FieldInfo:
package de.cib.view.modules;
/**
* Interface representing the field info.
*
* It allows information exchange about a field.
*
*/
public interface FieldInfo {
public boolean isMandatory();
// Setter for setMandatory - for later use
// public void setMandatory(boolean isMandatory);
public String getType();
public String getName();
public String getTooltip();
public void setTooltip(String tooltip);
public int getCount();
public boolean isLocked();
// Setter for setLocked - for later use
// public void setLocked(boolean isLocked);
}
Interface FormFieldCallback mit Callback-Methoden zur Information über die Anzahl und den Status der Formularfelder sowie ihre Aktualisierung
Zur Information über die Anzahl und den Status der Formularfelder und ihre Aktualisierung wird eine Datenstruktur FormFieldInfo sowie ein Interface FormFieldCallback eingeführt.
Das Interface FormFieldCallback ist eine Erweiterung des Interfaces FieldCallback:
Interface FieldCallback:
package de.cib.view.modules;
/**
* Interface FieldCallback
*
* This interface is used to exchange information about current fields.
*
*/
public interface FieldCallback {
public static final int ON_LOAD = 1;
public static final int ON_SAVE = 2;
public static final int ON_EXIT = 8;
Der Aufrufer muss sich dazu bei der JView-Instanz als Listener anmelden.
Es gibt verschiedene Zeitpunkte, zu denen die Aufrufe des FormFieldCallback an den Listener geschickt werden, was durch den Parameter „eventType“ signalisiert wird:
- ON_LOAD – beim Laden eines Dokuments
- ON_SAVE – beim Speichern eines Dokuments
- ON_EXIT – beim Beenden des Viewers
Welches Dokument geladen oder gespeichert wird, wird im Parameter „fileName“ mitgeteilt.
Das Interface FormFieldCallback ist im CIB jView (package de.cib.view.modules.form) definiert und umfasst folgende Methoden.
Interface FormFieldCallback:
package de.cib.view.modules.form;
import java.util.List;
/**
* Interface FormFieldCallback
*
* This interface is used to exchange information about current form fields.
*
*/
public interface FormFieldCallback extends FieldCallback {
/**
* Notifies about the current number of logical form fields
* @param countFormFields
* @param fileName
* @param eventType
*/
public void
numberOfFormFields(int countFormFields,
String fileName, int
eventType);
/**
* Provides the list of FormFieldInfo for all logical form fields.
* It allows to read and update current values for each form field.
*
* @param formFieldInfoList
* @param fileName
* @param eventType
* @return true if successful otherwise false
*/
public boolean
updateFormFieldInformation(
List<FormFieldInfo>
formFieldInfoList,
String fileName, int
eventType);
Code-Beispiel zum Setzen eines FormFieldCallback Listeners bei der JView-Instanz:
// Definition eines FormFieldCallback Listeners
static class FormFieldCallbackTester
implements FormFieldCallback {
public void numberOfFormFields(int
countFormFields,
String fileName, int
eventType)
{
JCibTrace.info("FormFieldCallback
- numberOfFormFields = "
+
countFormFields + ", fileName = " + fileName
+ ",
eventType = " + eventType);
}
public boolean updateFormFieldInformation(
List<FormFieldInfo>
formFieldInfoList,
String fileName, int
eventType)
{
JCibTrace.info("FormFieldCallback
-
updateFormFieldInformation:
fileName = " + fileName
+ ",
eventType = " + eventType);
// Example how to read and update form field information
if (formFieldInfoList == null)
return false;
if (eventType ==
FormFieldCallback.ON_LOAD) {
int i = 0;
for (FormFieldInfo info : formFieldInfoList) {
i++;
JCibTrace.info("Read
form field " +info.getName()
+
", Type = " + info.getType()
+
", Content = " + info.getContent()
+
", Tooltip = " + info.getTooltip()
+ ", isMandatory = " + info.isMandatory()
+
", isLocked = " + info.isLocked());
info.setTooltip("Tooltip-"
+ info.getName());
boolean
isEvenIndex = (i % 2 == 0);
if ("Text".equals(info.getType())) {
info.setContent("Con-" + i);
// Set each
text field with even index to
//
mandatory, with odd index to optional
info.setMandatory(isEvenIndex);
}
else if ("Check".equals(info.getType())) {
// Deactivate all check boxes for even index
// else activate
last check box of group
if
(isEvenIndex)
info.setContent(0);
else
info.setContent(info.getCount());
}
else if ("Radio".equals(info.getType())) {
// Deactivate radio buttons for even index
// else activate
last radio button of group
if
(isEvenIndex)
info.setContent(0);
else
info.setContent(info.getCount());
}
info.setTooltip("Tooltip-" + info.getName());
JCibTrace.info("Form
field changed: Content = "
+
info.getContent()
+
": Tooltip = " + info.getTooltip()); }
}
else if (eventType == FormFieldCallback.ON_SAVE) {
for (FormFieldInfo info : formFieldInfoList) {
JCibTrace.info("Read
form field " +info.getName()
+
": Type = " + info.getType()
+
": Content = " + info.getContent()
+
", isMandatory = " + info.isMandatory()
+
", isLocked = " + info.isLocked());
}
}
else if (eventType == FormFieldCallback.ON_EXIT) {
for (FormFieldInfo info : formFieldInfoList) {
JCibTrace.info("Read
form field " +info.getName()
+
": Type = " + info.getType()
+
": Content = " + info.getContent()
+
", isMandatory = " + info.isMandatory()
+
", isLocked = " + info.isLocked());
}
}
return true;
}
}
// Beim Start von JView
// Register FormFieldCallback Listener
viewer.setFormFieldCallback(new FormFieldCallbackTester());
...
// Beim Beenden von JView
// do post processing here
viewer.stop();
// Unregister FormFieldCallback Listener
viewer.setFormFieldCallback(null);
...
7.1. Interface FormFieldInfo zum Austausch von Informationen über ein Formularfeld
Die Datenstruktur FormFieldInfo dient zum Austausch von Informationen über ein Formularfeld, sie ist im CIB jView (package de.cib.view.modules.form) definiert.
Interface FormFieldInfo (extends FieldInfo):
package de.cib.view.modules.form;
import de.cib.view.modules.FieldInfo;
/**
* Interface representing the form field info for information exchange.
*
* It allows information exchange about a list of form fields e.g. via
* interface FormFieldCallback.
* @see FieldInfo
* @see FormFieldCallback
*/
public interface FormFieldInfo extends FieldInfo {
public Object getContent();
public void setContent(Object content);
public Object getStates();
}
7.2. Interface FormFieldCallback mit Callback-Methoden zur Information über die Anzahl und den Status der Formularfelder sowie ihre Aktualisierung
Zur Information über die Anzahl und den Status der Formularfelder und ihre Aktualisierung wird eine Datenstruktur FormFieldInfo sowie ein Interface FormFieldCallback eingeführt.
Das Interface FormFieldCallback ist eine Erweiterung des Interfaces FieldCallback:
Interface FieldCallback:
package de.cib.view.modules;
/**
* Interface FieldCallback
*
* This interface is used to exchange information about current fields.
*
*/
public interface FieldCallback {
public static final int ON_LOAD = 1;
public static final int ON_SAVE = 2;
public static final int ON_EXIT = 8;
}