==== Formular Phase 1 ==== Die Aufgabe des Formulars mit dem Namen //sign2forms// ist zum einen die, an den Positionen der Unterschriften die entsprechenden QR-Codes einzudrucken, und zum anderen die, an den Positionen der Unterschriften auch einen Aufruf für ein PCL-Makro mit dem Bild der Unterschrift anzubringen. Für das Verständnis des Formulars ist zunächst ein Blick in die Indexdatei des Druckauftrags notwendig: [p2f]134676745 [Client]3.5.1.5797;A$O4ER.XML [Param]3.0;10.1.17.59 [Time]30.01.18 14:38:43 [Process]N0I4E38.XML [0100F902B6]Kabel GmbH ... [0103DE06A0]Nachweisnummer: [0103DE08AE]0004.3805 [01043F06A0]Auftrag: ... [010B3500C6]Unterschriften: [010BCD0175]Techniker: [010BCD02B1]______________________ [010C430393]S. Muster [010BCD0609]Kunde: [010BCD06FB]______________________ [010C510731].................................... [010F4500D4]Bankverbindung: ... [Page] [End] Für die Bestimmung der Dokumentkennung wird als erstes ein Suchfeld mit dem Namen **//Kennung//** angelegt, welches mit Hilfe eines regulären Ausdrucks die beiden Zifferngruppen aus Zeile //[0103DE08AE]// in einen Puffer aufnimmt. Für den Druck der beiden QR-Codes sorgen die Barcode-Felder //QR-Code Unterschrift Techniker// und //QR-Code Unterschrift Kunde//. Die Positionen der beiden Unterschriften sind anhand der eingedruckten Basislinie für die Unterschriften leicht zu erkennen. Demzufolge werden die beiden Barcode-Felder so konfiguriert, dass sie genau diese beiden Linien suchen, und dann den Barcode relativ zur Fundstelle positionieren. Dies erfolgt mit einem Versatz, weil die QR-Codes links unterhalb der Basislinie der Unterschrift erscheinen sollen. Der Inhalt der Barcodes besteht aus den beiden verketteten Zifferngruppen im Puffer des Suchfeldes //Kennung// gefolgt von einem Buchstaben 't' für die Unterschrift des Technikers, respektive dem Buchstaben 'c' für die Unterschrift des Kunden. {{print2forms:sign2forms:formular1.png}} \\ \\ \\ \\ \\ \\ \\ \\ {{print2forms:sign2forms:formular2.png}} Damit in der Phase 2 die Bilder der Unterschriften an den richtigen Positionen eingesetzt werden können, sind zwei weitere Textfelder mit dem Namen //Makro Unterschrift Techniker// und //Makro Unterschrift Kunde// notwendig. Diese beiden Felder werden an den gleichen Positionen eingedruckt, wie die beiden QR-Codes. Um an diesen Stellen %%PCL-Makros%% aufzurufen, bedient man sich eines stylistisch nicht ganz korrekten Tricks. Der Text der Textfelder enthält die %%PCL-Escape-Sequenz%% zum Aufruf des jeweiligen Makros mit der Nummer 32000 und 32001. Die beiden Makronummern fallen nicht vom Himmel, sondern werden im Skript des Gateways //Phase 2// so festgelegt. Die ungewöhliche Schriftgrösse von 244 Punkten ist notwendig, um ein Clippen der Unterschriften am oberen Rand des Schriftfeldes zu vermeiden. Die 244 ist willkürlich gewählt. Wenn die Unterschriftenfelder im realen Dokumente sehr gross sind, mag es sein, dass hier grössere Werte (maximal 576 Punkte) erforderlich werden. \\ \\ === Hinweise === * Der Unterschied in der Verschiebung der beiden Barcodes ist dadurch bedingt, dass im Beispieldokument tatsächlich der Abstand zwischen Text und Basislinie für die Unterschrift unterschiedlich ist. * Die offensichtliche Abweichung beim horizontalen Versatz der beiden Barcode- und Textfeldern (ca. 6mm) ist leider historisch bedingt. Es handelt sich im Prinzip um die Breite des nicht druckbaren Bereichs am linken Rand des Blattes, der hier noch zugerechnet werden muss. Es ist geplant, dieses Manko in einer nächsten Version von (p2f) für neue Installationen aus der Welt zu schaffen. * Das Einsetzen von %%PCL-Sequenzen%% in den Druckdatenstrom mittels eines Textfeldes ist alles andere als korrekt. In der nächsten Version von (p2f) wird es hierfür eine dedizierte Lösung geben, die ohne die Formulierung von %%PCL-Sequenzen%% auskommt. * Der 'schmutzige Trick' mit den %%PCL-Sequenzen%% kann übrigens nicht verallgemeinert werden, um beliebige Sequenzen einzuschleusen, weil die so eingeschleuste Sequenz nur lokale Auswirkungen innerhalb des vom Textfeld selbst erzeugten Makros hat. Dieses 'Textfeld-Makro' (in dem hier wieder ein Makro aufgerufen wird) wird auch bewusst nur im lokalen Kontext ausgeführt - alle so gemachten Einstellungen (z.B. Zeilenabstand) sind sofort wieder unwirksam! * Werden die QR-Codes mit einer abweichenden Modulweite gedruckt, oder kodieren sie soviel Inhalt, dass sich die Gesamtgrösse des QR-Codes erhöht, ist im //Skript Phase 2// eine Anpassung bezüglich der Code-Grösse notwendig (Parameter //-c294// - entspricht 21 Module á 14 Pixel).