Witam.
Potrzebuje pomocy/nakierowania na próbę drukowania etykiet na Zebrze. Problem polega na tym, że klient chce mieć możliwość drukowania niestandardowego, którego oryginalne oprogramowanie nie wspiera. Gdzie z logiką i generowaniem kodów (według zaleceń klienta) sobie poradziłem, tak teraz drukowanie tego nie wychodzi. Posłużyłem się silnikiem reportów z DevExpressa ale Zebra nie rozumie kartki A4 i wychodzi milion pustych. Mam wszystkie pliki .lbl oraz mam pliki .prn ale kompletnie nie wiem jak mam się za to zabrać, abym mógł w "języku" zebry przekazać odpowiednio dane do wydruku.
Może stricte nie pomogę, ale przedstawię jak wyglądał nasz case z rozwiązaniem problemów dotyczących drukowania na Zebra.
Do obsłużenia był pacjent Zebra Z4M w najstarszej możliwej wersji (jakiś 2004 rocznik). Chcieliśmy zmodyfikować wewnętrzne oprogramowanie do drukowania w naszym przypadku biletów na coś bardziej nowoczesnego. Na pierwszy ogień poszło napisanie w C# logiki, wyplucie z tego jakiegoś sensownego output'u w języku ZPL i wysłanie do drukarki. Niby wszystko ok, ale jednak wszystko zaczęło się sypać. Zaczynając od przesyłania customowych czcionek do Zebry (co jak loteria raz działało a raz nie), skończywszy na obsłudze polskich znaków czego nagle Zebra postanowiła nie robić.
Po dwóch tygodniach grzebania się i konsultacjach zewnętrznych poszliśmy najprostszą możliwą ścieżką. Z programu wypluwany jest PDF (jakaś najprostsza biblioteka - chyba iText#, rozmiar strony odpowiadający rozmiarowi etykiety) i drukowane na tzw. "pałę" na Zebrze. Zero problemów z czcionkami czy polskimi znakami. Wszystko śmiga idealnie, a skala druku przekracza czasem u nas 100 000 dziennie.
Chętnie podeślę gdzieś repo z implementacją programów (a raczej ich części) w trzech wersjach (korzystając z dll zebry, korzystając z ZPL i korzystając z PDF) ale akurat w pracy została ładowarka do laptopa
No właśnie podejrzewam, że jest możliwe wydrukowanie etykiety z "normalnej" kartki. Trzeba się tylko marginesami pobawić. Ale wtedy, jeśli dobrze rozumiem, musi być jedna etykieta na stronę, nie mogę mieć kilku na jeden kartce?
Nasz case jest taki, że generujemy PDF w którym każda strona ma 12x6 cm i zawiera jeden bilet - biletów jest 1000 - wypluwamy jest PDF z 1000 stron.
Fajnie będzie jeśli opiszesz bardziej szczegółowo jak wygląda sam wydruk. W sensie czy drukujecie ciągiem etykiety czy w jakiś inny sposób.
Abstrahując od tego rozwiązania, mamy jeszcze drukarkę małych klejących etykiet, gdzie na nośniku w drukarce znajdują się dwie takie etykiety w każdym rzędzie. W tym przypadku każdy rząd to dla nas osobna kartka PDF (z tym że to już inna drukarka - marka Seewo)
Ja mam jakieś małe 2cm x 3.2cm, które muszą być wygenerowane w odpowiedniej kolejności. Użytkownik wprowdza tytuł etykiety, liczbę początkową, ilość serii i ilość etykiet na serię np.:
tytuł: NZOZ Vermed
liczba początkowa: 86556100 - 8 znaków
ilość serii: 10
ilość etykiet na serię: 6
LEGENDA
86556 100 - seria
8655610001 - nr etykiety
GENEROWANIE
8655610001
8655610002
8655610003
8655610004
8655610005
8655610006
8655610101 <- zwiększa się seria
8655610102
8655610103
8655610104
8655610105
8655610106
itd...
BARCODE - CODE128-C
JJa drukuje normalnie z raportów devexpresa. Ustawiam w raporcie wymiary strony na 5x3 cm.
NiNie używam wielu stron tylko promieniami dane w kolejnych raportach i wysyłam nowy raport do wydruku. U mnie działa.
A jak robiłeś designerem raport to wybierałeś zwykłą stronę, czy label template?
Ja tworzyłem kilka raportów dla ZEBRA ZD420, drukują się bez problemu. Raporty tworzone w Crystal Reports
Zwykła strona custom size czy jak to się tam nazywa.
Edit
W jednym projekcie drukuję na pełnej taśmie (nie ma przerw pomiędzy etykietami) i tam ma PaperkInd -> Custom i ustawiona tylko szerokość (110mm) bo długośc zależy od danych i do tego mam RollPaper = True
W Innym, normalne etykiety prostokątne 30x50 mm, PaperKind = Custom, PageHeight i PageWidth na 300x500 (jednostka raportu TensOfAMilimiter).
@AdamWox: nie marginesy tylko ROZMIAR STRONY musisz mieć taki jak rozmiar etykiety. Jak się uprzesz i zainstalujesz zebrę jako zwykłą drukarkę windowsową to można z programu zamiast do PDFa drukować od razu na drukarkę
Na tę chwilę uważam sprawę za zamkniętą, ponieważ testowo udało mi się faktycznie devexpressem to wydrukować. Faktyczne wdrożenie dopiero w środę już na sprzęcie klienta gdzie wszystko jest idealnie skonfigurowane. Dzięki ✌
Mam problem w kwestii drukowania tych etykiet. Są niewyraźne. @jacek.placek coś poradzisz?
a z innych programów albo np. testowe z drukarki są OK?
Działa poprawnie tylko z oprogramowania Zebra Designer ale to pewnie dlatego, że drukuje językiem zebry. Na normalnej drukarce (papierowej) jest wszystko dobrze.
moje doswiadczenia na zebrach sa takie ze sprzetowo jest kaprysna i trzeba ja dobrze ustawic, to co pokazujesz to moim zdaniem za male zaczernienie poszukaj w ustawieniach drukarki. albo kalke druga strona zalozyles ;) zobacz czy nic nie zostalo na glowicy, czasami syf sie tam zbiera albo resztki etykiet, kleju itp
zmiana rozmiaru papieru tez jest na zebrach niewygodna, cos z kalibrowaniem wiecznie trzeba kombinowac itp.
Jeśli nie ustawiałeś czegoś dziwnego w Raportach to IMO albo ustawienia sterownika albo drukarki. Ja w Raportach ustawiałem tylko wielkość strony.
Wygląda to dziwnie, może coś się chce przeskalować graficznie? Jaka opcja auto przeskalowania zbyt dużego wydruku?
Kalibracja może pomoże? Może się źle etykietki rozpoznały?
To co @Varran pisze. Kalka (ale jak soft zebry drukuje poprawnie to raczej nie to)?
Zaczernienie? Może soft zebry wysyła w etykiecie parametry zaczernienia i dlatego jest lepiej.
Trzeba przeryć opcje sterownika i parametrów w drukarce.
Nie pamiętam jak jest w zebrze ale w innych w sterowniku niektóre opcje można ustawić w sterowniku lub pozostawić takie jak ustawienia drukarki.
przyznaje ze w swoich etykietach wysylam czysty kod ZPLII, i nie mam w nim zadnych ustawien sprzetowych zebry. Sprzetowo ustawiam wszystko na zebrze, np. kalibruje papier, skaluje etykiete, czy ustawiam zaczernienia itp.
etykiety buduje i sprawdzam tu:
http://labelary.com/viewer.html
jak widac tam jest tylko kod tego co ma byc na etykiecie.
A więc tak... Zmiana zaczernienia pomogła, ustawiłem na maxa tą opcję. Manewrowałem również rozproszeniem i drukuje teraz wyraźnie, ale czytnik sobie nie radzi z czytaniem tych kodów...
To nie jest wyraźne. Naprawdę kod paskowy z softu Zebry ta drukarka wydrukuje normalnie?
Druk w szarościach włączony?
Rozdzielczość wydruku jest inna niż głowica ma?
Ja zawsze miałem głowice 300dpi. Tam może być 200.
Zobacz co masz w e.PrintDocument.DefaultPageSettings.PrinterResolution i e.PrintDocument.PrinterSettings.PrinterResolutions[]
private void button1_Click(object sender, System.EventArgs e) {
ReportPrintTool printTool = new ReportPrintTool(new XtraReport1());
printTool.PrintingSystem.StartPrint += PrintingSystem_StartPrint;
printTool.Print();
}
void PrintingSystem_StartPrint(object sender, PrintDocumentEventArgs e) {
for (int i = 0; i < e.PrintDocument.PrinterSettings.PrinterResolutions.Count; i++)
if (e.PrintDocument.PrinterSettings.PrinterResolutions[i].Kind ==
PrinterResolutionKind.High) {
e.PrintDocument.DefaultPageSettings.PrinterResolution =
e.PrintDocument.PrinterSettings.PrinterResolutions[i];
break;
}
}
Hej
dobra praktyka mówi ze nie drukujemy kodów kreskowych w wzdłuż kierunku wydruku.. Jak tylko głowica zacznie się sypać to kody będą nieczytelne.
Napisz jeszcze czy sa to etykiety termo transferowe czy termiczne.. czyli czy używasz folii do wydruku czy nie
@jacek.placek:
PrinterResolution.Kind = Custom
PrinterResolution.X = 203
PrinterResolution.Y = 203
PrinterResolutions = [High, Medium, Low, Draw, Custom(203, 203)]
Ja drukowałem to wcześniej z podglądu wydruku, ale dopisałem twój kod i dalej jest tak samo. Drukarka ZDesigner S4M-203dpi EPL
.
@sight:
Jest folia.
ok jest folia
zakładam ze masz ta drukarkę zainstalowana na komputerze i ustawiona ze wydruk jest z folia. W sterownika to się ustawia lub w samej drukarce. 200dpi spokojnie wystarczy na ten rodzaj wydruku
Ktoś zapomniał wcześniej o stworzeniu tego kodu kreskowego w zpl... nie głupi pomysł. W sterownikach zebry jest plik exe za pomocą którego możesz potem przesłać ten kod do zebry.
Wracając do Twojego kodu.. a nie możesz zwyczajnie załadować czcionki 39 do systemu a potem wysłać zwyczajnie 3 stringi jako wydruk ?
@jacek.placek:
Próbowałem wszystkich opcji jakie były możliwe. Nic się nie zmienia.
@sight:
Jak mam to zrobić? Drukarkę mam pożyczoną i zainstalowaną na swoim służbowym laptopie. Zmieniałem już każdą opcje w ustawieniach drukowania - zaczernienie, rozproszenie, prędkość wydruku, druk termiczny i termotransferowy, czcionki kodów kreskowych... I dalej nic się nie poprawia. Drukowanie przykładowej etykiety z Zebra Designer pokazuje poprawnie i czytnik je czyta. Jedyna różnica pomiędzy etykietą z DevExpressa, a z Designera to taka, że kod kreskowy z Designera ma "grubsze" linie.
hej
zakładam ze lewa etykieta jest z Twojego programu.. zatem szukasz w google czcionki font 39. Instalujesz ja na komputerze (zakładam ze masz system Windows). Czasem trzeb zrobić restart systemu żeby czcionka została załadowana na 100%. Najprostszy test czy czcionka jest załadowana można zrobi w Word'zie.
Jak juz mam to opanowania to modyfikujesz program tak aby drukował tylko 3 string
string test
string kod_produktu - te gwiazdki w kodzie kreskowym na początku i na końcu są istotne
string kod produktu czy co to tam jest
co do ustawień w sterownikach można to zrobić w tej zakładce.
Na screen'ie jest pokazane ze etykieciarka pracuje termicznie czyli bez folii. U Ciebie to powinno byc ustawienie "Thermal transfer"
ale jak tak patrzę na jakość wydruku no faktycznie jest cos z rozdzielczością.. problem gdzieś leży po stronie programu który tworzy ten wydruk.
Właśnie miałem pisać, że to mam!! Panowie, działa... W konfiguracji XRBarcode
trzeba zmieniać Symbology.CharacterSet = CharsetC
. Domyślnie jest CharsetA
. Jak ja nie lubię jak problemem są takie głupoty...
Dzięki bardzo za czas i pomoc