Source: https://kuutorvaja.eenet.ee/wiki/Printimine
Timestamp: 2019-01-16 20:20:55+00:00

Document:
Printimine – Kuutõrvaja
1 BSD-stiilis printimine
2 Tuuma konfigureerimine
3 Printerite kirjeldusfail
4 Printeri filter
5 Töö formaadi teisendamine
6 Printeri saba
7 lpd deemoni juhtprogramm lpc
8 Võrgu printerile printimine
9 Võrguprinterile printimine
10 Virtuaalne printer
BSD-stiilis printimine
Tavaliselt on UNIXi printimine korraldatud nö BSD-stiilis, mis tähendab, et kasutatakse LPD-d (Line Printer Daemon). LPD-le vastav programmide komplekt on kaasas praktiliselt kõigi levitavate UNIXitega. Et selles veenduda, tuleb teha kindlaks näiteks programmi lpd olemasolu.
Süsteemi käivitamisel alustab teiste seas tööd süsteemi printerideemon lpd, lugedes läbi printerite kirjeldusfaili /etc/printcap ning jääb edasisi korraldusi ootama.
Olgu süsteemis kaks printerit, ps1 ja ps2, mis parasjagu on oma töid saatnud trükki ja muidu printimisega tegelevad mitmed kasutajad. Seda olukorda kirjeldab LPD seisukohast selline skeem
- lpd -  'lpr -P ps2 /home/priit/lilleke.ps' - printeri ps2 sappa töö lisamine
- lpd -  'lprm -P ps1 154' - printeri ps1 sabast töö eemaldamine
- lpd -  /var/spool/lpd/ps1 - printerile ps1 sabast tööde saatmine
- lpd -  /var/spool/lpd/ps2 - printerile ps2 sabast tööde saatmine
Süsteemi lpd ülesandeks on iga tulnud korraldusega seada tegelema uus lpd ja ise jääda ootama järgnevaid korraldusi.
Antud juhul on ta tekitanud neli lpd'd
* Ülemine lpd tegeleb töö saatmisega sappa ehk printeri spuuli. Nimelt LPD printimissüsteem töötab selliselt, et kõik trükitavad tööd asetatakse esmalt
sappa ja trükitakse siis, kui see on süsteemile sobiv. Saba on kataloog, kus printimiseks mõeldud tööd ajutiselt oma järge ootavad.
* Ülevalt teine lpd tegeleb kasutaja korraldusega eemaldada printeri ps1 sabast töö number 154.
* Kaks alumist lpd-d tegelevad printimisega, st nad saadavad printeri sabadest töid printeritesse.
Põhimõtteliselt piisab PostScript faili trükkimiseks PostScript printerile käsust
bash~$ cat lilleke.ps > /dev/lp0
kus /dev/lp0 on printerile vastav seade, kuid seda ei maksa kasutada muidu, kui ainult katsetamiseks.
Printimiseks kasutatakse tavaliselt arvuti paralleelporti ühendatud printerit, mille tarvis tuleb kernelisse kompilleerida sisse vastav toetus. Tehke sellised valikud, 2.2.xx kerneli ja PC korral
General Setup ->     Parallel port support
Character Devices ->     Parallel printer suppor
Peale printeri juhtme ühendamist veenduge, et arvuti BIOSis on printer lubatud ning tema IRQ ja IO ei ole konfliktis teiste seadmete ressurssidega.
Teiseks levinud võimaluseks on kasutada võrguprinterit. Sel juhul pole vaja kernelisse ülaltoodud toetust kompilleerida.
Printerite kirjeldusfail
See fail on lpd konfiguratsioonifail ning selles on defineeritud kõik printerid, mida süsteemi kasutajad saavad kasutada. Igale printerile vastab üks sektsioon, kus näidatakse vastav füüsilise printeri seade. Lisaks saab trükitavate tööde mahtu piirata ning filtrite abil käigult töid erinevatesse formaatidesse teisendada ja printerite kasutust logida.
Lihtsamal juhul, kui te kasutate PostScript printerit ning soovite trükkida PostScript faili, piisab printer kirjeldada näiteks selliselt
ps1:\
sd=/var/spool/lpd/ps1:\
mx#0:\
sh:\
Printeri kirjeldusfaili süntaksi näeb ette, et parameetrid eraldatakse kooloniga (:) ning nad asuvad ühes reas. Rida saab jätkata kasutades kurakaldu (\) viimase sümbolina real.
Näites kasutatud parameetrite tähendused:
* ps1 - printeri nimi, mida kasutatakse printeri poole pöördumisel
* sd - printeri saba kataloog, sellesse paigutatakse printimiseks saadetud tööd oma järge ootama
* mx#0 - näitab maksimaalse prinditava töö suurust; 0 tähendab, et lubatakse printida kuitahes suuri töid
* sh - (supress heades) näitab, et mitte trükkida esimest lehte, kus on vaikimisi kirjas info printeri kasutaja ja tema töö kohta
* lp - printerile vastav füüsiline seade
Kui printeri kirjeldusfailis defineeritakse mitu printerit, siis eraldatakse vastavad sektsioonid omavahel ühe või mitme reavahetusega. Märgiga # algavaid ja tühje ridu ignoreeritakase.
Printeri filter
Töö formaadi teisendamine
Kui teil on kasutada PostScript printer ning te soovite trükkida näiteks Pine'ist ning kontrollida tulemuse välimust, siis on otstarbekas seada tööle filter, mis teisendab ASCII teksti näiteks programmiga a2ps vastavaks PostScriptiks ning see saadetakse edasi printerile
asc1:\
sd=/var/spool/lpd/asc1:\
lp=/dev/lp0:\
if=/var/spool/lpd/asc1/a2ps-filter
Kusjuures filter on kooriku skript, näiteks seesugune
Scripti tarvitamise idee seisneb selles, et kui kasutaja tarvitab tavalisel moel printerit asc1, näiteks
bash~$ w | lpr -P asc1
siis suunatab lpr talle antud faili filtri sisendisse ja filter suunab omakorda enda väljundi, mis on eeldatavasti juba PostScript printeriseadmes.
Teine tüüpiline teisendus tehakse siis, kui teil on kasutada mitte PostScript printer. Sel juhul peate te kasutama filtrina näiteks programmi GhostScript, mis teisendab PostScript faile talle tuntud printerite keelde, näiteks PCL (Printer Command Language). Omades HP LaserJet 4L printerit, võib kasutada sellist filtrit
cat | gs -q -dSAFER -dNOPAUSE -sPAPERSIZE=a4 -sDEVICE=ljet4 -sOutputFile=- -
Kasutatud GhostScripti võtmed
* q - ei anna teateid
* dSAFER - ei luba PostScriptil teha karme asju, näiteks faile kustutada
* dNOPAUSE - trükib järjest
* dPAPERSIZE - määrab paberi suuruse
* sDEVICE - näitab millise printeri keelde teisendatakse
* sOutputFile - kuhu väljund suunatakse
Printeri saba
Kui kasutaja prindib, siis esmalt paigutatakse prinditavale failile vastav töö tavaliselt kataloogi /var/spool/lpd/prinerinimi alla ning kasutaja ei pea ootama seni, kuni printimine on reaalselt toimunud. Sabas võivad korraga oma järjekorda oodata mitmete kasutajate tööd. Saba kataloog peab olema vaid juurkasutajale kirjutatav.
Programmiga lpq saab uurida, mis sabas toimub. Näiteks vaadata printeri ps1 saba
bash~$ lpq -P ps1
Sabast saab töid eemaldada käsuga lprm. Näiteks soovides eemaldada printeri ps1 sabast 24-dat tööd
bash~$ lprm -P ps1 24
lpd deemoni juhtprogramm lpc
Teatud juhtudel on vaja reaalse printeri töö lõpetada, näiteks tahma vahetamiseks, kuid arusaadavalt peavad kasutajad saama endiselt oma töid printida. LPD hoiab neid lihstalt seni sabas, kui printer taas töötada suudab.
lpc kontrollib lpd deemonite tööd, kusjuures kirjeldatud olukorda on võimalik luua selliselt:
bash~$ lpc stop ps1
Kui lpc käivitada ilma argumentideta, siis läheb ta tööle interaktiivses režiimis.
Administraatori jaoks on oluline reguleerida seoses printimisega kahte asja
* töid saadetakse sabast printerile, st printeri deemon töötab
* kasutajalt tulevad tööd asetatakse printeri sappa
Selgitame oluliste lpc käskude tähendust, mis reguleerivad nimetatud kahte asja, käsu süntaks on järgmine
lpc käsk printerinimi
* status - saab vaadata printerinimelise printeri seisu, näiteks
bash# lpc status ps1
7 entries in spool area
ps1 is ready and printing
Antud juhul on näha, et printer ps1 parasjagu trükib, kusjuures sabas ootavad 7 tööd. Peale selle on lubatud sappa tööde lisamine ning loomulikult
* stop - peatada printimine, vajadusel oodatakse kuni käesolev töö lõpeb. Peatatud printeri sappa saab töid edasi saata,st printeri deemoni lõpetamist
* start - peatatud printeri käivitamine, st printeri deemoni käivitamine
* disable - keelatakse tööde lisamine printeri sappa. Sabas olevate tööde printimine jätkub, st printeri deemon jätkab tegevust
* enable - keelatud sabasse saab taas töid lisada
* down - keelatakse sappa tööde lisamine ja lõpetatakse printeri deemon, sama mis disable ja stop
* up - lubatakse taas printida, st käivitatakse printeri deemon, ja töid sappa asetada
* topq - tõstab sabas oleva töö järjekorras esimeseks, näiteks seame printeri ps sabas oleva töö nr 154 esimeseks 'lpc topq ps 154'
* abort - katkestab töö printimise, kuid sappa saab töid lisada
* restart - taaskäivitab printeri deemoni juhul, kui see arusaamatutel põhjustel otsa lõppes
Võrgu printerile printimine
Soovides lubada masina printerit kasutada teise masina kasutajatel, tuleb tekitada näiteks seesugune /etc/hosts.lpd fail
printerless.zoo.tartu.ee
Kusjuures masina printerless printerite kirjeldusfailis tuleb kirjeldada üle võrgu kasutatav printer, näiteks selliselt
rps:\
sd=/var/spool/lpd/rp:\
rm=printeriga.zoo.tartu.ee:\
rp=ps1:\
lp=/dev/null:\
Kui masina printerless kasutajad prindivad printerile rps, siis saadetakse töö edasi üle võrgu masina printeriga.zoo.tartu.ee printerile nimega ps1.
Võrguprinterile printimine
Poodides jagatakse selliseid etherneti külge ühendatavaid karbikesi, millele saab omistada IP-aadressi ja mis põhiline, mille külge saab ühendada printeri. Selliselt tööle seatud printerit nimetatakse võrgupirnteriks.
np:\
sd=/var/spool/lpd/np:\
rm=192.168.1.15:\
rp=raw:
Virtuaalne printer
Kui masinal tegelikult pole printerit, aga mingil põhjusel vajab programm selle olemasolu või soovite lihtsalt katsetada, siis võimaldab LPD luua virtuaalse printeri. Nii korraldatud juhul toimub trükkimine, kuid töö salvestatakse näiteks faili.
Tekitame virtuaalse printeri nimega vp ja seame ta käima nii, et prinditud töö kirjutatakse faili /tmp/vp.ps. Iga uus kirjutab eelmise üle. Lisaks saab kasutades programmi GhostView tulemust ekraanil vaadata.
vp:\
sd=/var/spool/lpd/vp:\
if=/var/spool/lpd/vs/vp.file:
kus filter vs.file on selline
cat > /tmp/vp.ps
Tukkeaeg 6 sekundit on selleks, et katsetamisel näha, kuidas deemonid tulevad ja lähevad.
Pärit leheküljelt "https://kuutorvaja.eenet.ee/w/index.php?title=Printimine&oldid=2787"
Selle lehekülje viimane muutmine: 09:37, 26. jaanuar 2007.

References: ps1
 ps2
 ps2
 ps2
 ps1
 ps1
 ps1
 ps2
 ps1

ps1
 ps1
 ps1
 ps1
 ps1
 ps1
 ps1
 ps1

ps1
 ps1
 ps 154
 ps1