Erstellen von dynamischen E-Forms

Schriftstücke in CTV werden dynamisch aus einem oder mehreren Textbausteinen zusammengesetzt. Ab TAA 9.00 ist es möglich, diese dynamische Gestaltung von Dokumenten auch für die Erstellung von Formularen zu verwenden. Mit TAA 9.00 gibt es Unterstützung für Text-Eingabe-Felder, Checkboxen (ggf. gruppiert) und Signatur-Felder.

Erfassung von Textbausteinen für E-Forms

Für die Erfassung von Textbausteinen mit Formular- und Signaturfeldern in OpenXML (KnowlEdge/Word) und die Übersetzung in ein PDF-Formular gab es keine passende Lösung. Die in OpenXML zur Verfügung stehenden Steuerelemente werden von PDF-Konvertierer nicht in PDF-Formular-Felder umgewandelt.

Um dennoch PDF-Formular-Felder an den gewünschten Stellen im PDF-Formular zu definieren, werden Rechtecke mit einer bestimmten Farbe verwendet. Als Default-Farbe wird das in Word als Standard zur Verfügung stehende „Lila, Akzent 4“ verwendet. Diese Farbe hat den RGB-Wert: 128,100,162. Es ist aber möglich, über die Registry eine andere Farbe für die Platzhalter für Formularfelder zu definieren.

Neben der (relativen) Position im Dokument müssen weitere Angaben für die PDF-Formular-Felder gemacht werden. Ähnlich wie Platzhalter, die einen Namen haben, über den sie im Pseudocode ansprechbar sind, brauchen auch PDF-Formular-Felder einen Namen. Dieser Namen wird ermittelt, indem bei der Analyse des PDF, welches aus einem Baustein erstellt wird, der vorhandene Text innerhalb des Rechtecks erkannt wird. Eine relativ einfache Methode, um in Word Text zu einem Rechteck hinzuzufügen, ist hier oben abgebildet. Bei kleinen Elementen wie zum Beispiel Checkboxen ist es teilweise schwierig, hier einen Namen einzufügen. Es kann dann einfacher sein, ein Textfeld zu erstellen und dieses über die Markierung für das PDF-Formular-Feld zu verschieben. Hierbei sollte die Schriftart so klein gemacht werden, dass der Text innerhalb des Marker Platz findet. Hierbei ist es kein Problem, wenn die Schriftgröße so klein gewählt wird, dass bei normaler Ansicht die Schrift nicht mehr leserlich ist.

Um die Erfassung von Textbausteinen für E-Forms zu vereinfachen gibt es Unterstützung für Formular-Felder im TeamWiSE.WordCtvAddin.

Erfassung von Formular- und Signaturfeldern mit dem WordCtvAddin

Mit dem WordCtvAddin können einfach Formularfelder im Textbaustein hinzugefügt werden. Am besten markiert man die Stelle, wo das Formularfeld eingefügt werden soll, mit den Cursor und fügt das Formular-Feld hinzu über „Form-Feld hinzufügen“ aus der TAA-Menüleiste: Es erscheint ein Dialog, in dem man den Namen des Form-Felds eingeben kann, und auch gleich auswählen kann, ob es sich um ein Texteingabe- oder Unterschriftsfeld handelt oder um ein kleines Rechteck für eine Checkbox. Der Name des Felds ist jetzt mit meiner kleinen Schriftgröße schon vorbestückt. Wenn man dieses Rechteck in Word selektiert, werden die Angaben zu dem Formular-Feld im TAA-Menü angezeigt: Über die Menüleiste ist es jetzt möglich, die Angaben zum Feld zu ändern. Mit den < und >-Schaltflächen können die Werte mit Schritten von 1 mm angepasst werden. Direkte Eingabe von Werten ist aber auch möglich. Über Form-Feld Einstellungen können die Standardgrößen für Texteingabe- und Checkbox-Felder angepasst werden. Anhand von Registry-Einstellungen können hier Unternehmensstandards festgelegt werden.

Attributierung von PDF-Formular-Felder

Neben Name, Position und Größe brauchen PDF-Formular-Felder weitere Angaben. Sämtliche Felder haben einen Displayname, der verwendet wird, um dem Feld eine Beschreibung zuzuordnen, die in Acrobat angezeigt wird, wenn man sich mit der Maus über einem Feld befindet, und brauchen eine Feld-Typ Angabe.

