Zapomniałem dodać do instalacji drukarki - drukarka zebra powinna być zainstalowana w Windows ze sterownikiem "Generic / Text Only". Można zainstalować nową drukarkę i użyć tego samego portu, którego używa już zainstalowana zebra ze sterownikiem Zebra Designer. Nowa drukarka jest potrzebna tylko po to, żeby móc wysyłać ZPL bezpośrednio na nią.
BTW - polskie znaki działają w ten sposób na GK420
1 odpowiedzi
0 pomysłów
0 komentarzy
[rozwiązanie] Etykiety Zebra przez ZPL natywnie z Optimy
Handel
Cześć!
Zaglądałem tu parę razy i skorzystałem z Waszych rad, być może mój wkład też okaże się przydatny.
Wiele razy poruszany był temat małych etykiet produktowych z EANami drukowanymi z Optimy. Problem jest taki, że Genrap nie potrafi wygenerować małych kodów EAN, a poza tym bardzo ciężko jest zaprojektować taką małą etykietę nawet bez kodu kreskowego, żeby drukowała się poprawnie przez GenRap. Najlepszym rozwiązaniem jest wykorzystanie języka ZPL, który obsługują drukarki zebra i tak właśnie zrobiłem.
Poniżej moje rozwiązanie, które nie wykorzystuje żadnych dodatkowych programów, ani funkcji.
Przykład jest dla etykiet 50x30 mm drukowanych na drukarkach 230 dpi. Drukarka MUSI posiadać wsparcie dla ZPL (jeśli ma EPL to trzeba zmienić w konfiguracji albo zmienić firmware albo drukarkę albo kod szablonu :-) Własny kod ZPL możecie uzyskać np. z pomocą programu Zebra Designer lub pisać ręcznie i pomagać sobie Labelary viewer (online). Do pisania ręcznego dokumentacja - ZPL II guide na google). Elementy zmienne (np. kody kreskowe, opisy) muszą wykorzystywać czcionki standardowe drukarek lub odpowiednie czcionki muszą być załadowane wcześniej do drukarki, w moim przykładzie są tylko czcionki standardowe.
Ten sposób wykorzystuje wydruk tekstowy XML z Optimy. Dodałem parametr z pytaniem o ilość etykiet, który pojawia się przed wydrukiem. Za pomocą transformacji XSLT ten XML zamieniany jest na kod ZPL, a następnie uruchamiany jest prosty skrypt powłoki Windows, który wysyła ten plik ZPL na wybraną drukarkę. Mechanizm jest bardzo podobny jak wydruki na drukarki tekstowe. W moim odczuciu całość działa bardzo sprawnie.
Jak to zrobić:
Nazwę serwera oczywiście musicie dostosować do nazwy komputera, który ma zainstalowaną drukarkę i optimę.
copy /B %1 \\server1/zebra1
(nazwa drukarki to nazwa udostępnionego wcześniej zasobu)
[SQL]
Select Twr_Kod, Twr_EAN, Twr_Nazwa from CDN.Towary
Where ?@Hs200_NQ|Filtr:''@?
[XSL]
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method = "xml" omit-xml-declaration="yes" encoding="utf-8" />
<xsl:preserve-space elements="*"/>
<xsl:template match="/">
<xsl:for-each select="ROOT/RECORDSET1/RECORD">
CT~~CD,~CC^~CT~
^XA~TA000~JSN^LT0^MNW^MTD^PON^PMN^LH0,0^JMA^PR2,2~SD15^JUS^LRN^CI0^XZ
^XA
^MMT
^PW400
^LL0240
^LS0
^CI28
^BY3,2,87^FT72,207^BEN,,Y,N
^FD<xsl:value-of select="@Twr_EAN"/>^FS
^FT0,44^A0N,28,28^FB400,1,0,C^FH
^FD<xsl:value-of select="@Twr_Kod"/>^FS
^CWT,E:TT0003M_.FNT
^CFT,20,20
^CI28
^FT0,95^FB400,2,0,C^FH
^FD<xsl:value-of select="@Twr_Nazwa"/>^FS
^PQ?@n6|IlEtykiet|&Ilość etykiet dla każdego towaru:1@?,0,1,Y^XZ
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
[FILE]
[RUN]
c:\tools\print_zebra1.cmd
Co wymaga poprawy:
ale to nie chce mi działać w Optimie. Jeśli by to działało to byłaby pełna kompatybilność z zebrami nawet tymi starymi. Oczywiście da się to załatwić w inny, mniej elegancki sposób np. rozbudowując skrypt cmd do jakiegoś powershella etc. Jeśli ktoś się bardziej orientuje w xslt w Optimie to proszę o pomoc. Być może na tych drukarkach ze wsparciem UTF-8 będzie działać od strzału.
Załączniki: