Um in den folgenden Kapiteln den Einsatz der regulären Ausdrücke besser verstehen und nachvollziehen zu können, ist es nötig, etwas genauer darüber Bescheid zu wissen, wie print2forms beim Durchsuchen des Druckdatenstroms vorgeht.
Der print2forms-Client und das -Gateway verfügen über einen Programmteil, der die empfangenen Druckdaten, die ja immer PCL-Daten sind (auch im Falle der Nutzung von Etikettendruckern!), in Steuersequenzen und Textbestandteile zerlegt. Im einfachsten Fall entsprechen die Textbestandteile den vom Anwendungsprogramm erzeugten Zeilen.
Im Zeitalter von Desktop-Publishing und typographischen Schriften haben aber viele Dokumente keine feste Zeilen-/Spaltenstruktur. Sogar die Reihenfolge im Druckdatenstrom muß nicht der vom Ausdruck her suggerierten Reihenfolge entsprechen.
print2forms analysiert daher alle Steuersequenzen und errechnet daraus eine Position auf dem Papier. Diese errechnete Position wird dann als Bezeichner für das nachfolgende Textfragment verwendet. So ein Bezeichner heist in print2forms 'Feldindex'. Will man jetzt den Inhalt eines bestimmten Textfragments untersuchen, so wird der Feldindex als Referenz verwendet. Der reguläre Ausdruck beschreibt dann, was dort gesucht werden soll.
Feldindizes werden zum Beispiel in Dokumentprozessen verwendet, um durch Analyse der Druckdaten zu entscheiden, welcher Druckprozess angestoßen wird. Innerhalb von Formularen werden Feldindizes verwendet, um zu entscheiden, ob ein bestimmtes untergeordnetes Formular gedruckt werden soll. Ausserdem gibt es in Formularen Felder, mit deren Hilfe Texte, Barcodes oder Bilder gedruckt werden können. Auch hier müssen aus den Nutzdaten Informationen extrahiert und bereitgestellt werden.
Um an die für den Entwurf eines Prozesses oder Formulars notwendigen Feldindizes zu gelangen, erzeugt der Client und das Gateway auf Anforderung eine sogenannte Indexdatei, aus der sich neben anderen Informationen auch alle im Druckdatenstrom gefundenen Textfragmente mit ihren Feldindizes entnehmen lassen.
[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 Feldindex ist eine zehnstellige Hexadezimalzahl, deren erste zwei Stellen die Seitennummer repräsentieren. Die nächsten vier Stellen repräsentieren die vertikale Position, die letzten vier Stellen die horizontale Position. Feldindizes sind damit unabhängig von der Reihenfolge, in der die Daten empfangen werden. Sie verändern sich allerdings, wenn das zu druckende Dokument innerhalb der Anwendung verschoben wird.
Für die vertikale und horizontale Position lassen sich innerhalb des Feldindex sogenannte Wildcards verwenden. Dies wird mit einer Gruppe von jeweils vier Fragezeichen dargestellt, also etwa '01????0000' oder '010000????'.
Abhängig von der Position der Wildcards im Feldindex werden somit alle Textfragmente getestet, die an einer bestimmten horizontalen oder vertikalen Position beginnen. Das entspricht einer Suche in beliebigen Zeilen oder in beliebigen Spalten.
Werden sowohl für die horizontale als auch für die vertikale Position Wildcards angegeben, also '01????????', werden alle Textfragmente gegen den regulären Ausdruck getestet. Dies entspricht einer Suche über die gesamte Seite.
Wenn im Nachfolgenden also von Zeilen oder Textfragmenten geredet wird, die mittels der regulären Ausdrücke untersucht werden sollen, ist immer von so einem Textstück die Rede, das beim Zerlegen der Druckdaten gefunden wurde.