===== ZPL-Testausdrucke anzeigen =====
==== Anforderung ====
Genau wie im Beitrag [[print2forms:tips:tip74|PCL-Testausdrucke anzeigen]] in den Anforderungen beschrieben, gibt es natürlich auch für Etikettendrucker den Wunsch, für die Tests mit (p2f) nicht Testetiketten auf dem realen Drucker zu erzeugen, sondern die erzeugten Etiketten während des Entwurfsprozesses direkt am Bildschirm betrachten zu können.
Zumindest für Etikettendrucker des Herstellers **Zebra** ist dieser Wunsch erfüllbar.
Genau wie für die PCL-Drucker, kann auch hier das Hilfsprogramm [[print2forms:tips:tip53|p2fViewer.exe]] genutzt werden, allerdings mit einer anderen Skriptdatei.
\\
\\
==== Realisierung ====
Im Internet gibt es einen sehr brauchbaren Online-ZPL-Viewer mit dem Namen [[http://labelary.com/viewer.html|Labelary]], der einen Grossteil der ZPL-Kommandos sehr gut emuliert und wahlweise eine PNG-Bilddatei oder eine PDF-Datei erzeugt.
Der Konverter auf dem der Viewer letztlich basiert, wird auch als **Web-Service** zur Verfügung gestellt.
Die Idee für eine ZPL-Anzeige in (p2f) ist nun die, mit Hilfe von **p2fViewer.exe** die vom Client erzeugten ZPL-Daten abzufangen, und die resultierende Datei an den Web-Service zu senden, damit dieser daraus eine %%PNG%%-Datei macht, die man mit Windows Boardmitteln anzeigen kann.
Um den Web-Service zu nutzen, bietet Labelary eine ganze Reihe von Möglichkeiten an, einen entsprechenden HTTP-Request abzusetzen. Für die Lösung, die hier vorgestellt werden soll, haben wir uns für die Nutzung von [[https://curl.haxx.se/windows/|curl]] entschieden, weil so eine einfache Batch-Datei für die Windows-Commandshell ausreicht.
Der Einfachheit halber gehen wir davon aus, dass alle notwendigen Dateien in einem Verzeichnis ''C:\View'' installiert sind. Das reduziert die Pfadlänge entsprechend ((Natürlich darf auch jedes andere Verzeichnis gewählt werden, in dem Rechte zum Ausführen von Programmen zur Verfügung stehen. \\ \\ )) und vermeidet eine ganze Reihe sonst notwendiger Hochkommata. Dort soll auch das Verzeichnis mit curl liegen (die //curl.exe// und die //libcurl-x64.dll// für 64-Bit Systeme, ansonsten //curl.exe// und die //libcurl.dll// für 32-Bit Systeme). Ausserdem die Batch-Datei mit den Kommandos, wie unten beschrieben.
In der Kommandozeile des Programms **p2fViewer.exe** wird jetzt statt wie bisher kein Programm, sondern eine Batch-Datei mit Befehlen für die Windows-Commandshell aufgerufen (die Hochkommata sind wichtig!): ((Bitte mindestens den Build 149 von p2fViewer.exe einsetzen, um zu vermeiden, dass ein zusätzliches Fenster für die Commandshell aufgeht.))
''(sp)%%cmd /s /c ""C:\View\makepng.bat" "%1""%%(sp)''
Das Spool-Verzeichnis des p2fViewers muss auf ''C:\View'' gesetzt werden. Diese Batch-Datei selbst enthält folgende Befehle:
\\
C:\View\curl\bin\curl --silent --request POST http://api.labelary.com/v1/printers/8dpmm/labels/4x6/0/ --form file=@C:\View\View.pcl >C:\View\Seite-1.png
%SystemRoot%\System32\rundll32.exe "%ProgramFiles(x86)%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen C:\View\Seite-1.png
del Seite-1.png
del %1
\\
Als erstes wird //curl// aufgerufen, um aus der ange(-)lieferten %%ZPL%%-Datei eine %%PNG%%-Datei zu erzeugen. Die %%PNG%%-Datei erhält dabei der Einfachheit halber immer den Namen //Seite-1.png//.
In der URL des %%HTTP%%-Requests ist im Pfad die Angabe '4x6' zu erkennen. Dies ist die Etikettengrösse in Zoll. Bei Bedarf muss die Grösse natürlich angepasst werden. Dezimalzahlen mit Dezimalpunkten sind erlaubt.
Die Druckerauflösung ist auf 203 dpi (8 dpmm - dots per millimeter) eingestellt. Das ist für eine Anzeige voll(-)kommen ausreichend und reduziert die Grösse der Bilddatei auf das erforderliche Minimum.
Anschliessend wird der //Bildbetrachter// aus dem Windows-Verzeichnis (nur eine DLL) aufgerufen und gewartet, bis der Benutzer den Bildbetrachter schliesst. Sobald das der Fall ist, werden die erzeugte %%PNG%%-Datei und die %%ZPL%%-Datei gelöscht.
{{ print2forms:tips:0080-1.png}}
==== Hinweise ====
* Natürlich kann man auf ähnliche Weise wieder eine Lösung bauen, die **%%PDF%%-Dateien** verwendet. Das hat den Vorteil, dass der Web-Service von Labelary dann auch mehrseitige Dokumente erzeugt, falls der ZPL-Datenstrom mehrere Etiketten enthält. So können dann auch ganze Etikettenserien betrachtet werden.\\ \\ Meist scheitert dieses Vorhaben aber am nächsten Hinweis, welshalb hier im Wiki auf eine Vorstellung verzichtet wurde.
* Es soll natürlich nicht verschwiegen werden, dass diese Lösung auch einen **Datenschutz** relevanten Aspekt hat. Letztlich werden die ZPL-Daten via Internet unverschlüsselt an einen fremden Rechner übertragen. Daher sollte die Lösung nur beim Entwurfsprozess und auch da nur mit unbedenklichen Testdaten und **niemals** mit echten Kundendaten eingesetzt werden.
\\
\\