Typ

Mit der Eigenschaft FieldType an der Platzhalter-Variable ist es möglich, im CTV-Pseudocode zu bestimmen, was für ein Feld anstelle des Rechtecks im Dokument eingefügt werden soll. Mögliche Werte für diese Eigenschaft sind:

  • „Signature“ - für ein Unterschriftsfeld
  • „Text“ - Eingabefeld, wenn FieldType nicht explizit gesetzt ist, ist dies die Vorgabe
  • „Checkbox“ - für eine Checkbox

Anzeigename

Mit der bereits für Platzhalter vorhandenen Eigenschaft „Displayname“ kann der Anzeigename gesetzt werden. Wenn diese Eigenschaft nicht gesetzt ist, wird der Feldname verwendet.

Attributierung von Signatur-Feldern

Beim Signaturfeld werden außer den allgemeinen Eigenschaften keine weiteren Attribute gesetzt. Um ein Signaturfeld in einem OpenXML-Textbaustein zu definieren, wird also ein Rechteck mit der konfigurierten, vordefinierten Farbe festgelegt, und dem Rechteck über seine Text-Eigenschaft ein Namen gegeben:

Durch diese Angabe wird die Platzhaltersammlung des Textbausteins um das Signaturfeld ergänzt, und können die Eigenschaften FieldType und Displayname im Pseudocode bestückt werden:

  fld_Antr_Unterschrift.FieldType = "Signature"
  fld_Antr_Unterschrift.DisplayName = "Unterschrift des Antragsstellers"

Nachdem dann das PDF aus OpenXML erzeugt wurde, wird das Reckteck durch ein PDF-Unterschriftsfeld ersetzt:

Attributierung von Text-Feldern

Zunächst ist die Definition eines Text-Eingabefeldes wie gehabt: Festlegung eines Rechtecks in einer bestimmten Farbe, Setzen des Namens durch die Text-Eigenschaft des Rechtecks, und dabei sicherstellen, dass der gesamte Text sichtbar ist:

je nach gewünschter Darstellung ist es notwendig, im Pseudocode mehrere Eigenschaften zu setzen. Hier ein Beispiel:

  str_VM_Nummer.FieldType = "Text"
  str_VM_Nummer.DisplayName = "Vermittlernummer"
  str_VM_Nummer.FieldFontName = "Arial Narrow"
  str_VM_Nummer.FieldFontSize = 9
  str_VM_Nummer.FieldMaxSize = 10

Und hier das Ergebnis in einem PDF-Formular:

Die oben verwendeten Eigenschaften für Textfelder sind:

FieldFontName: Schriftart

Mit der Eigenschaft FieldFontName kann bestimmt werden, welche Schriftart für ein Textfeld verwendet wird. Die Auswahl der Schriftarten ist hier begrenzt auf die, die in der CTV-Infrastruktur für diesen Zweck bekannt und konfiguriert sind, denn wegen der Erfordernis PDF/A müssen alle in einem PDF-Dokument benutzten Schriftarten in dem PDF Dokument eingebunden werden. Zum Zeitpunkt der PDF/A Erstellung sind die Formularfelder noch nicht vorhanden, sondern nur die Rechtecke als Platzhalter und Markierung. Insofern muss CTV dafür sorgen, dass das PDF/A angereichert wird um solche Schriftarten, die in den Formularfeldern vorkommen (können). Da es keine allgemeine Möglichkeit gibt, on-the-fly eine x-beliebige Schriftart zum PDF/A hinzuzufügen, muss für jeden Font der dazu notwendige Code in CTV konfiguriert und verfügbar sein. Zunächst wird CTV die Schriftart Arial Narrow unterstützen. Weitere Schriftarten können später (nach 9.00) nach Bedarf folgen. Einige Schriftarten stehen gemäß Spezifikation immer in PDF/A zur Verfügung und werden dann auch im Pseudocode grundsätzlich als Schriftartangabe zugelassen werden. Diese in der PDF/A Standard definierten Schriftarten sind:

  • Times (Windows: Times New Roman)
  • Courier (Windows: Courier New)
  • Helvetica (Windows: Arial)
  • Symbol
  • Zapf Dingbats

