Portál AbcLinuxu, 8. května 2024 10:39

Speciální tiskárny v Linuxu

1.3.2013 23:26 | Přečteno: 2183× | Enterprise stories | Výběrový blog

Dělám to já, dělá to spousta dalších lidí, ale nikdo o tom nikde nemluví, co je to? Dnes si popovídáme o tisku malých, zpravidla nalepovacích štítků, nebo různých kartiček, vstupenek apod. z Linuxu na termotransferových tiskárnách, podíváme se na několik výrobců těchto zařízení a nakonec jako perličku uvedu ještě, jak tisknout výkresy. Jak už jsem psal, této problematice se internet věnuje celkem málo, přitom ale natisknout nádherný štítek potřebuje prakticky každá firma, takže se tato dovednost dá - pozor cizí slovo - krásně monetizovat.

Nejprve bych stručně popsal, jaký je současný stav obecně. Pro tyto tiskárny jsou nezřídka ovladače pouze pro Windows a protože se často používají k tisku speciálních štítků s barcode, používají se k nim ještě WYSIVYG návrháře štítků, kde se dá nějaký ten barcode lepnout na dva - tři kliky myší. Co je trochu bída, tak tyto softwary jsou prakticky skoro výhradně placené (což by až tak nevadilo), pro Windows (to je horší), s uživatelskou přívětivostí jen lehce převyšující Internet Explorer 6 a GUI vypadá, jako by se nezměnilo od doby, co ho používala Alexandrijská knihovna. To ale nic není - koneckonců já s tím tisknout celou pracovní dobu nebudu, tak je mi to jedno. Hlavní problém je v tom, že tyto aplikace nemají zcela žádnou podporu pro spuštění tisku nějakou externí aplikací a tisk po síti je úplné sci-fi.

Není ovšem potřeba házet flintu do žita, my to zmákneme, stačí k tomu dva kroky - zaprvé vybrat správnou tiskárnu a zadruhé ji dobře připojit, pak už to jde skoro samo.

Takže napřed výrobci - zde jsem zatím měl tu čest setkat se s tiskárnami Zebra, Datamax a Sato.

Z této trojice jednoznačně doporučím tiskárny Zebra - mají podporu přímo v CUPSu, kde se dají všechny parametry krásně naklikat - velikost etikety, "darkness", typ senzoru, zpětný posun, řezačka - naprostý luxus, dokonce to i funguje. Dále, protože máme driver, můžeme do tiskárny jednoduše poslat klidně PDF, nebo libovolný obrázek, CUPS si s tím poradí a něco vytiskne. Takto jsou podporované prakticky všechny Zebry.

Druhé místo v mém žebříčku zaujal "o prsa" Datamax, který sice má taky nějaké nativní drivery, ale moc nefungují - resp. posláním tiskové úlohy se mi tiskárna občas dostala do stavu, kdy se "zasekla" a pomohl jenom restart (tiskárny). Vše se v dobré obrátí, jakmile se přepne tiskárna do režimu kompatibility se Zebrou (musí se v menu) a použijí se ovladače pro Zebru - všechny problémy jako mávnutím kouzelného proutku a můžete sypat štítky jeden za druhým, řešení se ukázalo jako velmi stabilní a provozuschopné.

Třetím výrobcem, se kterým jsem bohužel musel pracovat, je u nás (bohužel) velmi oblíbené Sato (já vyslovuji "Sató") a to je z pohledu Linuxáka katastrofa - ovladače jsou jenom pro Windows a smůla. Hackera ovšem taková drobnost, jako nepřítomnost ovladače, nemůže odradit, že jo, takže si dále popíšeme, jak si s tiskárnou popovídat v jejím přirozeném jazyce, v CUPSu nastavíme v takovém případě "raw". (Popravdě tento zápisek píšu, protože mě zajímá, jak rychle se dostane v Google po zadání "sato linux driver" na první místo. :-) )

