Das Gateway erzeugt aus den eingehenden ZPL-Druckdaten lediglich zwei Dateien: eine mit den konvertierten PCL-Druckdaten und eine Index-Datei. Damit ist im Prinzip aber noch keine Funktion realisiert.
Die eigentliche Funktion eines Gateways ist sehr stark von den Anforderungen des Kunden und dessen Installationsumgebung abhängig. Von daher ist klar, dass das nicht generell in convert4print vorkonfiguriert werden kann. Daher startet das Gateway über eine bei seiner Konfiguration festgelegte Befehlszeile ein Skript, das die eigentliche Aufgabe erledigt.
Für die Programmierung des Skripts können die üblichen Skriptsprachen wie PHP oder Perl genutzt werden. Die Laufzeitumgebung für die Skripte ist nicht Bestandteil von convert4print und muss in der Regel selbst installiert und konfiguriert werden. 1)
Alternativ ist es natürlich auch möglich, selbstgeschriebene kompilierte Programme aufzurufen.
Das Grundgerüst für ein Skript oder ein Programm zur Weiterverarbeitung der Etiketten ist relativ simpel:
Als Beispiel soll ein PHP-Skript dienen, das aus der PCL-Datei ein PDF-Dokument erstellt und es in einem festen Zielverzeichnis auf einem Server ablegt. Der Einfachheit halber wird angenommen, dass je Druckauftrag nur ein Etikett übertragen wird. 2)
Der Name des PDF-Dokuments soll dabei von einem Wert aus dem Etikett ermittelt werden. 3)
Die Befehlszeile für dieses Skript muss als "C:\php7\php.exe" "%1\zpl.php" "%1" "%2" %4
konfiguriert werden. Die Parameter sind die Platzhalter für das Skriptverzeichnis, das Spoolverzeichnis und den Dateinamen der Druck- und Index-Datei (ohne Erweiterung).
In der Ablaufverfolgung des Gateways kann kontrolliert werden, wie diese Platzhalter expandiert werden:
"C:\php7\php.exe" "C:\Users\Public\Documents\SPE Systemhaus GmbH\convert4print\c4pScript\zpl.php" "C:\Users\Public\Documents\SPE Systemhaus GmbH\convert4print\c4pScript" "C:\Users\Public\Documents\SPE Systemhaus GmbH\convert4print\c4pSpool" 5EF443CE_536
Für das Skript kann der folgende PHP-Code als Grundgerüst für eigene Entwicklungen verwendet werden: 4) 5)
<?php // Gateway command line: "C:\php\php.exe" "%1/zpl.php" "%1" "%2" %4 $Script = $argv [1]; /* path to script */ $Spool = $argv [2]; /* path to spooled document */ $Document = $argv [3]; /* name of document */ $Target = "\\archiv\\temp\\"; if ($Script == "" || $Spool == "" || $Document == "") exit (-1); /* wrong arguments */ chdir ($Spool); /* make it current directory to shorten some pathes */ if (preg_match ("/(.*_[0-9]+)/", $Document, $Matches) == 1) { $Document = $Matches [1]; /* document name without extension */ } else exit (-4); /* illegal name passed */ $Delivery = ""; $Index = fopen ($Document . ".ctl", "r"); if ($Index) { while (($Line = fgets ($Index, 4096)) !== false) { if (preg_match ("/\[01036311B8\]([0-9A-Z]+)/", $Line, $Matches)) { $Delivery = trim ($Matches [1]); } } fclose ($Index); } if ($Delivery == "") /* wrong document type */ $Delivery = $Document; $PDF = $Delivery . ".pdf"; $Cmd = "\"" . $Script . "\\gpcl6win32.exe\"" . " -dNOPAUSE" . " -sDEVICE=pdfwrite" . " -r600" . " -g2700x3900" . " -dPDFFitPage" . " -dPDFA=1" . " \"-sOutputFile=" . $PDF . "\"" . " \"" . $Document . ".pcl\""; system ($Cmd, $Result); /* convert the pcl-file to a pdf-file */ if ($Result != 0) { exit (-3); } /* can't convert to PDF document */ unlink ($Document . ".ctl"); /* no longer needed */ unlink ($Document . ".pcl"); if (copy ($PDF, $Target . $PDF)) /* transfer PDF to target directory */ unlink ($PDF); else exit (-4); /* result PDF document can't be copied */ exit (0); ?>
Für die Inbetriebnahme des Gateways und den Test des Skriptes sei noch einmal ausdrücklich auf die in den Tips 'Visual Studio Code für PHP installieren', 'Test von PHP-Skripten' und 'PHP-Skript ohne Gateway testen' präsentierten Informationen verwiesen.