Ab TAA 9.07 gibt es auch noch diese weitere Schriftarten:

  • Times-Roman (Windows: Times New Roman)
  • Times-Bold (Windows: Times New Roman Bold)
  • Times-Italic
  • Times-BoldItalic
  • Courier-Bold
  • Courier-Oblique
  • Courier-BoldOblique
  • Helvetica-Bold
  • Helvetica-Oblique
  • Helvetica-BoldOblique

Auf Schriftstück-Ebene kann einen Standard für diesen Wert festgelegt werden.

FieldFontSize: Schriftgröße

Neben der Schriftart kann mittels FieldFontSize bestimmt werden, welche Schriftgröße im Textfeld verwendet wird.

Auf Schriftstück-Ebene kann einen Standard für diesen Wert festgelegt werden.

FieldMaxSize: Anzahl Zeichen

Für ein Textfeld kann optional mit FieldMaxSize die maximale Anzahl Zeichen, die in dem Textfeld erlaubt sind, gesetzt werden.

Value: Wertzuweisung

Im CTV-Pseudocode wird es ermöglicht, ein Textfeld mit einem Wert vorzubestücken. Dies wird wie bei bestehenden Platzhalter über die Value Eigenschaft gemacht.

FieldReadonly: Feld nicht änderbar

Gegebenenfalls möchte man nicht, dass ein Textfeld änderbar ist. Dazu steht im CTV-Pseudocode die Eigenschaft FieldReadonly zur Verfügung.

FieldMultiline: Feld unterstützt mehrere Zeilen

Wenn in einem Textfeld mehrere Zeilen verwendet werden sollen, kann man im CTV-Pseudocode die Eigenschaft FieldMultiline angeben.

FieldAllowScroll: Bildlauf erlauben

In einem PDF-Formular kann angegeben werden, ob mehr eingegeben werden darf als Platz in einem Feld zur Verfügung steht. Um dies zu erlauben, kann die Eigenschaft FieldAllowScroll im CTV-Pseudocode verwendet werden. Diese hat nur eine Auswirkung bei Feldern mit mehreren Zeilen.

FieldLineSpacing: Zeilenabstand

Wenn in einem Eingabefeld für Text mehrere Zeilen erlaubt sind (FieldIsMultiline), dann ist der Standard Zeilenabstand 115,3%. Dies ist der Wert, der auch in Acrobat für die gängigen Schriftarten verwendet wird. Mit dieser Eigenschaft ist es möglich, einen anderen Wert zu setzen. Der Default von 1.153 wird aber in fast allen Fälle funktionieren, und es sollte nur selten notwendig sein, diesen Wert anzupassen.

  str_VT_Beruf.FieldType = "Text"
  str_VT_Beruf.Titel = "Ausgeübter Beruf"
  str_VT_Beruf.FieldMultiline = true
  str_VT_Beruf.FieldLineSpacing = 1.153

FieldUseCombSize: Text Verteilung (Kamm Funktion)

Für Felder mit einer festen Länge kann es hilfreich sein, die sogenannte „Kamm“-Funktion zu verwenden. Der Text wird gleichmäßig über das Feld verteilt. Oft wird dies für die Eingabe von zum Beispiel eine IBAN-, Kunden- oder Vertragsnummer verwendet: FieldUseCombSize

  Text_Comb.FieldType = "Text"
  Text_Comb.Titel = "Kamm-Eingabe-Feld"
  Text_Comb.Value = "ABC123"
  Text_Comb.FieldUseCombSize = 14

FieldVisible: Felder ausblenden

Is kann Fachlich so sein das bei bestimmte Formulare nicht alle im Baustein vorhandene Eingabefelder relevant sind. Ab TAA 9.09 ist es möglich um mittels die Eigenschaft FieldVisible ein Eingabefeld auszublenden. Default ist ein Feld aber sichtbar.

  Text_Hidden.FieldType = "Text"
  Text_Hidden.Titel = "Verborgenes-Eingabe-Feld"
  Text_Hidden.Value = "nicht sichtbar"
  Text_Hidden.FieldVisible = false

FieldAlignment: Text Ausrichtung