Tady k těm potvorám je totiž dostupná dokumentace, která říká, jaké esc sekvence se mají poslat, aby to něco někde vytisklo. Tiskárna sama o sobě má několik fontů, umí sama vygenerovat různé typy barcode, umí tisknout obrázky (bitmapy). Většina tiskových ovladačů prostě vygeneruje bitmapu a tu tam pošle, dělají to i ty speciální programy zmíněné výše. Tisková úloha tak většinou sestává z hlavičky, která obsahuje všechna nastavení (velikost papíru, okraje, počet kopií, "darkness", typ senzoru, zpětný posun...) a pak jsou data - texty a obrázky.

První zádrhel je v tom, že dokumentace sice obsahuje vysvětlení všech možných příkazů, ale je toho tolik, že člověk neví, co do té hlavičky teda dát. Tady se mi nejvíc osvědčila metoda - nastav si tiskárnu ve Windows, nadesignuj si etiketu v nějakém tom superprogramu pro Windows, pošli ji vytisknout a přesměruj tiskovou úlohu do souboru. Hlavičku / patičku je pak možno "vykrást" z tohoto majstrštyku - bývá to cca 10 příkazů, zpětným studiem dokumentace se dá přijít i na to, co to dělá.

Pak následuje design samotného "těla" - je možno jít přes studium nastavení fontů a různých typů barcode, nebo varianta "total bitmap", kdy prostě přes celou etiketu plácnu jednu bitmapu (ghostscript je náš kamarád :-) ). Jenom bych upozornil, že pokud se člověk vydá první cestou, tak už nikdy "ů" nevytiskne.

Jak teda vypadá taková tisková úloha pro Sato? Asi takto:
#!/usr/bin/perl
#
# Hlavicka
#
print "\e##1\x02\n";
print "\eA\eEX0\eAR\eA3H150V001\n";
print "\eCS3\e#E5\eA104801081\eZ\x03C\n";
print "\e##5\x02B\eA\n";
print "\ePS\e\%0\n";
#
# Levy sloupec
#
print "\eV50\eH00\eL0202\eWB1" . <>;
print "\eV120\eH00\eL0101\eWB1Product ID:\n";
my $text = <>; chomp $text;
print "\eV150\eH00\eB103100*$text*\n";
print "\eV255\eH125\eL0101\eWB1$text\n";
print "\eV290\eH00\eL0101\eWB1Production order no:\n";
$text = <>; chomp $text;
print "\eV320\eH00\eB103100*$text*\n";
print "\eV425\eH125\eL0101\eWB1$text\n";
#
# Pravy sloupec
#
print "\eV50\eH450\eL0101\eWB1" . <>;
print "\eV90\eH450\eL0101\eWB1Size:   " . <>;
$text = <>; chomp $text;
print "\eV130\eH450\eL0101\eWB1Power:  $text W\n";
$text = <>; chomp $text;
print "\eV170\eH450\eL0101\eWB1Weight: $text kg\n";
print "\eV220\eH450\eGM";
printf ("%05d,", -s "/u/abas/data/win/ovw/ce_logo.bmp");
open PIC, "/u/abas/data/win/ovw/ce_logo.bmp";
binmode PIC;
while (< PIC >) {print}
print "\eV220\eH620\eL0303\eWB1IP44";
print "\eV350\eH720\eGM";
printf ("%05d,", -s "/u/abas/data/win/ovw/company_logo.bmp");
open PIC, "/u/abas/data/win/ovw/company_logo.bmp";
binmode PIC;
while (< PIC >) {print}
#
# Paticka
#
print "\e~A1\eQ" . <> . "\eCL0\eZ\x03\n";
Tiskneme pak pomocí něčeho jako:
./label data | lpr -Pqc
Zebra by vypadala podobně, jenom má jiné příkazy.

Co se týká připojení tiskárny, tady ty potvory mají často paralelní nebo sériový port, zbytek je "optional". Důrazně doporučuji koupit k nim síťovou kartu, pokud není, veškeré problémy vyřeší printserver za 1000Kč. Nikdy to nepřipojujte k PC s Windows a nesdílejte přes Sambu! Ne že by to nefungovalo, ale... No to nebudu vysvětlovat, na to si každý přijde sám. :-)

