Co to jest plik ZPL?
ZPL to skrót od Zebra Programming Language. Umożliwia on zespołowi tworzenie pożądanego wzoru wydruku dla dowolnej etykiety lub strony.
Dzięki temu etykieta jest niezależna od konkretnego urządzenia drukującego. Drukarka otrzymuje polecenia do tworzenia kształtów, ramek, symboli i innych rzeczy i sama wie, jak to zrobić. To jest kluczowa różnica ZPL!
Firma Zebra Technologies opracowała ZPL z myślą o tworzeniu i drukowaniu etykiet (z kodami kreskowymi, grafiką i dowolnym tekstem), które są wykorzystywane głównie w działalności komercyjnej.
Krótko o etapach tworzenia ZPL:
Najpierw dane są przesyłane do drukarki za pomocą urządzeń (komputerów PC lub terminali zbierających informacje), następnie procesor drukarki Zebra przetwarza otrzymane informacje i drukuje wynik.
Krótko o pisaniu kodu ZPL:
Pomiary dla druku są wykonywane w punktach, ponieważ bez dokładnej wartości będzie dość trudno zrobić coś bez otrzymywania błędów i awarii. Należy zapoznać się z dokumentacją sprzętu drukującego i dowiedzieć się, jaka jest jego gęstość pikseli (DPI).
Sam projekt jest tworzony za pomocą następujących poleceń:
1. Kod powinien zaczynać się od znacznika ^ XA, a kończyć na ^ XZ;
2. Ale znacznik ^ FX poprzedza komentarze;
3. ^ CF x, y, z - domyślne ustawienia czcionki: czcionka, jej wysokość i szerokość;
4. ^ FO x, y - tiret lewe i górne;
5. ^ FS - koniec linii;
6. Dane z ustawionymi wartościami można wyświetlić w następujący sposób:
FD <tekst> Blok
tekstu:
FB <szerokość>, <liczba wierszy>, <spacje między wierszami>, <wyrównanie tekstu>, <wcięcie dla drugiego lub kolejnego wiersza> <położenie tekstu> :
L - wyrównany
do lewej,
R -
wyrównany do
prawej
,C - na środku,
J - wyrównanie tekstu do szerokości pola;
Tworzenie prostokątów:
GB <szerokość>, <wysokość>, <grubość linii>, <kolor linii>, <zaokrąglenie narożnika>
Kolor linii: B (czarny) lub W (biały)
Zaokrąglenie narożnika jest wskazywane przez wartość z zakresu od 0 do 8.
7. Kod kreskowy (zarówno ZPL jak i Zebra-printer - stworzony bezpośrednio dla kodów kreskowych!) składający się z trzech poleceń:
wymiary kodu kreskowego (BY <szerokość>, <stosunek grubości linii>, <wysokość kodu kreskowego>); jego ustawienia:
BC <orientacja>,
<wysokość kodu kreskowego w punktach>,
<czy drukować deszyfrację kodu >,
<dekodowanie kodu kreskowego>,
<mode> <orientacja> - N - orientacja normalna;
R - 90 stopni zgodnie z ruchem wskazówek zegara;
I - 180 stopni;
B - 270 stopni; <czy drukować deszyfrowanie kodu>,
<dekodowanie kodu nad kodem kreskowym> - wartości Y (tak) lub N (nie);
<mode> - domyślnie N.
8. Wyprowadzenie kodu kreskowego do druku odbywa się za pomocą polecenia FD <informacja>.
W rzeczywistości to wszystko nie jest takie proste, ale daje to ogólne pojęcie o języku ZPL.
Tworzenie ZPL w Delphi / C++Builder / Lazarusie
Czy jest więc możliwe wysłanie zwykłego obrazka lub dokumentu "stworzonego tak, aby pasował do etykiety" z edytora tekstu? Czy możemy po prostu "narysować na Canvie, wysłać do drukarki" i pozwolić, aby sterownik sam sobie z tym poradził? Tak, można wysłać, zostanie to wydrukowane i często będzie wyglądało jak prawdziwe. Jedynym problemem jest to, że ZPL i drukarki Zebra są zaprojektowane głównie do tworzenia etykiet wektorowych, które można odczytać maszynowo, a często wynik, ze względu na rasteryzację i skalowanie obrazu w programie / sterowniku nie będzie czytelny dla skanera kodów kreskowych. Jeśli Twoje kody kreskowe nie są rozpoznawane przez skaner, to zazwyczaj masz problem z rasteryzowanym i skalowanym obrazem. A więc stwórzmy poprawnie ZPL z naszej aplikacji Delphi lub Lazarus!
Wykorzystamy platformę FastReport VCL, ponieważ zapisuje ona z Delphi od razu do wymaganego formatu (Zebra Programming Language). Ale możemy wykorzystać więcej możliwości - dodać zdjęcia, tabele, kody kreskowe (i to będą poprawne, odczytywane maszynowo kody kreskowe!). Wiadomo, że nie ma sensu wysyłać do "zebry-drukarki" zdjęć krajobrazów, ale zdjęcie takie jak na początku artykułu - czemu nie, skoro będzie odpowiednie na naszych etykietach!)
Istnieją dwie opcje zapisu wygenerowanego raportu. Pierwsza z nich to zapis poprzez okno podglądu, a druga to zapis bezpośrednio poprzez kod Pascala.
Rozważmy obie opcje.
Do dzieła! Dodajemy nie tylko komponenty formularza potrzebne do stworzenia raportu i podłączenia źródeł danych, ale także komponent do eksportu ZPL!
Zapisywanie ZPL z Delphi / RAD Studio Lazarus z podglądu
Zaletą tej metody jest to, że widzimy co zapisujemy, mamy możliwość porównania podglądu z wynikiem w ZPL. I debugujemy to na naszym komputerze (zamiast używać niefortunnego sprzętu ), gdy projekt wydaje się być gotowy.
Utwórz dokument.
Przed zapisaniem przejrzyj go w oknie podglądu, edytuj wszystko, co Ci się nie podoba.
Kliknij na przycisk "Zapisz".
Wybierz "Plik ZPL". Piszę ten artykuł mając podłączone prawie wszystkie filtry eksportu. W Twoim przypadku (jeśli masz podłączony TYLKO filtr eksportu ZPL) w tym menu nie będzie żadnych innych pozycji (oprócz Prepared Report).
Więcej na temat ustawień:
Zakres stron - zakres stron do zapisania;
Ustawienia eksportu:
- Print As Bitmap - wydruk jako obraz matrycy (NIE NALEŻY tego robić dla kodów kreskowych);
- Break lines - linie łamane;
- Resolution (dpi) - rozdzielczość od 152 do 600 dpi (w rzeczywistości istnieje zestaw wartości predefiniowanych, ograniczonych formatów - możemy je wybrać - są one wymienione poniżej w kodzie);
Zapisz do - zapisanie jako plik na komputerze, wysłanie pocztą lub do magazynu w chmurze;
Otwórz po eksporcie - otwarcie po zapisie.
Zapisywanie ZPL z kodu Delphi / C++Builder / Lazarus
Eksportuj do ZPL: | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
procedure TForm1.Button18Click(Sender: TObject); begin {Generuj raport. Raport musi zostać wygenerowany przed wyeksportowaniem} frxReport1.PrepareReport(); {Określa zakres stron do eksportu. Domyślnie eksportowane są wszystkie strony wygenerowanego raportu} frxZPLExport1.PageNumbers := '2-3'; {Określ, czy raport ma być eksportowany jako obraz} frxZPLExport1.PrintAsBitmap := True; {Ustalenie, czy na końcu każdego wiersza wymagana jest sekwencja znaków końca linii} frxZPLExport1.BreakLines := True; {Ustaw rozdzielczość. Możliwe wartości: d6_dpmm_152_dpi, d8_dpmm_203_dpi, d12_dpmm_300_dpi, d24_dpmm_600_dpi, test1to1}. frxZPLExport1.ZplDensity := d6_dpmm_152_dpi; {Ustaw, czy otworzyć plik wynikowy po eksporcie} frxZPLExport1.OpenAfterExport := False; {Ustaw, czy wyświetlać postęp eksportu (pokaż, która strona jest aktualnie eksportowana)} frxZPLExport1.ShowProgress := False; {Określ, czy ma być wyświetlane okno dialogowe ustawień filtra eksportu} frxZPLExport1.ShowDialog := False; {Ustaw nazwę pliku wynikowego.} {Uwaga: jeśli nie ustawisz nazwy pliku i wyłączysz okno dialogowe filtra eksportu,} {okno dialogowe wyboru nazwy pliku będzie nadal wyświetlane} frxZPLExport1.FileName := 'C:\Output\test.zpl'; {Wyeksportuj raport} frxReport1.Export(frxZPLExport1); end; |
Jak widać, tworzenie i drukowanie etykiet Zebra w Delphi (w aplikacjach dla Windows) i w Lazarusie (w aplikacjach dla Linuksa) jest całkiem proste. Metoda ta jest wykorzystywana w milionach punktów sprzedaży detalicznej na całym świecie.