===== Steuerung von Kuvertiermaschinen ===== ==== Fest eingebaute Steuerung einfacher Maschinen ==== Beim Einsatz von Kuvertiermaschinen müssen die zu kuvertierenden Blätter meistens mit einem Strichcode am Rand des Blattes gekennzeichnet werden, damit die Maschine weiss, welche Blätter sie aufsammeln soll und bei welchem Blatt der eigentliche Kuvertierungsvorgang ausgelöst werden soll. Das Aussehen und der Aufbau der Strichcodes varieren zwischen den einzelnen Maschinen teilweise erheblich. Einfache Lösungen verwenden konstante Markierungen für das Aufsammeln von Blättern und für das Kuvertieren. Für diese Art Marken gibt es in (p2f) eine direkte Unterstützung in Form eines Attributes des Druckprozesses, welches die jeweilige Marke auswählt. Es gibt vier Typen von Marken: für die erste Seite eines mehrseitigen Dokuments, für Folgeseiten eines mehrseitigen Dokuments, für die letzte Seite eines mehrseitigen Dokuments und eine für einseitige Dokumente. \\ \\ {{print2forms:tips:0011-1.gif}} \\ \\ Das konkrete Aussehen der Marke wird in der Druckeranpassung festgelegt, und kann durch Angabe der Druckersequenzen zum Erzeugen der Marke in sehr weiten Grenzen an die jeweiligen Anforderungen angepasst werden. In den mit (p2f) ausgelieferten Druckeranpassungen für Laserdrucker sind rein exemplarisch die vier Marken mit jeweils einem vierstelligen Strichcode enthalten. Die Gruppe innerhalb der Druckeranpassung hat den Namen **Mark** und enthält vier Untergruppen mit den Namen **STRSTP**, **START**, **MIDDLE** und **STOP** für die vier Marken. \\ ( "Mark", AtEndOfPage, ( "NONE", NOP ), /* no special mark needed */ ( "STRSTP", PCL, "$1B&f0y0X" "$1B&l-144u+0Z$1B&a0P" "$1B*c300h18V" /* start/stop mark */ "$1B&a10h1500V$1B*c0P" "$1B&a10h1600V$1B*c0P" "$1B&a10h1700V$1B*c0P" "$1B&f1x3X" ), ( "START", PCL, "$1B&f0y0X" "$1B&l-144u+0Z$1B&a0P" "$1B*c300h18V" /* start mark */ "$1B&a10h1500V$1B*c0P" "$1B&a10h1600V$1B*c0P" "$1B&a10h1800V$1B*c0P" "$1B&f1x3X" ), ( "MIDDLE", PCL, "$1B&f0y0X" "$1B&l-144u+0Z$1B&a0P" "$1B*c300h18V" /* middle mark */ "$1B&a10h1500V$1B*c0P" "$1B&a10h1700V$1B*c0P" "$1B&a10h1800V$1B*c0P" "$1B&f1x3X" ), ( "STOP", PCL, "$1B&f0y0X" "$1B&l-144u+0Z$1B&a0P" "$1B*c300h18V" /* stop mark */ "$1B&a10h1600V$1B*c0P" "$1B&a10h1700V$1B*c0P" "$1B&a10h1800V$1B*c0P" "$1B&f1x3X" ) ), Um die vier Marken aufbringen zu können, bedarf es zunächst einmal eines Dokumentprozesses, der die genaue Anzahl von Seiten innerhalb des zu druckenden Dokuments ermittelt. Dies ist notwendig, weil zum einen die Information gebraucht wird, ob es sich um ein einseitiges Dokument handelt, und zum anderen muss bekannt sein, welches die letzte Seite in einem mehrseitigen Dokument ist, weil dort die Marke für das Kuvertieren aufgebracht werden muss. Der Dokumentprozess übergibt dann an einen Druckprozess, in dem eine besondere Seitenfolge die Marken abhängig von diesen Informationen anbringt. Ein genaues Beispiel mit einer Beschreibung befindet sich in den Daten der Demoversion von (p2f) und im dazugehörenden Tutorial. \\ ==== Steuerung von Maschinen mit Seitenzählern ==== Es gibt eine Klasse von Kuvertiermaschinen, die, um erhöhten Sicherheitsanforderungen zu genügen, beim Kuvertieren einen Seitenzähler kontrollieren. Auf diese Weise können Mehrfacheinzüge oder fehlende Blätter leicht erkannt werden, und es kann verhindert werden, dass Blätter in ein Kuvert gelangen, die gar nicht für diesen Empfänger bestimmt sind. Um dieses höhere Sicherheitsniveau zu erreichen, wird in die Kodierung ein Seitenzähler integriert. Im allereinfachsten Fall ist der Zähler nur ein Bit, was natürlich nur sicherstellt, dass einseitige Fehler erkannt werden - Dreifacheinzüge bleiben unbemerkt. Häufig werden daher Zähler mit drei Bit eingesetzt. Der Zähler läuft dann im Bereich von 0 bis 7 rund. Zur weiteren Steigerung der Sicherheit sind in den Marken dann auch noch Paritätsbits enthalten, die eine Falschlesung der Marke verhindern sollen. (p2f) hat keine direkt eingebauten Zählervariablen, sodass die Erzeugung solcher Marken nicht ohne weiters realisierbar ist. Zusätzlich bieten einige Kuvertiermaschinen auch noch weitere Papierfächer an, aus denen Blätter beim Kuvertieren zum Dokument hinzugefügt werden können. Die Steuerung solcher externen Zuführungen ist meist mit in die Marke für das Kuvertieren hineinkodiert. Auch dies ist mit den Bordmitteln von (p2f) nicht ohne weiteres zu realisieren. \\ ==== Die Systemfeldapplikation p2fEnvelope ==== Für Fälle, in denen das normale Leistungsspektrum von (p2f) nicht ausreicht, gibt es bei der Definition von Formularen ein **System-Anfragefeld**. Mit Hilfe diese Feldes kann während der Erzeugung eines Formulars ein praktisch beliebiges externes Programm aufgerufen werden, das dann die verlangte Aufgabe übernimmt. Dabei können natürlich auch Parameter an dieses Programm übergeben werden, die die zu lösende Anforderung definieren. Dieses externe Programm - eine sogenannte Systemfeldapplikation - erzeugt in der Regel eine Zeichenkette, die dann mit Hilfe anderer Felder (Texte, Barcodes, Ressourcen) weiterverarbeitet werden kann. Für die Steuerung von Kuvertiermaschinen dient die Systemfeldapplikation **p2fEnvelope**, die folgende Leistungsmerkmale von Kuvertiermaschinen unterstützt: * Optionale Seitenzähler mit 1 bis 3 Bit * Optionale Zufuhr zusätzlicher Blätter aus bis zu zwei Magazinen * Optionales Stopzeichen zum gesteuerten Anhalten der Maschine * Berechnung von Paritätszeichen Diese Systemfeldapplikation ist für die meisten Kuvertiermaschinen, wie etwa die der Firmen Francotyp-Postalia oder Stielow, einsetzbar. Ein paar zusätzliche Information zur Applikation finden sich im Tip [[print2forms:tips:tip37|p2fEnvelope.exe]]. \\ ==== Aufruf im System-Anfragefeld ==== Genau wie bei der Benutzung der fest eingebauten Unterstützung für Kuvertiermaschinen muss beim Drucken zunächst ein Dokumentenprozess aufgerufen werden, der die Anzahl der Seiten im Dokument ermittelt - und bei dieser Gelegenheit auch grössere Druckaufträge in Einzeldokumente zerlegen kann. Wie die Dokumentgrenze definiert ist, hängt vom jeweiligen Anwendungsfall ab. Ist die Dokumentgrenze erkannt, wird an den Druckprozess übergeben, der dann die Strichcodes zur Steuerung der Maschine aufbringt. Im Druckprozess muss das letzte oder einzige Blatt des Dokuments erkannt werden, weil dort die Markierung für das Kuvertieren aufzubringen ist. Daher ist der erste Zustand in der Seitenfolge eine Abfrage auf die letzte Seite des Dokuments - was auch den Fall einseitiger Dokumente einschliesst, weil bei den hier diskutierten Strichcodes keine Unterscheidung notwendig ist. Ist dies die letzte Seite im Dokument, wird ein Formular gedruckt, das den Strichcode zum Auslösen des Kuvertiervorgangs druckt. Ist es nicht die letzte Seite, wird hingegen ein Formular aufgerufen, das den Strichcode zum Aufsammeln druckt. In den im Prozess aufgerufenen Formularen ist dann das System-Anfragefeld mit dem Aufruf der Systemfeldapplikation **p2fEnvelope** enthalten. Konkret sieht das etwa so aus: \\ \\ {{print2forms:tips:0011-2.png}} \\ \\ Die beiden Formulare **Kuvertieren ohne Zufuehrung** und **Sammeln ohne Zufuehrung** unterscheiden sich nur im Aufruf der Systemfeldapplikation. Beide Formulare enthalten jeweils ein System-Anfragefeld und ein Textfeld. Die Angabe **Ausführung abwarten** im System-Anfragefeld sorgt dafür, dass mit dem Druck des Formulars gewartet wird, bis die Systemfeldapplikation beendet wurde und die angefragten Daten wirklich zur Verfügung stehen. Die Angabe des **Zeichensatzes** ist in diesem Fall unkritisch, weil die Kommandos für **p2fEnvelope** nur ASCII-Zeichen enthalten. Da eine Systemfeldapplikation letztendlich nur eine Zeichenkette erzeugt, wird das Textfeld benötigt, um die gelieferte Information zu verarbeiten. In diesem Fall besteht die Verarbeitung lediglich darin, diese Zeichenkette an den linken Rand des Blattes zu drucken. Dabei bestimmen die Positionierungsangaben des Textfeldes die Position des Strichcodes. In der **Schablone** findet sich eine Referenz auf das System-Anfragefeld. Die sonstigen Angaben im Textfeld sind hier ohne weitere Bedeutung. \\ \\ {{print2forms:tips:0011-3.png}} \\ \\ Das Zusammenspiel der Felder ist gut zu beobachten, wenn im Client oder Gateway die **Ablaufverfolgung** in der Stufe **Fehlersuche** aktiviert ist. Dort ist zunächst der Aufruf der Systemfeldapplikation mit Ausgabe des Programmaufrufs und dann die Ausgabe der zurückgelieferten Zeichenkette zu sehen. Wie deutlich zu erkennen, gibt die Systemfeldapplikation eine Reihe von PCL-Sequenzen zurück, die den angeforderten Strichcode zeichnet. \\ \\ {{print2forms:tips:0011-4.png}}