**Eigenschaft:** ==== Index / Bedingung / Tag ==== \\ **Beschreibung:** Bei der **Textauswahl** kann durch die Angabe eines **Index** die Überprüfung eines bestimmten Textes innerhalb der Druckdaten oder über die Angabe des Namens einer **Bedingung** die Überprüfung einer Bedingung des aufrufenden Dokumentenprozesses angefordert werden. Die Druckdaten respektive das Ergebnis einer Bedingung werden gegen einen **Vergleichsmuster** getestet. Der Ausgang dieser Überprüfung bestimmt, ob das nachfolgend definierte Text-, Barcode-, LInien- oder Ressourcen-Feld innerhalb des Formulars gedruckt werden soll oder nicht. {{print2forms:objekte:formular:fldidx.png}} \\ {{print2forms:objekte:formular:fldidx2.png}} Um die verschiedenen Textpassagen innerhalb der Druckdaten zu kennzeichnen, werden vom (p2f)-System sogenannte Feldindizes vergeben. Die Vergabe der Indizes erfolgt in einer speziellen Betriebsart des (p2f)-Clients. Für den Vergabevorgang wird einfach ein Referenzdokument gedruckt. Die vom Client (oder -Gateway) erzeugte Datei enthält unter anderem eine Liste der erkannten Textfelder zusammen mit ihrem Feldindex: [p2f] [Param]1.0;10.1.17.7;01.05.04 11:41:22 [Computer]iseries.spe-gmbh.de [Printer]P2FPRT01 [User]QUSER [Job]QPADEV0001 [File]QSYSPRT [0102580000] 00001/3 [0102D00000] 1704 [01030C0000] Kunde GmbH [0103480000] Z.Hd. Hr. K. Kunde 346-57897 [0103C00000] Kundenstrasse 7 15595 [0103FC0000] D-12345 Kundenstadt [0104380000] Hr. A. Muster [0104B00000] 12.03.2003 [0106180000] 1 L1BL100 Schaltlitze 0,14x100 m St 260 0 260 [0106900000] 2 L1BR500 Schaltlitze 0,14x500 m St 270 0 270 [0107080000] 3 USB2BB3 USB Kabel B/B Stecker St 30 0 30 [Page] [End] Ein Index ist in der Regel eine zehnstellige Hexadezimalzahl, deren erste zwei Stellen die Seitennummer repräsentieren. Im Zusammenhang mit dem Einbinden von Feldern in Formulare muss die angegebene Seitennummer allerdings immer '00' sein, damit das Formular auf beliebigen Seiten verwendet werden kann. Die nächsten vier Stellen repräsentieren die vertikale Position, die letzten vier Stellen die horizontale Position. Sollen nur Druckdaten innerhalb eines bestimmten Bereichs getestet werden, kann für die horizontale und vertikale Position auch ein Bereich angegeben werden. Ein Bereich wird durch die Angabe einer unteren und einer oberen Grenze gekennzeichnet. Im **Index** wird dies durch eine öffnende eckige Klammer, den Minimalwert, ein Minuszeichen, den Maximalwert und eine schliessende eckige Klammer notiert. Der Minimal- und Maximalwert werden dabei als vierstellige Hexadezimalzahl erwartet. Es ist zulässig, für die horizontale und auch für die vertikale Position gleichzeitig Bereiche anzugeben. Für die vertikale und horizontale Position lassen sich innerhalb des **Index** sogenannte Wildcards verwenden. Dies wird mit einer Gruppe von jeweils vier Fragezeichen dargestellt. Abhängig von der Position der Wildcards im Feldindex werden somit alle Druckdaten getestet, die an einer bestimmten horizontalen oder vertikalen Position beginnen. Werden sowohl für die horizontale als auch für die vertikale Position Wildcards angegeben, werden alle Druckdaten gegen den **Vergleichswert** getestet. Die Notation '**????**' ist im Prinzip lediglich eine Kurzschreibweise für '**[0000-7FFF]**'. Wird statt einer Hexadezimalzahl der Name einer **Bedingung** angegeben, muss dieses Formular von einem Druck- oder Etikettenprozess benutzt werden, der seinerseits von einem Dokumentenprozess aufgerufen wurde. Die hier angesprochenen Bedingungen sind die, die in den **Bearbeitungsschritten** die Ausführung des jeweiligen Schrittes in Form einer **Bedingungsliste** konditionieren. Zuerst wird im aktuellen Bearbeitungsschritt nach einer Bedingung mit dem angegebenen Namen gesucht. Ist diese Suche nicht erfolgreich, werden beginnend mit dem ersten Bearbeitungsschritt alle Bedingungen innerhalb des Dokumentenprozesses geprüft. Durch dieses zweistufige Suchen genügt es, wenn eine Bedingung in einem der Bearbeitungsschritte ausgewertet wird - die Bedingung muss nicht unnötig wiederholt werden. \\ \\ {{print2forms:objekte:formular:fldidx3.png}} Wird der Name eines XML-Tags angegeben, muß dieser Name in spitzen Klammern (Kleiner- und Größer-Zeichen) notiert werden. Für die Auswertung des Inhalts des Tags wird intern ein regulärer Ausdruck erzeugt, der aus dem öffnenden Tag, dem Vergleichswert und dem schliessenden Tag besteht. Dadurch ist es möglich, den Tag-Inhalt über den Vergleichswert genauer zu spezifizieren und gegebenenfalls einzuschränken. \\ **Hinweise:** * Die Textpassagen werden aufgrund der sie umgebenden Steuersequenzen erkannt. Deshalb kann es vorkommen, das Worte und Sätze auseinandergerissen werden, wenn innerhalb der Worte/Sätze Steuersequenzen, zum Beispiel zum Repositionieren oder zum Umschalten des Zeichensatzes, verwendet werden. Dies ist insbesondere bei der Verwendung von Windows-Programmen oft der Fall. In diesen Fällen hilft es, den Druckertreiber so umzukonfigurieren, dass er Druckerschriften anstatt der geladenen Windows-Schriften verwendet. Die ständigen Repositionierungen unterbleiben dann. * Ein weiteres Problem mit Windows-Programmen ist, dass Texte für Menschen nicht mehr lesbar sind, weil der Druckertreiber optimiert und die Zeichensätze umkodiert hat. Diese Umkodierung wechselt von Dokument zu Dokument, abhängig vom Dokumentinhalt. Eine maschinelle Auswertung von Feldinhalten ist damit unmöglich. Auch in diesem Fall hilft es, den Druckertreiber so umzukonfigurieren, dass er Druckerschriften anstatt der geladenen Windows-Schriften verwendet. * Wird unter **Index** und **Vergleichsmuster** nichts eingegeben, gilt die Bedingung für das Drucken des Feldes immer als erfüllt. * Beim (p2f)-Gateway wird die Datei mit den Indizes immer erzeugt, da sie dort Bestandteil der Kontrolldatei sind, die zur Steuerung der dem Gateway nachgeschalteten Prozesse dient. Die Datei befindet sich in dem bei der Konfiguration des Gateways angegebenen Spool-Verzeichnis. * Leider existieren Anwendungen, deren Indizes je nach Füllgrad des gedruckten Dokuments variieren. Zum Beispiel kann es vorkommen, dass eine Zahl im rechten Teil des Blattes einmal direkt positioniert wird, und ein andermal, wenn eine weitere Zahl links von ihr auftaucht, mit dieser zweiten Zahl zusammen in einem Textfragment erkannt wird. In diesen Fällen muss (p2f) Anweisungen für beide Fälle bekommen. * Bei der Suche nach Bedingungen in den Dokumentprozessen über den Namen wird nur das erste Auftreten des Namens gefunden. Eventuell mehrfach verwendete Namen werden nur dann erkannt, wenn sich dieser Name im aktuellen Bearbeitungsschritt befindet - insofern kann man auch gezielt Bedingungen 'überdecken'. Bedingungen innerhalb von Dokumentprozessen, die keinen Namen haben, können hier nicht getestet werden. * Der eigentliche Test der Bedingung erfolgt durch Testen des Vergleichswerts gegen das erste extrahierte Textfragment der Dokumentenprozessbedingung. Von daher muss im Vergleichsmuster der Bedingung im Dokumentprozess immer ein Text durch Klammerung extrahiert werden. Wurden mehrere Textfragmente extrahiert, oder wurde ein Textfragment mehrfach extrahiert, können diese weiteren Fundstellen hier zur Zeit nicht getestet werden. \\