No a ještě tady mám jeden takový tiskařský oříšek. :-) Byl jsem postaven před problém, jak vytisknout na štítky výkresy výrobku. Nic složitého říkáte si, ale výkresy jsou většinou hodně veliké, když je člověk převede do bitmapy a zmenší, tenké čáry prostě zmizí. Copak asi udělá toto?
convert -resize 5000x5000 -blur 30 -black-threshold 99% -resize 500x500 -black-threshold 90% 
Závěrem bych popřál hodně zdaru a šťastně vytištěných štítků na všechny ty fantastické produkty, co se tady vyrábí!        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Rezza avatar 2.3.2013 10:00 Rezza | skóre: 25 | blog: rezza | Brno
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Odpovědět | Sbalit | Link | Blokovat | Admin
Moc pekny zapisek! Kdyz jsem tohle naposledy delal v minule praci a na Windows, tak mam stejny postreh. Ten kdo delal ten soft na navrh stitku v nem urcite ten stitek nedelal - ono je to totiz nemozne :D (Uz si nepamatuji, co to bylo zac). No a pak tisk - ano, kolega nas soft navrhl tak, ze pry jedne blbe nekonecne smycce pri jedne oprave tisku se zastavila cela 50 metrova linka o nekolika stanovistich. A to mi k tomu ani nechtel dat zdrojaky, ze to prece bude fungovat :D
2.3.2013 12:28 Pavel Vymetálek
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Mám stejnou odstrašující zkušenost s těmi jejich softwary. Neodpustím si poznámku, že jde o firmu Etisoft.

Hned jak jsem pochopil, že Zebru umí Cups, bylo po starostech. Viz http://www.abclinuxu.cz/hardware/vystupni-zarizeni/tiskarny/citizen-cl-s631.
2.3.2013 10:35 xxxxxxxxxxx | skóre: 13 | blog: rhrtshrth
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Odpovědět | Sbalit | Link | Blokovat | Admin
jak by šlo hromadně tisknout nějaký pdfka, výkresy? Různá velikost, ruzná tiskárna třebas? :-) Díkes moc! :-)
xvasek avatar 4.3.2013 11:08 xvasek | skóre: 21 | blog: | Zlín
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Pojmenuj si tiskárny lp0 - lp5 a pak to vytiskni něčím jako:
find . -name *.pdf -exec sh -c 'lpr -Plp$(( $RANDOM%5 )) {}' \;
:-)
4.3.2013 14:30 xxxxxxxxxxx | skóre: 13 | blog: rhrtshrth
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
díkes moc! :-)
2.3.2013 12:56 jkb
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Odpovědět | Sbalit | Link | Blokovat | Admin
my zakaznikum doporucujeme thermotransfer tiskarny CAB. Je to tady domaci produkt a kdyz neco nefunguje, tak tam muze clovek prinejhorsim i zajet. Drivery jsou take pro win+lin k dispozici, ale uprimne receno je nepouzivame. Vetsina zakazniku stejne pouziva to software Codesoft (TEKLYNX) pod windows, ktere ma sve vlastni drivery pro vsechny zname tiskarny. U nekterych zakazniku pouzivame ten nativni jazyk, presne jak je popsano v blogu a tiskneme pres lpd primo z linuxu na tiskarnu.

Jeden zakaznik si koupil tu CAB A4+ s rozlisenim 600 dpi a doufal, ze bude na stitek tisknout u maly obrazek produktu. Pres vsechnu snahu se to nepodarilo uspokojive vyresit, i kdyz to vyrobci nepriznaji, podle me ten termotransfer prinzip proste to rozliseni 600x600 neutahne a ty body se jakoby rozpliznou a vysledek je k nekoukani. Ty narocne grafiky musi byt budto specielne pro to udelane, ale zy by clovek vzal neco z firemnich podkladu a chtel to vytisknout , to podle me nejde. (tedy ted hovorim o etiketach 7x9 cm, kde je pro obrazek misto tak 3x2 cm).
xvasek avatar 4.3.2013 10:49 xvasek | skóre: 21 | blog: | Zlín
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Příloha:
U mě ty obrázky vypadají asi jako v příloze, etiketa - resp. její vyfocená část - je asi 10x7 cm. Generuje se to just in time z obrázků, které jsou velké řádově dva tisíce na dva tisíce bodů, ale dělal jsem i z PDF s výresem (bez kót). Zmenšením takových obrázků by zůstaly jenom vlasové čáry, nebo vůbec žádné, proto je potřeba napřed pořádně "ztlustit" čáry, pak zmenšit, pak vytisknout. Tisknuto je to přes PDF (nativní výstup ze systému, který prodáváme) právě na ten Datamax, protokol Zebra, Hlava 200 DPI.