Der Text innerhalb eines Eingabefelds kann mit dieser Eigenschaft links, zentriert oder rechts ausgerichtet werden. Wenn nichts angegeben wird, wird der Text links ausgerichtet. Mögliche Werte sind „AlignLeft“, „AlignCenter“ und „AlignRight“.

  str_VT_Beruf.FieldType = "Text"
  str_VT_Beruf.Titel = "Ausgeübter Beruf"
  str_VT_Beruf.FieldAlignment = AlignCenter

Attributierung von Checkboxen

Auch eine Checkbox wird zunächst in OpenXML als Rechteck mit einem Namen festgelegt: Hier stößt man leider auf die Begrenzung, das nur die Informationen, die im Ergebnisdokument angezeigt werden, nach der Konvertierung von OpenXML nach PDF zur Verfügung stehen. ES kann also nur der Text, der innerhalb des kleinen Rechtecks für die Checkbox vorhanden ist, als eindeutiges Merkmal genutzt werden, um dieses Reckteck zu Identifizieren. Bei einer vierfachen Vergrößerung kann man erkennen, welche Feldnamen vergeben wurden: Im Pseudocode werden dann wiederum die einzelnen für Checkboxen notwendigen Eigenschaften versorgt:

  Opt_A.FieldType = "Checkbox"
  Opt_A.FieldGroup = "opt_Auswahl"
  Opt_A.FieldValueChecked = "A"
  Opt_A.DisplayName = "Option A"
  Opt_B.FieldType = "Checkbox"
  Opt_B.FieldGroup = "opt_Auswahl"
  Opt_B.FieldValueChecked = "B"
  Opt_B.DisplayName = "Option B"
  
  Opt_A.FieldChecked = true

Und auch hier das Ergebnis in PDF:

Vorselektiert: FieldChecked

Über die Eigenschaft FieldChecked kann festgelegt werden, ob die Checkbox als vorselektiert erzeugt werden soll.

Gruppenzugehörigkeit: FieldGroup

Bei der Checkbox gibt es einen Unterschied zwischen einer Einzel-Checkbox oder eine Gruppe von Checkboxen. Bei einer Gruppe von Checkboxen kann nur eine Checkbox in diese Gruppe gesetzt sein. Mit der Eigenschaft FieldGroup wird die Checkbox als Bestandteil einer Checkboxgruppe festgelegt, und ist insofern eigentlich eher ein Radiobutton.

Wert bei Auswahl: FieldValueChecked

Wenn das von dritter Seite ausgefüllte und zurückgeschickte PDF ohne CTV Hilfsmittel ausgewertet werden soll (was zumindest mit TAA 9.00 der Fall sein soll), besteht der Wunsch, die markierten Checkboxen mit festgelegten Werten prüfen zu können. In der PDF-Spezifikation wird dringend empfohlen, für eine nicht ausgewählte Checkbox den Wert Off zu verwenden. Welcher Wert für die ausgewählte Checkbox verwendet werden soll, wird über die Eigenschaft FieldValueChecked festgelegt. Wenn hier keine Festlegung gemacht wird, ist der Wert On. Eine Eigenschaft ValueWhenUnchecked wird wegen der PDF-Konventionen als nicht notwendig erachtet, und ist immer Off.

Standard Feldeigenschaften

Vor allem bei Text-Feldern wird es meistens so sein, dass Schriftart und Schriftgröße für das gesamte Schriftstück sich nicht ändern. Deshalb ist es ab TAA 9.02 möglich, beim Schriftstück für diese beide Eigenschaften einen Standard zu setzen. Dieser Standard-Wert wird übernommen, wenn kein Wert beim Text-Feld angegeben wird.

  ctvSstk.DefaultFormfieldFontname = "Arial Narrow"
  ctvSstk.DefaultFormfieldFontsize = 10

Laufzeit

Wenn man zur Laufzeit das PDF von einem E-Formular-Dokument abfragt (bei der Anzeige im PDF-Ansicht oder beim Speichern vom PDF), wird das OpenXML-Dokument wie gewohnt zusammengebaut und mit dem eingestellten PDF-Konvertierer in das PDF-Format umgewandelt. Als weiteren Schritt werden dann die Markierungen im PDF ersetzt durch die mittels Pseudocode weiter attributierten Formular-Felder.

ctv:knowledge:eform · Zuletzt geändert: 21.02.2020 09:48

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum