Tabellen ausfüllen
Anforderung
Bei vielen Dokumenten im Geschäftsalltag ist eine Liste oder Tabelle fester Bestandteil des Layouts, z.B. bei Lieferscheinen, Rechnungen, Kommisionierlisten. Meist sind diese Tabellen bereits im Druckdatenstrom entsprechend in Spalten und Zeilen aufbereitet, so dass es meist nur darum geht, die Tabelle im Dokument optisch besser zu präsentieren.
Im einfachsten Fall genügt es, einfach einen Tabellenrahmen mit einer dazugehörigen Kopfzeile über die Druckdaten einzudrucken. Die Beispielinstallation von print2forms enthält ein solches Beispiel für den Druck von Lieferscheinen.
Was aber, wenn die Tabelle nicht nur in einer anderen, eventuell typographischen Schrift gedruckt werden soll, sondern einzelne Spalten nicht benötigt werden, oder die Reihenfolge der Spalten verändert werden soll?
Eine mögliche Lösung einer solchen Anforderung bietet print2forms mit den sogenannten Vorlagen.
Als Beispiel soll die Anforderung formuliert werden, dass aus den Lieferscheinen der Beispielinstallation jetzt Kommisionierlisten erzeugt werden sollen. Der Druckdatenstrom bleibt identisch, nur werden nicht alle Spalten benötigt und die Liste soll an einer anderern Position im Dokument erscheinen.
Realisierung
Um in print2forms Vorlagen zu erstellen, kann im Prinzip jedes Programm verwendet werden, das in der Lage ist, das gewünschte Layout zu erzeugen. Im Beispiel hier wurde die Textverarbeitung aus dem kostenlosen Open Office Paket verwendet.
In einer Vorlage werden Platzhalter definiert, die dann später beim Druck gegen die Nutzdaten ersetzt werden.
Die Anforderung an die Namen der Platzhalter ist, dass sie eineindeutig sein müssen. Das heist, kein Platzhalter darf als Bestandteil eines reglären Textes auf dem Dokument vorkommen, und kein Name darf Bestandteil eines anderen Platzhalternamens sein.
Ein Platzhalter darf aus Buchstaben, Ziffern und Sonderzeichen bestehen. Die Länge des Platzhalternamens ist meist durch das Layout festgelegt und sollte möglichst sprechend gewählt werden.
Es ist im Layout der Kommisionierliste leicht zu erkennen, dass die Zeichenfolgen Adr, Num, Bez, 100 und 101 wohl als Platzhalter für die Anschrift und die Tabelleninhalte gedacht sind.
Für die Spalte Menge und Rest wurde ein rein numerischer Platzhalter verwendet, weil hier dreistellige Zahlen rechtsbündig gedruckt werden sollen. Für die einzelnen Tabellenzeilen werden immer die gleichen Platzhalter verwendet.
Nicht ganz so offensichtlich ist, dass auch 123456, 27.10.2015 und Barcode als Platzhalter eingesetzt sind.
Bemerkenswert ist, dass für die Gestaltung der Tabelle die typographische Schrift Arial Verwendung findet.
|
Bevor mit dem Import der Vorlage in print2forms begonnen werden kann, wird noch eine Aufzeichnung der Druckdaten benötigt, die später zum Ausfüllen der Vorlage verwendet werden soll. Dazu wird bei einem print2forms-Client für Laserdrucker die Aufzeichnung der Eingangsdaten aktiviert, und anschliessend der Druck der Lieferscheindaten ausgelöst. Das geschieht durch Aufruf der Beispielapplikation p2fSample und Druck eines Lieferscheins. Dabei ist darauf zu achten, dass ein Lieferschein mit 13 Artikeln gedruckt wird, da sonst später beim Importieren nicht alle Zeilen der Tabelle zugewiesen werden können.
Die Aufzeichnung der Druckdaten wird mit Hilfe des entsprechenden Punktes aus dem Kontextmenü des print2forms-Clients in eine Datei geschrieben. Der Client muss allerdings dazu vorher erst angehalten werden.
Ist die Vorlage fertig gestaltet, muss sie in print2forms als Ressource importiert werden. Dazu wird das Layout einfach über den print2forms-Druckertreiber auf das Import-Gateway gedruckt. Im Druckdialog von OpenOffice wird das Import-Gateway ausgesucht und der Eigenschaftendialog des print2forms-Druckertreibers aufgerufen. Dort sind im Reiter Import die notwendigen Einstellungen vorzunehmen.
Es muss eine neue Ressource importiert werden. Der Name der Resource wird mit Kommisionierliste festgelegt. Da im Fenster Verfügbare Verzeichnisse keine Einstellung vorgenommen wurde, wird die Ressource direkt im Container Ressourcen erzeugt.
In den Geräteeigenschaften des Import-Gateways wurde bereits festgelegt mit welcher Auflösung die Ressource erstellt werden soll und ob die Graphik als Raster- oder Vektorgraphik erzeugt werden soll. Ebenso ist dort - abhängig vom Treiber - festgelegt, ob die Ressource in Schwarz/Weiss oder in Farbe erzeugt wird. Im Falle, dass der print2forms-Farbtreiber Verwendung findet, kann im Reiter Papier/Qualität noch zwischen Schwarz/Weiss und Farbe umgestellt werden.
Da in der Vorlage die Schrift Arial verwendet wird, ist sehr wichtig, dass in den Geräteeigenschaften des Import-Gateways in den Geräteeinstellungen unter Ersetzungstabelle für Schriftarten angegeben wird, dass die Schrift Arial immer mit der residenten Duckerschrift gedruckt werden soll. Das ist deshalb von Bedeutung, weil sonst das Import-Gateway die Platzhalter nicht erkennen kann. (Das ist in der Regel nach der Installation des Druckertreibers bereits der Fall.)
|
Nachdem der Druckvorgang in Open Office ausgelöst wurde, erscheint ein Fenster mit den in der Vorlage erkannten Textpassagen, unter denen sich natürlich jetzt auch die Platzhalter befinden.
Durch einen Klick auf die Schaltfläche Druckdaten wird als nächstes die Datei mit den aufgezeichneten Druckdaten geladen. Es erscheint ein zweites Fenster mit den Druckdaten.
Die Position der beiden Fenster zueinander wurde hier nur aus Platzgründen so gewählt.
Bei genügend grossem Bildschirm können die beiden Fenster in der Regel nebeneinander angeordnet werden.
|
Um jetzt die Platzhalter der Tabelle zu definieren, wird das erste Auftauchen der Zeichenfolge Num mit der Maus markiert und als Platzhalter festgelegt. Das geschieht entweder über die Plus-Taste auf der Zehner-Tastatur oder über den entsprechenden Punkt des Kontextmenüs.
Es werden automatisch alle Vorkommnisse der Zeichenfolge NUM als noch nicht zugewiesener Platzhalter markiert (in der Regel in Rot, falls nicht angepasst). Dabei wird der sichtbare Bereich des Fensters eventuell so verschoben, dass der erste Platzhalter in der obersten Zeile steht.
Mit der Tabulator-Taste erfolgt der Wechsel in das Fenster mit den Druckdaten. Dort werden die Druckdaten mit der Maus markiert, die in die Spalte mit dem Platzhalter Num eingefügt werden sollen.
|
Die Zuweisung der Druckdaten zum Platzhalter Num erfolgt jetzt wieder entweder über die Plus-Taste auf der Zehner-Tastatur oder über den entsprechenden Punkt des Kontextmenüs.
Als Zeichen für die erfolgreiche Zuordnung werden jetzt alle 13 Druckdatenzeilen entsprechend markiert. Auch die Farbe der Platzhalter im Fenster mit der Vorlage wechselt jetzt (auf Blau, wenn nicht angepasst), um anzuzeigen, dass den Platzhaltern nun Druckdaten zugewiesen worden sind.
Stimmt die Anzahl der Platzhalter nicht mit der Anzahl der Druckdatenzeilen überein, bleiben entweder einige Platzhalter Rot (zu wenige Druckdatenzeilen) oder es werden nicht alle Druckzeilen markiert (zu wenig Platzhalter).
|
Analog wird jetzt mit den restlichen Spalten der Tabelle verfahren.
Dabei ist darauf zu achten, dass immer der gesamte Druckdatenbereich markiert wird, der für den Platzhalter zugewiesen werden soll, selbst wenn die entsprechende Spalte im Einzelfall nicht vollständig ausgefüllt ist.
Der Platzhalter 100 wird mit der letzten Spalte (drei Zeichen) der Druckdatentabelle verknüpft. Der Platzhalter 101 wird mit der vorletzten Spalte (drei Zeichen) der Druckdatentabelle verknüpft.
Ist das erledigt, wird der Platzhalter Adr zunächst nur festgelegt.
Die beiden Fenster sollten jetzt so wie in der Abbildung rechts aussehen.
|
|
Bei der Zuweisung von Druckdaten für den Platzhalter Adr gibt es eine Besonderheit. Nicht alle fünf Zeilen für die Anschrift sind gleich lang.
Einige Zeilen enthalten noch Daten, die weiter rechts gedruckt werden, andere Zeilen enden unmittelbar nach den Daten der Anschrift. Dies gilt auch für die erste Zeile der Anschrift.
Von daher kann die erste Zeile nicht einfach mit der Maus markiert werden, weil dann von den nachfolgenden Zeilen auch nur die jeweils acht ersten Zeichen im Anschriftenfeld der Vorlage landen würden.
Deshalb muss nach dem Markieren der ersten Zeile der automatisch erzeugte reguläre Ausdruck .{7}(.{8}).* manuell auf
.{7}(.{,30}).* geändert werden (eine Anschriftenzeile enthält maximal 30 Zeichen). Erst danach darf die Plus-Taste auf der Zehnertastatur zur Zuweisung der Druckdaten ausgelöst werden.
Wird jetzt durch Drücken der Leertaste nachgeschaut, welche Druckdaten dem fünften Platzhalter Adr zugewiesen worden sind, sieht man die 30 Leerstellen in der nicht ausgefüllten fünften Anschriftenzeile der Druckdaten.
Wird nachgeschaut, welche Druckdaten dem ersten Platzhalter Adr zugewiesen sind, sieht man zwar nur die acht Zeichen der ersten Anschriftenzeile in den Druckdaten, aber ein Blick auf das Auswahlmuster zeigt, dass auch hier bis zu 30 Zeichen zugewiesen werden, wenn sie denn in den Druckdaten enthalten wären.
|
Jetzt werden noch die Nummer des Lieferscheins als Nummer des Kommisionierscheins (Platzhalter 123456) und das Lieferscheindatum übernommen (Platzhalter 27.10.2015).
Als letztes wird der Platzhalter Barcode zugewiesen.
Die Besonderheit hier ist, dass dieser Platzhalter nicht einfach gegen einen Text ersetzt wird, sondern dass an seiner Stelle ein ganzer Barcode erzeugt werden soll. Barcodes werden in print2forms mit Hilfe sogenannter Barcode-Felder in Formularen erzeugt.
Aus diesem Grund wird, nachdem der Platzhalter Barcode markiert ist (Rot), unter Feldreferenz der Name eines Barcodefeldes eingegeben - hier einfach Nummer. Erst danach werden die entsprechenden Druckdaten zugewiesen.
Weil im Barcode ebenfalls die Lieferscheinnummer kodiert werden soll, erscheint die Lieferscheinnummer im Fenster mit den Druckdaten jetzt grün (falls nicht geändert), als Zeichen dafür, dass diese Druckdaten mehreren Platzhaltern zugewiesen sind.
Wird der Cursor in die Lieferscheinnummer gesetzt und die Leertaste gedrückt, werden im Fenster mit der Vorlage abwechselnd die beiden Platzhalter 123456 und Barcode markiert. So kann auch eine mehrfache Zuweisung kontrolliert werden.
Jetzt ist die Vorlage vollständig bearbeitet und kann durch Klicken auf die Schaltfläche Import zum Import-Gateway gesendet werden.
|
|
Nach dem erfolgreichen Import der Vorlage existiert in print2forms jetzt eine Ressource mit dem Namen Kommisionierliste. Damit diese verwendet werden kann, muss noch ein Formular und ein Prozess definiert werden.
|
Das Formular bekommt ebenfalls den Namen Kommisionierliste.
Weil es direkt von einem Prozess aufgerufen werden soll, muss für Horizontale Position und für Vertikale Position jeweils der Wert 0 Zentimeter eingetragen werden.
Es enthält als Wichtigstes eine Referenz auf die eben importierte Ressource Kommisionierliste.
Zusätzlich muss jetzt noch das in der Ressource referenzierte Barcode-Feld mit dem Namen Nummer angelegt werden.
Bei der Positionierung des Feldes ist darauf zu achten, dass dort Relativ zur Ressource angegeben ist, damit der Barcode auch dort angedruckt wird, wo der Platzhalter Barcode in der Vorlage steht.
Es ist prinzipiell auch erlaubt, hier absolut oder relativ zum Formular zu positionieren, allerdings wäre dann die Position des Platzhalters Barcode in der Vorlage vollkommen unwichtig, und der Barcode erscheint an der definierten Stelle unabhängig von der Vorlage.
Die Schablone des Barcode-Feldes bekommt den Inhalt \Nummer:1 , weil unter dem Namen des Feldes die Druckdaten abgelegt sind, die bei der Bearbeitung der Vorlage für den Platzhalter Barcode zugewiesen worden sind.
|
Jetzt wird ein neuer Druckprozess angelegt, der ebenfalls den Namen Kommisionierliste bekommt.
Das einzig Besondere an diesem Prozess ist, dass in der Seitenfolge der Seitentyp Nutzdatenseite angegeben werden muss.
Diese Einstellung sorgt dafür, dass die eigentlichen Druckdaten nicht auf der Druckseite erscheinen, sondern nur die Druckdaten, die in einer Vorlage irgendwelchen Platzhaltern zugewiesen worden sind.
Um das Ergebnis der Arbeit jetzt auch austesten zu können, wird der Einfachheit halber der Dokumentenprozess ExLiefer - Lieferscheine ermitteln temporär so geändert, dass dort statt des Verweises auf den Druckprozess Lieferschein drucken jetzt ein Verweis auf den Druckprozess Kommisionierliste steht. Damit kann wieder die Beispielapplikation p2fSample zur Erzeugung entsprechender Druckdaten verwendet werden.
|
|
Eine für einen Lieferschein mit acht Artikel erzeugte Kommisionierliste ist nachfolgend zu sehen.
|
Hinweise
Für Zahlen sollten in der Regel rein numerische Platzhalter (mit Punkt und Komma) verwendet werden, weil das garantiert, dass bei Verwendung von typographischen Schriften Zahlen innerhalb einer Tabelle stellenrichtig gedruckt werden.
Das hier präsentierte Vorgehen verlangt eine print2forms-Version 3.4 oder höher. Nachfolgend sind die notwendigen minimalen Build-Nummern der beteiligten Komponenten angegeben: p2fClient 5766, Gateway 3044 und Import-Filter 863. Diese sind noch nicht Bestandteil des Installers Build 274, und müssen daher bei Bedarf manuell nachinstalliert werden.
In diesem Beispiel wurde der Einfachheit halber angenommen, dass nur einseitige Lieferscheine als Kommisionierliste ausgegeben werden sollen. Wollte man die Kommisionierlisten für beliebig lange Lieferscheine drucken, müsste man - wie für die Lieferscheine - nicht nur die Vorlage für eine einseitige Kommisionierliste definieren, sondern auch jeweils eine Vorlage als Start-, Mittel- und Endseite.
Der Prozess Kommisionierliste müsste dann analog zum Prozess Lieferschein drucken mit vier Seiten innerhalb der Seitenfolge definiert werden. Das ist prinzipiell auch mit der Nutzung von Vorlagen möglich.