Jinak co se týká hlavy, 600 DPI je nesmysl, to ten termotransfer prostě nedá, tak malý bod se neumí "odlepit" z té pásky. Už 300 DPI je kousek za hranicí možností, 200DPI zase kousek pod. Rozdíl mezi 200 a 600 DPI nebude nakonec v detailnosti, ale v tom, že šikmé čáry nebudou zubaté.
3.3.2013 02:19 RapMan | skóre: 14 | blog: RapMan
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Odpovědět | Sbalit | Link | Blokovat | Admin
ahoj, v praci pouzivame tiskarny zebra, konkretne zm400. Mame to pripojeny pres seriovy port, tzv. masku (layout) lze naklikat v prislusnem softu nebo pouzit primo programovaci jazyk ZPL. Pole v layoutu se naplni daty a ty se poslou po seriovem portu a dojde k vytisteni, zadne ovladace nejsou potreba.
gtz avatar 4.3.2013 00:02 gtz | skóre: 27 | blog: gtz | Brno
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Odpovědět | Sbalit | Link | Blokovat | Admin
No měl jsem co dočinění s X-3200E od Argoxu. Hodně slušná průmyslová tiskárna (300 dpi) s vynikajícím poměrem cena/výkon. Rozchodit pod linuxem se mi to podařilo jen s Kbarcode s emulací Zebra.
- nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
Max avatar 4.3.2013 08:18 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Odpovědět | Sbalit | Link | Blokovat | Admin
My teď nasazujeme nemálo kiosků a vyhrála Zebra.
Zdar Max
Měl jsem sen ... :(
xvasek avatar 4.3.2013 11:11 xvasek | skóre: 21 | blog: | Zlín
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Tak to gratuluju, to máte tisky prakticky "zadarmo". Já většinou přijdu až k tiskárně, co ji mám rozjet, která už tam nějaký ten týden leží a značku si moc vybírat nemůžu...
4.3.2013 12:47 matell
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Odpovědět | Sbalit | Link | Blokovat | Admin
pridam skusenost s tlacou smartkariet (cmyk+zapis na cip) na tlaciarnach Evolis (Pebble, Dualys, Zenius): samotna tlac obrazku na smartkartu je v pohode, maju linuxovy driver v podobe .deb balicku, tlaciaren sa da konfigurovat pekne cez cups.

so zapisom na cip smartkarty je to trochu horsie - jednak enkoder je dodavany tretou stranou (napriklad Gemalto), cize je potrebne rozbehnut pcscd s drivermi pre dany enkoder, a este je potrebne mat binarku od evolisu (vola sa evocom), pomocou ktorej sa cez ttyUSB hovori, ze karta sa ma posunut, obratit, atd.

cize proces je asi nasledovny: 1. cez cups potlacit obrazok 2. cez evocom ttyUSB povedat napriklad "Sis", co znamena posun smartkartu ku Gemalto encoderu 3. cez pcscd rozhranie povedat Gemalto encoderu, aby zapisal na kartu data 4. cez evocom poslat prikaz "Se", aby tlaciaren vyplula karticku.
8.3.2013 10:28 Pff
Rozbalit Rozbalit vše Re: Speciální tiskárny v Linuxu
Odpovědět | Sbalit | Link | Blokovat | Admin
A o Brotheru by něco nebylo?

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.