Portál AbcLinuxu, 30. dubna 2025 20:12
Speciální tiskárny v Linuxu
1.3.2013 23:26
| Přečteno: 2216×
| Enterprise stories
|
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í!
Tiskni
Sdílej:
Komentáře
Vložit další komentář
2.3.2013 10:00
Rezza | skóre: 25
| blog:
rezza
| Brno
Re: Speciální tiskárny v Linuxu
2.3.2013 12:56
jkb
Re: Speciální tiskárny v Linuxu
3.3.2013 02:19
RapMan | skóre: 14
| blog:
RapMan
Re: Speciální tiskárny v Linuxu
4.3.2013 00:02
gtz | skóre: 27
| blog:
gtz
| Brno
Re: Speciální tiskárny v Linuxu
4.3.2013 08:18
Max | skóre: 72
| blog:
Max_Devaine
Re: Speciální tiskárny v Linuxu
4.3.2013 12:47
matell
Re: Speciální tiskárny v Linuxu
8.3.2013 10:28
Pff
Re: Speciální tiskárny v Linuxu
Založit nové vlákno •
Nahoru
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.