Tiskanje v Linuxu, HOWTO Grant Taylor <gtaylor+pht@picante.com> v3.26, 15. februar 1999 To je slovenski prevod spisa Linux Printing HOWTO z dne 15. februarja 1999. Vsebuje podatke o ustvarjanju, predogledu, tiskanju in faksi- ranju èesarkoli pod Linuxom (in v splo¹nem pod drugimi Unixi). ______________________________________________________________________ Kazalo 1. Uvod 1.1 Zgodovina 1.2 Pravna za¹èita 2. Kako tiskati 3. Tiskalni¹ke naprave jedra 3.1 Naprava lp 3.2 Naprava parport (jedra >= 2.1.33) 3.3 Naprave na zaporednih vratih 4. Podprti tiskalniki 4.1 Postscriptni tiskalniki 4.2 Nepostscriptni tiskalniki 4.3 Zapiski, specifièni tiskalnikom 5. Katero èakalni¹ko programje? 6. Kako to deluje, osnova 7. Kako nastaviti zadeve, osnova 7.1 Tradicionalna nastavitev lpd 7.2 Dovoljenja datotek 8. Nabava tiskalni¹kega programja 9. Re¹itve prodajalcev 9.1 Red Hat 9.2 Debian 9.3 Druge distribucije 10. Ghostscript 10.1 Klicanje Ghostscripta 10.2 Fine nastavitve izhoda Ghostscripta 10.2.1 Izhodni polo¾aj in velikost 10.2.2 Gama, velikost pik, itd. 11. Kako tiskati na tiskalnik prek omre¾ja 11.1 Na gostitelju z Unix/lpd 11.1.1 Z rlpr 11.1.2 Z lpd 11.2 Na tiskalnik v Win95, WinNT, LanManager, ali Samba 11.3 Na tiskalnik pod NetWare 11.4 Na tiskalnik pod EtherTalk (Apple) 11.5 Na HP ali drug tiskalnik omre¾ja ,ethernet` 11.5.1 Na starej¹e HP-je 11.6 Poganjanje 11.7 Iz Windows 11.8 Iz raèunalnika Apple 11.9 Iz NetWare-a 12. Tiskalniki le-za-Windows 12.1 Preusmerjevalnik v Ghostscriptu na Windows 12.2 Program pbm2ppa 13. Kako tiskati na faks 13.1 Uporaba faks-modema 13.2 Uporaba oddaljenih tiskalni¹kih storitev 14. Kako narediti nekaj, kar je vredno tiskanja 14.1 Opisni jeziki 14.2 Urejevalniki besedila WYSIWYG (kar vidi¹, to dobi¹) 15. Predogled reèi za tiskanje na zaslonu 15.1 PostScript 15.2 TeXove dvi 15.3 Adobe PDF 16. Zaporedni tiskalniki pod lpd 16.1 Postavitev v printcap 16.2 Starej¹i zaporedni tiskalniki, ki izgubljajo znake 17. Zasluge ______________________________________________________________________ 1. Uvod Spis Printing HOWTO naj bi vseboval vse, kar morate vedeti o nastavljanju tiskalni¹kih opravil na va¹ih raèunalnikih z Linuxom. Kot je tudi sicer pogosto v ¾ivljenju, je to malo bolj zapleteno od mi¹karskega sveta podjetij Microsoft in Apple, a zato tudi malo bolj fleksibilno in prav gotovo la¾je za upravljanje na velikih lokalnih omre¾jih. Ta spis je strukturiran tako, da bo veèina ljudi morala prebrati le prvo polovico. Veèina tukaj zbranih bolj obskurnih in od polo¾aja odvisnih informacij je v drugi polovici, in jo lahko zlahka najdete v kazalu, medtem ko bodo podatke, zbrane v razdelkih 9 in 10, verjetno potrebovala veèina ljudi. Ker je razlièica 3.x ponovno napisan spis, je veliko podatkov iz prej¹njih izdaj izgubljenih. To je storjeno naèrtno, saj so natisnjeni prej¹nji HOWTO-ji obsegali 60 strani in premogli pripovedovalno nit mrtve ¾elve. Èe tukaj ne najdete odgovora, vas spodbujamo, da (a) pregledate prej¹nje angle¹ke verzije na spletni strani Printing HOWTO Home Page <http://www.picante.com/~gtaylor/pht/> in (b) mi po¹ljete sporoèilo, kaj bi moralo biti tukaj, pa ni. Na spletni strani Printing HOWTO Home Page <http://www.picante.com/~gtaylor/pht/> najdete zadnjo angle¹ko originalno verzijo tega spisa, seveda jo najdete tudi na Metalabu (metalab.unc.edu) in va¹em prijaznem lokalnem zrcalnem stre¾niku LDP. Slovenska spletna razlièica je dostopna na <http://www.lugos.si/delo/slo/HOWTO-sl/Printing-HOWTO-sl.html>, tekstovna, postscriptna, DVI, PDF in SGML pa na <ftp://ftp.lugos.si/pub/lugos/doc/HOWTO-sl/>. 1.1. Zgodovina To je tretja generacija, se pravi, tretja popolna predelava, spisa Printing HOWTO (PHT). Kronologija je tak¹na: 1. Zaradi preveè vpra¹anj o tiskanju v novièarski skupini comp.os.linux, sem leta 1992 napisal printing-howto in ga objavil. Ta spis je prehitel projekt HOWTO-jev za nekaj mesecev in je bil prvi spis imenovan ,howto`. Ta izdaja je bila v navadni kodi ASCII. 2. Po vkljuèitvi v projekt HOWTO-jev se je spis Printing-HOWTO zdru¾il s spisom Lpd FAQ Briana McCauleya <B.A.McCauley@bham.ac.uk>; skupaj sva soavtorjevala novonastalemu PHT nekako dve leti. Na doloèeni toèki sva vkljuèila delo Karla Auerja <Karl.Auer@anu.edu.au>. Ta generacija PHT je bila pisana v formatu TeXinfo, in dostopna v formatih PostScript, HTML, ASCII in Info. 3. Po veè kot leto trajajoèemu gnitju in propadanju spisa PHT ter neuspe¹nem poskusu pridobitve novega vzdr¾evalca, sem ponovno napisal tole razlièico. Ta generacija spisa PHT je v formatu Linuxdoc-SGML (po novem se imenuje ,paket SGML-Tools`). 1.2. Pravna za¹èita Ta dokument je pravno za¹èitil (C) Grant Taylor. Prosim, kopirajte in raz¹irjajte ga na ¹iroko, a ne spreminjajte besedila ali izpu¹èajte mojega imena. Slovenski prevajalec je Roman Maurer in za slovenski prevod velja takisto. 2. Kako tiskati Èe ste ¾e nastavili tiskalni¹ki stre¾nik lpd za izpis na va¹em tiskalniku, ali je to namesto vas storil upravnik va¹ega sistema ali prodajalec sistema, se morate le ¹e nauèiti uporabe ukaza lpr. To podroèje in podroèje upravljanja s tiskalni¹kimi vrstami pokriva spis Printing Usage HOWTO <http://www.lugos.si/delo/slo/HOWTO-sl/Printing- Usage-HOWTO-sl.html>. Èe pa imate, po drugi strani, nov sistem ali nov tiskalnik, boste tako ali drugaèe morali nastaviti tiskalni¹ka opravila, preden boste lahko z njim tiskali. Berite naprej! 3. Tiskalni¹ke naprave jedra 3.1. Naprava lp Jedro sistema Linux (<=2.1.32), poskrbi za eno ali veè od naprav /dev/lp0, /dev/lp1, in /dev/lp2, èe ste le podporo teh naprav vkljuèili med prevajanjem ali posebej nalo¾ili (izhod cat /proc/devices mora vsebovati napravo lp, èe je nalo¾ena). Te naprave se ne doloèajo dinamièno, paè pa vsaka naprava ustreza doloèenemu strojnemu vhodno/izhodnemu (V/I) naslovu. To pomeni, da je lahko va¹ prvi tiskalnik znan kot naprava lp0 ali lp1, odvisno od va¹e strojne opreme. Le preizkusite oboje. Nekateri uporabniki so poroèali, da sistem ne zazna njihovih dvosmernih vrat lp, èe uporabljajo starej¹i enosmerni tiskalni¹ki kabel. Preverite, da imate spodoben kabel. Gonilnikov za plip in lp ne morete poganjati hkrati na katerihkoli ¾e vratih. Lahko pa imate kadarkoli en ali drug gonilnik nalo¾en roèno, ali s kerneld razlièice jedra 2.x (ali poznih 1.3.x). Èe pozorno nastavite prekinitve in podobne zadeve, lahko baje poganjate plip na enih vratih in lp na drugih. Neka oseba je storila tako s popravljanjem gonilnikov; ¾eljno prièakujem poroèilo o uspehu nekoga, ki mu je to uspelo le z bistro ukazno vrstico. Obstaja majhen pripomoèek imenovan tunelp <http://www.picante.com/~gtaylor/pht/man/tunelp.8.html>, s katerim lahko (kot root) uglasite uporabo prekinitev naprave lp v Linuxu, polling rate, in druge izbire. Jedro (od 1.3.x naprej) bo sprejelo izbiro lp= za nastavitev prekinitev ali V/I naslovov, èe je ta mo¾nost vgrajena v jedro: When the lp driver is built in to the kernel, you may use the LILO/LOADLIN command line to set the port addresses and interrupts that the driver will use. Syntax: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]] For example: lp=0x378,0 or lp=0x278,5,0x378,7 ** Note that if this feature is used, you must specify *all* the ports you want considered, there are no defaults. You can disable a built-in driver with lp=0. Èe je podpora nalo¾ena kot modul v jedru razlièice Linuxa 2 ali zadnjih 1.3.x, je mogoèe doloèiti V/I naslove in prekinitvene vrstice v ukazni vrstici za klic insmod (ali v /etc/conf.modules, èe naj prizadene kerneld) z uporabo obièajne skladnje. Parametri so io=port0,port1,port2 in irq=irq0,irq1,irq2. Preberite stran o ukazu insmod <http://www.picante.com/~gtaylor/pht/man/insmod.1.html> v referenènem priroèniku za veè informacij o tem. **Za tiste med vami, ki (kot jaz) nikoli ne najdete standardnih ¹tevilk vrat, ko jih potrebujete, so podane v drugem primeru zgoraj. Druga vrata (lp0) so na naslovu 0x3bc. Pojma nimam, katero prekinitev navadno uporabljajo. Izvorna koda gonilnika vzporednih vrat v Linuxu je v datoteki /usr/src/linux/drivers/char/lp.c. 3.2. Naprava parport (jedra >= 2.1.33) Zaèen¹i z jedri 2.1.33 (in na voljo kot popravek za jedro 2.0.30), je naprava lp le odjemalec nove naprave parport. Naprava parport dodatno odpravlja veliko te¾av, ki so morile stari gonilnik naprave lp -- lahko deli vrata z drugimi gonilniki, dinamièno dodeljuje dostopna vzporedna vrata ¹tevilkam naprav, namesto, da vsiljuje fiksno korespondenco med V/I naslovi in ¹tevilkami vrat, in tako naprej. Prihod naprave parport je omogoèil mno¾ico novih gonilnikov za vzporedna vrata za stvari, kot so pogoni ZIP, CD-ROM-i, diski Backpack, in tako naprej. Nekateri od teh gonilnikov so na voljo tudi v razlièicah za jedra 2.0.x; ozrite se po Spletu. Gonilnik parport bom obdelal podrobneje, ko ga bom zaèel uporabljati tudi sam. Do takrat lahko preberete datoteko Documentation/parport.txt v izvorni kodi va¹ega jedra, ali pogledate na spletno stran parport <http://www.cyberelk.demon.co.uk/parport.html>. 3.3. Naprave na zaporednih vratih Naprave na zaporednih vratih se v Linuxu obièajno imenujejo podobno kot /dev/ttyS1. Pripomoèek stty <http://www.picante.com/~gtaylor/pht/man/stty.1.html> vam bo dovoljeval interaktivni pregled ali nastavitev zaporednih vrat; setserial <http://www.picante.com/~gtaylor/pht/man/setserial.8.html> vam pomaga nadzorovati nekaj dodatnih atributov in nastaviti prekinitve (IRQ) in V/I naslove za nestandardna vrata. Veè o zaporednih vratih v Linuxu lahko najdete v spisu Serial-HOWTO <http://metalab.unc.edu/mdw/HOWTO/Serial-HOWTO.html>. Èe uporabljate poèasen zaporedni tiskalnik s kontrolo pretoka (flow control), lahko ugotovite, da so nekatera od va¹ih tiskalni¹kih opravil odrezana. To je lahko zaradi zaporednih vrat, katerih privzeto obna¹anje je èi¹èenje neprene¹enih znakov iz vmesnega pomnilnika po 30 sekundah od trenutka zaprtja naprave za ta vrata. Vmesni pomnilnik lahko vsebuje do 4096 znakov, in èe va¹ tiskalnik uporablja kontrolo pretoka in je dovolj poèasen, da ne more sprejeti vseh podatkov iz vmesnega pomnilnika niti po 30 sekundah, ko tiskalni¹ko programje zapre zaporedna vrata, se zadnji del vsebine vmesnega pomnilnika izgubi. Ta problem lahko diagnosticirate z ukazom cat datoteka > /dev/ttyS2 Èe ta ukaz popolnoma izpi¹e kraj¹e datoteke, dalj¹e pa le odrezano, tièi zajec v tem grmu. 30-sekundni èasovni interval lahko nastavite kot izbiro closing_wait v ukazni vrstici za klic setserial (razlièica 2.12 in poznej¹e). Zaporedna vrata stroja se navadno inicializirajo s klicem setserial v zagonski datoteki rc.serial. Klic za nastavitev tiskalni¹kih zaporednih vrat lahko spremenite tako, da vstavite closing_wait hkrati z drugimi izbirami za nastavitev teh vrat. 4. Podprti tiskalniki Jedro Linuxa najveèkrat podpira vsak tiskalnik, ki ga priklopite na zaporedna ali vzporedna vrata, a obstajajo stvari, pri katerih morate biti previdni, in tiskalniki, ki jih ne boste mogli uporabiti, èetudi lahko (elektrièno mi¹ljeno) komunicirajo z Linuxom. V glavnem so med temi nezdru¾ljivimi tiskalniki tisti, ki se zana¹ajo na ,,Windows Printing System``. (Pogosto so nedoloèno oznaèeni z oznako ,,for Windows``, ali imenovani ,,tiskalniki GDI``.) Ti tiskalniki ne delujejo z Linuxom. Sploh nimajo nobene ,,pameti``, in se zana¹ajo na procesor raèunalnika za opravljanje veèine dela, ki ga je tradicionalno moral opravljati tiskalnikov procesor. ®al se to delo lahko opravi le z gonilniki, ki jih dobavi proizvajalec, in ki delujejo le pod Microsoft Windows. Torej ne kupujte tak¹nih tiskalnikov za uporabo v Linuxu. (Èe ¾e imate tak tiskalnik, obstajajo ovinki, ki preprièajo Linux, da tiska na njem, a so precej nerodni in jih sam nikoli nisem preizkusil. Glejte razdelek ,,Tiskalniki le-za-Windows`` v tem sestavku.) 4.1. Postscriptni tiskalniki Kar se tièe tiskalnikov, ki pa delujejo z Linuxom, je najbolj¹a izbira nakup tiskalnika z vgrajeno podporo za PostScript. Skoraj vse programje v Unixu izdeluje tiskalni¹ki izhod v PostScriptu, torej je oèitno lepo imeti tiskalnik, ki direktno podpira PostScript. ®al je podpora PostScriptu redka izven podroèja laserskih tiskalnikov, in navadno predstavlja drag dodatek. Programje za Unix in zalo¾ni¹ka industrija na splo¹no sta posvojila Postscript kot standardni tiskalni¹ki krmilni jezik. To se je zgodilo zaradi veèih razlogov: Timing Postscript je bil sestavni del tiskalnika Apple Laserwriter, popolnega spremljevalca raèunalniku Macintosh in tiskalnika, ki je v veliki meri odgovoren za revolucijo namiznega zalo¾ni¹tva v osemdesetih letih. Je neodvisen od naprave Programe v Postscriptu lahko po¾enete tako, da tvorijo izhod na toèkovnem zaslonu, vektorskem zaslonu, faksirni napravi, ali tiskalni¹kem mehanizmu skoraj katerekoli vrste, brez sprememb izvornega programa. Postscriptni izhod bo izgledal enako na katerikoli postscriptni napravi, vsaj v mejah zmogljivosti tiskalnika. Pred stvaritvijo oblike PDF so ljudje izmenjevali na zvezi kompleksne spise v obliki Postscript. Edini razlog, da se ta standard ni ,,prijel`` je bil, da stroji z Windows navadno niso vkljuèevali pregledovalnikov za Postscript, zato je podjetje Adobe doloèilo hiperpovezave in komprimiranje za Postscript, ter rezultatu reklo ,,PDF``, raz¹irjalo pregledovalnike za novo obliko in na¹lo tr¾i¹èe za njihova ,,precejevalna`` orodja (Adobe Distiller). Vendar sem malce skrenil s poti ... Je pravi programski jezik Postscript je popoln programski jezik; v njem lahko pi¹ete programe, ki poènejo skoraj karkoli. To je predvsem uporabno za doloèanje podprogramov na zaèetku va¹ega programa za veèkratno reprodukcijo zapletenih zadev v va¹em spisu: tako lahko doloèite logotipe ali velik napis ,,VZOREC`` v ozadju. Je odprt standard Postscript je popolnoma doloèen v javno dostopnih knji¾nih zbirkah (ki jih lahko najdete v vsaki dobri knjigarni). Èeprav ga je razvil Adobe in ponuja njegove poglavitne komercialne izvedbe, tudi drugi proizvajalci, kot Aladdin, izdelujejo neodvisno napisane izvedbe. 4.2. Nepostscriptni tiskalniki Èe nimate (veèjega) proraèuna, potrebnega za nakup tiskalnika PostScipt, lahko uporabljate katerikoli tiskalnik, ki ga podpira Ghostscript, prosti interpreter za PostScript, uporabljan namesto pravega tiskalnika s postscriptno podporo. Spletna stran Ghostscript Home Page <http://www.cs.wisc.edu/~ghost/> vsebuje seznam podprtih tiskalnikov in podatke o statusu novih in poskusnih gonilnikov. Vedite, da ta stran na¹teva tiskalnike, podprte v zadnji razlièici Ghostscripta, medtem, ko veèina distribucij Linuxa izhaja z nekako zastarelimi razlièicami Ghostscripta, zaradi licence. Na sreèo obstaja navadno vnaprej pakirana sve¾a razlièica Ghostscripta, dostopna v podroèju s prispevki (angl. contrib area) posameznih distribucij. Prosim, pomagajte izbolj¹ati spletno stran o podpori tiskalnikov v Ghostscriptu s svojimi poroèili o uspehu ali neuspehu, kot zahtevajo. Podjetje Adobe ima zdaj nov tiskalni¹ki jezik imenovan ,,PrintGear``. Mislim, da gre za zelo poenostavljen jezik v binarnem formatu z nekaj dedi¹èine PostScripta, a brez zdru¾ljivosti z njim. In nisem sli¹al, da bi ga Ghostscript podpiral. A nekateri tiskalniki PrintGear podpirajo druge jezike kot PCL, in ti tiskalniki bodo delovali v Linuxu (le èe se izvedba PCL nahaja v tiskalniku in ne v gonilniku za Windows). 4.3. Zapiski, specifièni tiskalnikom Ta razdelek je, in bo vedno, nepopoln. A katerakoli informacija, ki sem jo dal, mora biti vedno pravilna, torej pojdimo: Canon Canon izdeluje vrsto brizgalnih tiskalnikov. Canon BJ-10ex Neko poroèilo predlaga, da bo va¹ Canon deloval veliko bolje v naèinu Epson LQ (nastavite ga s stikalom dip). Menda je bil izhod v naèinu Canon prekinjen ali napaèen. Èeprav je v Ghostscriptu zelo eksplicitna podpora za Canon, torej imate lahko sreèo. BJ-200 Modela 200 in 210 delujeta v èrno-belem naèinu. Glejte stran Patricka Lamberta <http://linux.fastethernet.net/canon- bj.html> za veè informacij. BJC-4000 Mnogi tiskalniki iz serije 4000 delujejo z gonilnikom bjc600. BJC-7000 Nekateri ali vsi tiskalniki serije 7000 so namenjeni le tiskanju v Windows; Canon noèe izdati podrobnosti o programiranju teh tiskalnikov. Lexmark Lexmark (vèasih del podjetja IBM, se mi zdi) izdeluje veliko tiskalnikov; vendar je veliko od njih tiskalnikov le za Windows, vkljuèno z: * Color Jetprinter 1000 * Color Jetprinter 1020 (a ne Business Edition) * Color Jetprinter 2030 * Color Jetprinter 2050 * Color Jetprinter 2070 * Color Jetprinter 7000 (vendar berite nadaljevanje) * Color Jetprinter 7200 * Winwriter 100 * Winwriter 150c * Winwriter 200 Drugi tiskalniki Lexmark lahko delujejo ali pa tudi ne. Optra Color 40 in 45 Vse vrste reèi, kot so poravnava, nalaganje kasete, in tako naprej, se opravljajo pod programskim nadzorom (v Windows). Vendar je Lexmark priskrbel C-jevski program za Unix, s katerim lahko izvedete te stvari v Linuxu. Dostopen je z mojega podroèja za jemanje <http://www.picante.com/~gtaylor/download/printing/cartutil.c>. Hvala Daleu Sniderju za nadlegovanje Lexmarka in pridobitev tega programa. Jetprinter 7000 Obstaja zgodnji gonilnik <http://bimbo.fjfi.cvut.cz/~paluch/l7kdriver/> Henryka Palucha, ki ponuja èrnobelo tiskanje loèljivosti 600 dpi. Mogoèe bo ta gonilnik deloval tudi s tiskalniki Lexmark modelov 3200, 5000, 5700 ali 7200, vendar to ni bilo preizku¹eno in bo verjetno potrebno dodatno ugla¹evanje. Epson S shemo Uniprint v Ghostscriptu 5.x so dobro podprti razlièni modeli Epson Stylus Color. Glejte domaèo stran Michaela Holvea <http://eunuchs.org/epson/index.html> za veè informacij. NEC SuperScript NEC-ove serije poceni tiskalnikov ponujajo podporo PCL in PrintGear in so v splo¹nem privlaèni tiskalniki. ®al je, v veèini teh modelov, podpora PCL omejena na PCL nivoja 4.5, ki omogoèa tiskanje le na 300 dpi. Nivoji PCL 5e, 6, in vi¹ji omogoèajo izhod s 600 dpi. Hewlett Packard DeskJet Deluje veèina modelov HP DeskJet, a obstajajo razliène vrste le-teh. Veèina od njih je tiskalnikov PCL razlièice 3; za njih (in vse druge tiskalnike PCL 3) obstaja gonilnik hpdj, ki ga raz¹irja Martin Lottermoser <ftp://ftp.pdb.sni.de/pub/utilities/misc/hpdj.html>. Tiskalniki 710, 720C, 722C, 820C in 1000C so tiskalniki PPA, ki se lahko uporabljajo v èrnobeli tehniki s pripomoèkom pbm2ppa Toma Normana <http://www.rpi.edu/~normat/technical/ppa/>. LaserJet Tudi veèina tiskalnikov LaserJet deluje povsem dobro. Idealna je mo¾nost tiskanja Postscripta, a tudi brez tega bo delovala podpora za PCL, ki jo ponuja Ghostscript. JetDirect S tiskalniki HP, opremljenimi s tehnologijo JetDirect (tj., ethernetni tiskalniki), lahko upravljate z uporabo programja WebJet <http://www.hp.com/go/webjetadmin>, ki ga HP ponuja za Linux. 5. Katero èakalni¹ko programje? Do nedavnega je bila izbira uporabnikov Linuxa preprosta -- vsi so uporabljali dobri stari lpd, prepisan skoraj dobesedno iz kode Net-2 za sisteme BSD. Tudi dandanes veèina prodajalcev prilaga to programje. A to se zaèenja spreminjati. Sistemi, podobni SVR4, vkljuèno s Sunovim Solarisom, prihajajo s povsem drugaènim tiskalni¹ko èakalnim (spooling) paketom, osredotoèenim na lpsched. In obstajajo znaki, da bodo nekateri prodajalci Linuxa prestopili k ponudbi LPRng, precej manj antièni izvedbi tiskalni¹kega èakanja, ki je prosto dostopna. LPRng je precej la¾ja za upravljanje na velikih namestitvah (berite: veè kot en tiskalnik, katerikoli zaporedni tiskalniki ali katerikoli èudni omre¾ni tiskalniki ne-lpd) in ima manj stra¹ljivo nakljuèno programsko osnovo kot obièajni lpd. Paket LPRng se lahko tudi povsem upravièeno pohvali, da je varno zasnovan -- ni nobenih binarnih datotek SUID in podpira avtentifikacijo s PGP ali Kerberos. Trenutno je, èeprav v luèi novih mo¾nosti, lpd verjetno v redu za veèino uporabnikov Linuxa. Èeprav ni najsodobnej¹i sistem, deluje v redu, ko je enkrat nastavljen, in je dobro razumljiv in ob¹irno dokumentiran v raznih knjigah o Unixu. Èe ¾elite veè podatkov o LPRng, preverite spletno stran LPRng Web Page <http://www.astart.com/lprng/LPRng.html>. Prihodnje razlièice tega HOWTO-ja bodo vkljuèevale informacije o uporabi tako LPRng, kot tudi obièajnega lpd. 6. Kako to deluje, osnova Èe ¾elite pravilno usposobiti tiskanje, morate razumeti, kako deluje sistem lpd. Lpd pomeni Line Printer Daemon (pritajeni stre¾nik vrstiènega tiskalnika), in se nana¹a v razliènih kontekstih tako na tiskalni¹ki stre¾nik, kot tudi na celo zbirko programov, ki poganjajo tiskalni¹ko èakanje. Ti so: lpd Èakalni¹ki pritajeni stre¾nik. Eden od teh teèe in nadzoruje vse na stroju, in po eden teèe na vsak tiskalnik, ko tiskalnik tiska. lpr Uporabni¹ki èakalni ukaz. Lpr stopi v stik z lpd in vstavi novo tiskalni¹ko opravilo v èakalno vrsto. lpq Navede opravila v tiskalni¹ki èakalni vrsti. lpc Nadzorni ukaz sistema lpd. Z lpc lahko ustavite, za¾enete, preuredite itd., opravila v tiskalni¹ki èakalni vrsti. lprm lprm odstrani opravilo iz tiskalni¹ke èakalne vrste. Kako se to prilega skupaj? No, ko se sistem za¾ene, se po¾ene lpd. S pregledom datoteke /etc/printcap ugotovi za katere tiskalnike bo urejal èakalne vrste. Vsakiè, ko kdo po¾ene lpr, lpr kontaktira lpd skozi poimenovano vtiènico (angl. named socket) /dev/printer, in nakrmi lpd z datoteko za izpis in nekaj podatki o tem, kdo tiska in kako naj stvar natisne. Lpd potem izpi¹e datoteko na primernem tiskalniku. Sistem lp je bil prvotno naèrtovan za vrstiène tiskalnike -- se pravi, ljudje so veèinoma tiskali besedila v ASCII. Izka¾e pa se, da je potrebno le malo dodatnega opisa, da naredimo lpd delujoè povsem dobro za dana¹nja tiskalni¹ka opravila, ki so pogosto v obliki PostScript, ali dvi, ali v tekstovni obliki, ali ... 7. Kako nastaviti zadeve, osnova 7.1. Tradicionalna nastavitev lpd Najmanj¹a sestava lpd-ja naredi sistem, ki sprejema datoteke v èakalno vrsto in jih natisne. Ne ozira se na to, ali jih va¹ tiskalnik sploh razume, in vam verjetno ne bo dovoljeval izdelavo privlaènega izhoda. Vseeno je to prvi korak k razumevanju, zato berite naprej! Èe ¾elite dodati tiskalni¹ko èakalno vrsto v lpd, morate dodati vnos v datoteko /etc/printcap, in narediti nov èakalni imenik pod /var/spool/lpd. Vnos v /etc/printcap izgleda podobno: # LOKALNI djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :sh: To definira èakalno vrsto, imenovano lp, dj, ali deskjet, ki èaka v imeniku /var/spool/lpd/dj, z nobenih omejitev velikosti za posamezno opravilo, ki tiska na napravo /dev/lp0, in, ki nima naslovne strani (z imenom osebe, ki tiska, ipd.) dodane v ospredje tiskalni¹kega oprav ila. Zdaj z ukazom man printcap preberite stran v referenènem priroèniku za printcap Vse zgornje izgleda zelo preprosto, a tukaj je skrit kavelj -- èe ne po¹iljate datotek, ki jih DeskJet 500 lahko razume, bo ta DeskJet tiskal èudne stvari. Na primer, èe po¹ljete povsem obièajno tekstovno datoteko Unixa na tiskalnik deskjet, bo ta dobesedno razumel znake za novo vrstico, in dobili bomo: To je prva vrstica. To je druga vrstica. To je tretja vrstica. in tako naprej. Tiskanje postscriptne datoteke v to èakalno vrsto nam bo dalo èudovit izpis ukazov PostScripta, izpisanih s tem ,,stopnièastim efektom``, a nobenega uporabnega izhoda. Gotovo je potrebno veè dela, in to je namen filtriranja. Tisti med vami, ki dobro opa¾ate in ste prebrali referenèno stran o printcap, ste morda opazili atribute èakalne vrste (angl. spool attributes) if in of. No, if, ali vhodni filter, je natanko to, kar tukaj potrebujemo. Èe napi¹emo majhen ukazni skript imenovan filter, ki doda znake za pomik na zaèetek vrste (angl. carriage return, CR) pred znake za konec vrstice, bomo s tem odpravilo stopnièavost besedila. Torej moramo v na¹ vnos v printcap dodati vrstico z if: lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :if=/var/spool/lpd/dj/filter:\ :sh: Preprost filtrirni skript filter bi lahko bil: #!perl # Zgornja vrstica mora v resnici vsebovati polno pot do # tolmaèa perl. # Ta skript mora biti izvedljiv: chmod 755 filter while(<STDIN>){chop $_; print "$_\r\n";}; # Morda boste ¾eleli konèati z znakom za izmet strani: # print "\f"; Èe naredimo zgornje, smo dobili èakalno vrsto, ki zna tiskati datoteke z obièajnimi besedili v Unixu in dobi smiselne rezultate. (Da, obstaja ¹tiri milijone bolj¹ih naèinov, da napi¹emo ta filter, a le malo jih je nazornej¹ih. Naredite to bolj uèinkovito.) Edina preostala te¾ava je, da tiskanje navadnega teksta pravzaprav ni preveè moderno -- gotovo bi bilo bolje, èe bi lahko tiskali PostScript in druge urejene ali grafiène tipe izhodov. No, da, bilo bi, in to je preprosto storiti. Metoda je preprosta raz¹iritev zgornjega filtra za popravo vrstic. Èe napi¹ete filter, ki lahko sprejme poljuben tip datoteke kot vhod in v vsakem primeru naredi izhod èistokrvnega DeskJeta, potem imate zares bister tiskalni¹ki stre¾nik! Tak filter se imenuje filter magic. Ne utrujajte se s pisanjem tega, razen, èe morate tiskati res èudne zadeve -- na mre¾i obstaja veliko ¾e napisanih. APS Filter je med najbolj¹imi, morda pa ima ¾e va¹a distribucija Linuxa orodje za nastavitev tiskalni¹kih reèi, ki vam vse to olaj¹a. 7.2. Dovoljenja datotek Zaradi ljudske zahteve vkljuèujem spodaj izpis dovoljenj zanimivih datotek mojega sistema. Obstaja veliko bolj¹ih naèinov, da to storite, idealno z uporabo binarnih datotek SGID in ne tako, da vse napravite SUID root, a tak¹en sistem sem dobil ob nakupu in zame deluje. (Povsem odkrito, èe vam va¹ prodajalec ne more prodati niti delujoèega stre¾nika lpd, ste v godlji.) -r-sr-sr-x 1 root lp /usr/bin/lpr* -r-sr-sr-x 1 root lp /usr/bin/lprm* -rwxr--r-- 1 root root /usr/sbin/lpd* -r-xr-sr-x 1 root lp /usr/sbin/lpc* drwxrwxr-x 4 root lp /var/spool/lpd/ drwxr-xr-x 2 root lp /var/spool/lpd/lp/ Lpd se mora trenutno poganjati kot root, da se lahko povezuje z nizko- o¹tevilèenimi vrati opravila lp. Verjetno mora po povezovanju postati UID lp.lp ali nekaj takega, a mislim da, lenuh, ne postane. 8. Nabava tiskalni¹kega programja Veliko vnaprej napisanih filtrirnih paketov (in drugega, s tiskalnikom povezanega, programja) je dostopnih na Metalabu <ftp://metalab.unc.edu/pub/Linux/system/printing/>. Tam lahko najdete pripomoèke kot so psutils, a2ps, mpage, dvitodvi, flpr, itd. Vèasih je bilo tam zunaj precej paketov, ki so se trudili olaj¹ati nastavitev tiskalnika. Verjetno ¹e vedno obstajajo, a eden od najbolj¹ih in najbolj sve¾ih je paket APS Filter Andreasa Klemma, ki ima menujsko usmerjen konfigurator datoteke printcap in ureja praktièno katerikoli tip vhoda, ki si ga lahko predstavljate. Èe va¹ prodajalec ne prilo¾i prijetnega orodja za nastavitev tiskalnika, je APS Filter stvar za vas. 9. Re¹itve prodajalcev Ta razdelek je po definiciji nepopoln. Po¹ljite mi podrobnosti o va¹i najljub¹i distribuciji. 9.1. Red Hat Red Hat ima upravni¹ko orodje z grafiènim uporabni¹kim vmesnikom v nadzorni plo¹èi (control-panel), s katerim lahko dodajate oddaljene tiskalnike in tiskalnike na lokalnih napravah. Omogoèa vam izbiro tiskalnika, podprtega v GhostScriptu, in datoteko naprave Unixa, na katero naj tiska, potem namesti tiskalni¹ko vrsto v /etc/printcap in izpi¹e kratek magièni filter PostScript-in-ASCII, ki temelji na gs in programu nenscript. Ta re¹itev deluje precej dobro in je v veèini primerov enostavna za nastavitev. Red Hat odpove, kadar imate tiskalnik, ki ni podprt z njihovim standardnim Ghostscriptom (ki je GNU, ne aladdin Ghostscript, in ki podpira manj tiskalnikov). Poglejte v zgornje zapiske o specifiènosti tiskalnikov in na stran o zdru¾ljivosti ghostscripta s tiskalniki, èe ugotovite, da ne morete izkoristiti polno zmogljivosti va¹ega tiskalnika z originalnim programjem Red Hat. 9.2. Debian Debian ponuja izbiro med navadnim lpd in LPRng; LPRng je verjetno bolj¹a izbira, razen, èe so va¹e potrebe skromne (se pravi: en sam tiskalnik na zaporednih vratih). Zdi se mi, da Debian ponuja tudi izbiro skriptov za nastavitev tiskalnika, kot sta paketa magicfilter in APC Filter; poskusite uporabiti enega od teh skriptov. 9.3. Druge distribucije Prosim, po¹ljite mi podatke, kaj poènejo druge distribucije! 10. Ghostscript Ghostscript je neverjetno pomemben program za tiskanje v Linuxu. Veèina tiskalni¹kega programja sistemov Unix ustvarja PostScript, ki je tipièen, 100 US$ vreden, dodatek tiskalniku. Ghostscript je, po drugi strani, prost program, in lahko ustvari jezik va¹ega tiskalnika iz PostScripta. Ko ga zve¾ete z va¹im vhodnim filtrom za lpd, vam daje navidezni postscriptni tiskalnik in neznansko poenostavi ¾ivljenje. Ghostscript je dostopen v dveh oblikah. Komercialna razlièica Ghostscripta, imenovana Aladdin Ghostscript, se lahko prosto uporablja za osebno uporabo, a ne sme biti raz¹irjana s komercialnimi distribucijami Linuxa. V splo¹nem je pribli¾no leto dni pred prostim Ghostscriptom; trenutno, na primer, podpira format Portable Document Format (PDF) za Adobe Acrobat, medtem, ko ga starej¹i Ghostscripti ne podpirajo. Prosta razlièica Ghostscripta je GNU Ghostscript, in je preprosto postarana razlièica, ki jo je podjetje Aladdin prijazno podarilo projektu GNU. (Priznanje Aladdinu za ta dogovor; veè izdelovalcev programja bi moralo tako podpirati prosto programje.) Karkoli ¾e poènete s programom gs, povsem se preprièajte, da ste ga pognali z izbiro za prepreèitev dostopa do datotek (-dSAFER). PostScript je polno funkcionalen jezik in slab program v PostScriptu vam lahko povzroèi precej¹en glavobol. Ko smo ¾e pri PDF, ta je pravzaprav le malo veè kot organiziran PostScript v komprimirani datoteki. Ghostscript lahko obvlada vhod v PDF prav tako, kot lahko obvlada PostScript. Torej ste lahko prvi v va¹i ulici, ki ima tiskalnik, zmo¾en tiskati PDF. 10.1. Klicanje Ghostscripta Tipièno se ghostscript po¾ene s katerimkoli magiènim filtrom, za katerega se odloèite, a zaradi razhro¹èevalnih namenov ga je pogosto priroèno pognati direktno. gs -help vam izpi¹e kratki informativni seznam izbir in dostopnih gonilnikov (bodite pozorni na to, da je to seznam gonilnikov, podprtih ob prevajanju, ne celoten seznam vseh dostopnih gonilnikov). V testne namene lahko po¾enete gs takole: gs izbire -q -dSAFER -sOutputFile=/dev/lp1 test.ps. 10.2. Fine nastavitve izhoda Ghostscripta Obstaja veliko stvari, ki jih lahko storite, èe niste zadovoljni z izhodom programa gs (pravzaprav lahko storite karkoli se vam prekleto ljubi storiti, saj imate izvorno kodo). 10.2.1. Izhodni polo¾aj in velikost Polo¾aj, velikost in aspect ratio slike na strani, se nadzoruje v ghostscriptu z gonilnikom, odvisnim od tiskalnika. Èe se vam zdi, da prihajajo va¹e strani iz tiskalnika preveè kratke ali predolge, ali prevelike za faktor dve, boste morda ¾eleli pogledati modul z izvorno kodo za va¹ gonilnik in nastavili parametre, da bodo ravno prav¹nji za vas. ®al je vsak gonilnik drugaèen, tako da vam ne morem toèno povedati, kaj morate nastaviti, a veèina kode je razumno dobro komentirane. 10.2.2. Gama, velikost pik, itd. Veèina ne-laserskih tiskalnikov trpi zaradi dejstva, da so njihove pike precej velike. Rezultat je pretemna slika. Èe imate ta problem, morate uporabiti svojo prenosno funkcijo (angl. transfer function). Preprosto ustvarite naslednjo datoteko v knji¾niènem imeniku ghostscripta in dodajte njeno ime v klicu gs prav pred pravo datoteko. Morda boste morali presku¹ati prave vrednosti, ki ustrezajo va¹em tiskalniku. Manj¹e vrednosti dajo svetlej¹i izpis. Posebej, èe va¹ gonilnik uporablja Floyd-Steinbergov algoritem rasterizacije barv, so nizke vrednosti (0.2--0.15) verjetno dobra izbira. ---8<---- odre¾ite in posnemite kot "gamma.ps" ----8<--- %! %prenosne funkcije za CMYK (cian, ¹krlatna, rumena, èrna) {0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer ---8<------------------8<--- S temi nastavitvami je mogoèe tudi popraviti tiskalnike, ki imajo nekak¹ne barvne napake. Èe naredite kaj takega, priporoèam uporabo datoteke colorcir.ps, ki pride poleg ghostscripta (v podimeniku examples/), kot testno stran. 11. Kako tiskati na tiskalnik prek omre¾ja Ena od lastnosti stre¾nika lpd je tudi zmo¾nost tiskanja prek omre¾ja na tiskalnike, ki so fizièno prikljuèeni na drugaèen stroj. S pazljivo kombinacijo filtrirnih skriptov in izbranih pripomoèkov lahko pripravite lpr do transparentnega tiskanja na tiskalnike na vseh vrstah omre¾ij. 11.1. Na gostitelju z Unix/lpd Èe ¾elite dovoliti oddaljenim strojem tiskanje na va¹em tiskalniku, morate na¹teti te stroje v datoteki /etc/hosts.equiv ali /etc/hosts.lpd. (Pozor, na¹tetje v hosts.equiv ima tudi druge uèinke; preprièajte se, da veste, kaj poènete, èe tam navedete nek stroj.) Tiskanje na svojem tiskalniku lahko dovolite tudi le posameznih uporabnikom drugih strojev s tem, da uporabite atribut rs; preberite stran ukaza lpd v referenènem priroèniku. 11.1.1. Z lpd Za tiskanje na drugem stroju napravite podoben vnos v datoteko /etc/printcap: # ODDALJENI djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :rm=stroj.tam.nekje.ustanova.si:\ :rp=printername:\ :lp=/dev/null:\ :sh: Opazite, da je na lokalnem stroju ¹e vedno èakalni imenik, ki ga ureja lpd. Èe je oddaljen stroj zaseden ali ni prikljuèen, tiskalni¹ka opravila èakajo na lokalnem stroju, dokler jih ni mogoèe poslati. 11.1.2. Z rlpr Ukaz rlpr lahko uporabite za po¹iljanje tiskalni¹kih opravil neposredno v èakalno vrsto oddaljenega stroja, ne da bi morali posebej nastavljati lpd. To je najbolj uporabno v polo¾ajih, ko le obèasno tiskate na razliène tiskalnike. Iz najave programa rlpr: Rlpr uporablja TCP/IP za po¹iljanje opravil na stre¾nike lpd kjerkoli na omre¾ju. Za razliko od lpr, ni potrebno, da so oddaljeni tiskalniki eksplicitno znani stroju, s katerega ¾elite tiskati (npr. prek datoteke /etc/printcap) in je torej precej bolj fleksibilen in potrebuje manj administracije. rlpr lahko uporabljate povsod tam, kjer lahko uporabljate tradicionalni lpr, in je nazaj zdru¾ljiv s tradicionalnim BSD-jevim ukazom lpr. Glavna moè, ki jo daje rlpr je moè oddaljenega tiskanja s kjerkoli, kamorkoli, ne glede na nastavitve sistema s katerega ¾elite tiskati. Deluje lahko kot filter, prav kot tradicionalni lpr, zato lahko odjemalci kot so netscape, xemacs, itd., ki se izvajajo na oddaljenem stroju, tiskajo na va¹em lokalnem stroju z malo truda. Rlpr je dostopen na MetaLabu <ftp://metalab.unc.edu/pub/Linux/system/printing/>. 11.2. Na tiskalnik v Win95, WinNT, LanManager, ali Samba Obstaja spis Printing to Windows mini-HOWTO, ki vsebuje veè informacij kot jih najdete tukaj. Mogoèe je preusmeriti èakalno vrsto lpd skozi program smbclient (del zbirke samba) na tiskalni¹ko storitev SMB, poèivajoèo na TCP/IP. Samba vkljuèuje skript, imenovano smbprint, ki to stori. Na kratko, postavite konfiguracijsko datoteko za doloèen tiskalnik, na katerega tiskate, v èakalni imenik (spool directory) in namestite skript smbprint kot if. Vnos v /etc/printcap je tak¹en: lp|remote-smbprinter:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lp:\ :if=/usr/local/sbin/smbprint: Za veè podatkov, kako to sestaviti, morate prebrati dokumentacijo znotraj skripta smbprint. Uporabite lahko tudi smbclient in oddate datoteko neposredno v tiskalni¹ko storitev SMB, ne da bi vkljuèevali lpd. Glejte stran v referenènem priroèniku (man smbclient). 11.3. Na tiskalnik pod NetWare Zbirka ncpfs vkljuèuje pripomoèek imenovan nprint, ki poskrbi za enako funkcionalnost kot smbprint, le za NetWare. Paket ncpfs lahko dobite na MetaLabu. Iz vnosa LSM razlièice 0.16: S paketom ncpfs lahko name¹èate pogone va¹ega stre¾nika Net Ware pod Linuxom. Lahko tudi tiskate v tiskalni¹ke vrste NetWarea in uvr¹èate tiskalni¹ke vrste NetWarea v tiskalni¹ki sistem Linuxa. Potrebujete jedro 1.2.x ali 1.3.54 in veèje. ncpfs ne deluje s katerimkoli jedrom pod 1.3.54. Èe ¾elite pripraviti nprint do delovanja èez lpd, napi¹ite majhen ukazni skript za izpis standardnega vhoda (stdin) na NetWareov tiskalnik, in jo namestite kot vhodni filter (if) za tiskalni¹ko vrsto za lpd. Dobili boste nekaj takega: sub2|remote-NWprinter:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/sub2:\ :if=/var/spool/lpd/nprint-script: Skript nprint-script lahko izgleda pribli¾no takole: #! /bin/sh # Najprej preizkusite raèun "guest" brez gesla! /usr/local/bin/nprint -S net -U name -P passwd -q printq-name - 11.4. Na tiskalnik pod EtherTalk (Apple) Paket netatalk vkljuèuje nekaj takega kot nprint in smbclient. Drugi so dokumentirali postopek za tiskanje na in iz omre¾ja Apple veliko bolje, kot ga bom sam kdajkoli; glejte spis Linux Netatalk-HOWTO <http://thehamptons.com/anders/netatalk/>. 11.5. Na HP ali drug tiskalnik omre¾ja ,ethernet` HP-ji in nekateri drugi tiskalniki pridejo skupaj z omre¾nim vmesnikom na katerega lahko neposredno tiskate s pomoèjo lpd. Uporabljati morate navodila, prilo¾ena va¹em tiskalniku ali njegovemu omre¾nemu prikljuèku, a splo¹nem lahko tak¹ni tiskalniki delujejo z lpd in imajo eno ali veè èakalnih vrst na katere lahko tiskate. HP, na primer, lahko deluje s podobno datoteko printcap: lj-5|remote-hplj:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lj-5:\ :rm=ime.tiskalnika.si:rp=raw: Tiskalniki HP Laserjet z vmesniki Jet Direct v splo¹nem podpirajo dve vgrajeni vrsti za lpd -- surovo (,,raw``), ki sprejema PCL (in morda tudi PostScript) in tekstovno (,,text``), ki sprejema navaden ASCII (in samodejno odpravi efekt stopnic). Èe imate tiskalnik z JetDirect Plus3 s tremi vhodnimi vrati, se vrste imenujejo ,,raw1``, ,,text2``, in tako naprej. Bodite pozorni na to, da je podjetje ISS identificiralo veèje ¹tevilo napadov, ki blokirajo vmesnike HP Jetdirect. Veèina od teh se je zgodila od zaèetka jeseni 1998. V velikem okolju, posebej v takem velikem okolju, kjer nekateri tiskalniki ne podpirajo PostScripta, je lahko uporabno ustvariti poseben tiskalni¹ki stre¾nik, na katerega tiskajo vsi stroji in na katerem teèejo opravila GhostScripta. Va¹ Linux lahko torej deluje kot èakalni stre¾nik za tiskalnik, tako, da lahko uporabniki va¹ega omre¾ja konèajo svoja tiskalna opravila hitro in nadaljujejo z delom, ne da bi morali èakati, da bo tiskalnik natisnil izpis drugega uporabnika. To je priporoèeno tudi, èe imate nepopravljive stare tiskalnike HP Jetdirect; zmanj¹uje verjetnost blokiranja tiskalnika (angl. printers wedging). Za kaj takega, napravite èakalno vrsto na va¹em Linuxu, ki ka¾e na HP LJ z omre¾no podporo (kot zgoraj). Zdaj nastavite vse odjemalce va¹e mre¾e LAN, da bodo kazali na èakalno vrsto Linuxa (npr. lj-5 v zgornjem primeru). Nekateri mre¾ni tiskalniki HP oèitno ne upo¹tevajo nastavitev naslovne strani, ki jo po¹ljejo odjemalci; njihovo notranje narejeno stran lahko izkljuèite tako, da se s telnet prikljuèite na tiskalnik, dvakrat pritisnete Enter, napi¹ete ,,banner: 0`` in potem ,,quit``. Obstajajo tudi druge nastavitve, ki jih lahko tako spremenite; napi¹ite ,,?`` za seznam. 11.5.1. Na starej¹e HP-je Nekateri tiskalniki (in omre¾ne tiskalni¹ke ,,èrne ¹katle``) podpirajo le krasne majhne povezave TCP brez dodatnega protokola. V tej kategoriji so opazni zgodnji modeli kartic JetDirect (vkljuèno z nekaterimi JetDirectEx). V bistvu morate za tiskanje na tak tiskalnik odpreti povezavo TCP na doloèenih vratih (tipièno 9100, ali 9100, 9101 in 9102 na ¹katlah s tremi vrati) in noter natlaèiti va¹e tiskalni¹ko opravilo. LPRng ima vgrajeno podporo za tlaèenje tiskalni¹kih opravil na nakljuèna vrata TCP, a z BSD-jevim lpd to ni tako preprosto. To lahko storite, med drugim, v Perlu: #!/usr/bin/perl # Hvala Danu McLaughlinu, ker je napisal izvorno razlièico # tega skripta (in Jimu W. Jonesu, ker je sedel poleg Dana, ko # mi je pisal za pomoè ;) $fileName = @ARGV[0]; open(IN,"$fileName") || die "Can't open file $fileName"; $dpi300 = "\x1B*t300R"; $dosCr = "\x1B&k3G"; $ends = "\x0A"; $port = 9100 unless $port; $them = "bach.sr.hp.com" unless $them; $AF_INET = 2; $SOCK_STREAM = 1; $SIG{'INT'} = 'dokill'; $sockaddr = 'S n a4 x8'; chop($hostname = `hostname`); ($name,$aliases,$proto) = getprotobyname('tcp'); ($name,$aliases,$port) = getservbyname($port,'tcp') unless $port =~ /^\d+$/;; ($name,$aliases,$type,$len,$thisaddr) = gethostbyname($hostname); ($name,$aliases,$type,$len,$thataddr) = gethostbyname($them); $this = pack($sockaddr, $AF_INET, 0, $thisaddr); $that = pack($sockaddr, $AF_INET, $port, $thataddr); if (socket(S, $AF_INET, $SOCK_STREAM, $proto)) { # print "socket ok\n"; } else { die $!; } # Give the socket an address. if (bind(S, $this)) { # print "bind ok\n"; } else { die $!; } # Call up the server. if (connect(S,$that)) { # print "connect ok\n"; } else { die $!; } # Set socket to be command buffered. select(S); $| = 1; select(STDOUT); # print S "@PJL ECHO Hi $hostname! $ends"; # print S "@PJL OPMSG DISPLAY=\"Job $whoami\" $ends"; # print S $dpi300; # Avoid deadlock by forking. if($child = fork) { print S $dosCr; print S $TimesNewR; while (<IN>) { print S; } sleep 3; do dokill(); } else { while(<S>) { print; } } sub dokill { kill 9,$child if $child; } 11.6. Poganjanje if za oddaljene tiskalnike Èudna posebnost lpd je, da se if ne po¾ene za oddaljene tiskalnike. Èe ugotovite, da morate pognati if, lahko to storite tako, da naredite dvojno èakalno vrsto in prevrstite opravilo. Na primer, poglejte tole datoteko printcap: lj-5:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lj-5:\ :if=/usr/lib/lpd/filter-lj-5: lj-5-remote:lp=/dev/null:sh:rm=ime.tiskalnika.si:\ :rp=raw:sd=/var/spool/lpd/lj-5-raw: V tej luèi je skript filter-lj-5 tak¹en: #!/bin/sh gs <izbire> -q -dSAFER -sOutputFile=- - | \ lpr -Plj-5-remote -U$5 Izbira -U za lpr deluje le, èe je lpr pognan pritajeno (angl. daemon) in pravilno nastavi ime po¹iljatelja opravila v ¹e enkrat poslano vrsto. Verjetno morate uporabiti bolj robustno metodo za doloèitev uporabni¹kega imena, saj v nekaterih primerih to ni peti argument. Glejte stran referenènega priroènika o printcap. 11.7. Iz Windows Tiskanje iz odjemalca z Windows (ali morda z OS/2) na stre¾nik z Linuxom je direktno podprto èez SMB z uporabo paketa SAMBA, ki podpira tudi deljenje datotek med datoteènim sistemom Linuxa in odjemalci z Windows. Samba vkljuèuje precej popolno dokumentacijo, obstaja tudi dober spisek pogosto zastavljenih vpra¹anj z odgovori, ki pokriva to temo. Na svoji ¹katli z Linuxom lahko nastavite magièni filter in tiskate skozi njega PostScript, ali pa uporabljate posebne tiskalniku specifiène gonilnike na vseh strojih z Windows in imate za njih èakalno vrsto brez vsakr¹nih filtrov. Zana¹anje na gonilnike v Windows lahko v nekaterih primerih da bolj¹i izpis, a je malce te¾avnej¹e administrativno opravilo, èe imate veliko ¹katel z Windows. Zato najprej poskusite PostScript. 11.8. Iz raèunalnika Apple Netatalk podpira tiskanje z odjemalcev Apple èez EtherTalk. Glejte spletno stran Netatalk HOWTO Page <http://thehamptons.com/anders/netatalk/> za veè informacij. 11.9. Iz NetWare-a Paket ncpfs vkljuèuje demonski stre¾nik pserver, ki ga lahko uporabite za ustvarjanje opravila za tiskalni¹ko èakalno vrsto NetWare-a. Kakor razumem, ta sistem potrebuje NetWare, grajen na Bindery, kot je 2.x, 3.x, ali 4.x z omogoèenim povezovalnim dostopom. Za veè podatkov o ncpfs in programu pserver glejte mesto za FTP ncpfs <ftp://ftp.gwdg.de/pub/linux/misc/ncpfs/>. 12. Tiskalniki le-za-Windows Kot sem ¾e omenil, so nekateri tiskalniki inherentno nepodprti, saj ne razumejo obièajnega tiskalni¹kega jezika in namesto tega uporabljajo procesor raèunalnika za izdelavo bitne slike, ki se nato s fiksno hitrostjo pretoèi v tiskalnik. V nekaterih primerih ti tiskalniki razumejo nekaj obièajnega, kot je PCL, a pogosto ne. V nekaterih (zares poceni) primerih, tiskalnik niti ne uporablja obièajne vzporedne povezave, temveè je odvisen od proizvajalèevega gonilnika za emulacijo tega, kar bi moralo biti strojno podprto obna¹anje (najpomembnej¹e - rokovanje). V vsakem primeru obstaja nekaj mo¾nih ovinkov, èe ste ¾e obtièali s tak¹no polomijo. 12.1. Preusmerjevalnik v Ghostscriptu na Windows Obstaja tiskalni¹ki gonilnik za Windows (imenovan mswinpr2), ki po¾ene tiskalni¹ko opravilo skozi Ghostscript, preden ga zares natisne. (Nekaj kot filter if v lpd-ju za Unix.) Obstaja tudi nov gonilnik za Ghostscript, ki tiska z uporabo klicev GDI v Windows. Èe vzamemo to dvoje skupaj, naj bi(tm) to dovoljevalo stroju z Windows tiskanje PostScripta na tiskalnik le-za-Windows s proizvajalèevim gonilnikom. Èe vam uspe to usposobiti, lahko potem sledite zgornjim navodilom o tiskanju iz Linuxa preko omre¾ja na tiskalnik sistema Windows. S tem boste dovolili Unixom (in drugim Windows, Mac, itd.) tiskanje na va¹em polomljenem tiskalniku. Se pravi, tega nisem nikoli posku¹al, ker nimam tiskalnika ,,winprinter``, zato se lahko va¹e izku¹nje razlikujejo. Vse programje lahko dobite na domaèi strani paketa Ghostscript. 12.2. Program pbm2ppa Nekateri tiskalniki HP uporabljajo tako imenovano arhitekturo ,,Printing Performance Architecture`` (kar je marketin¹ki izraz za ,,prepoceni smo, da bi podpirali PCL``). Ta je po ovinkih podprta s prevajalnikom pbm2ppa, ki ga je napisal Tim Norman. V bistvu uporabljate ghostscript za predelavo PostScripta v rastrsko sliko formata pbm, in potem uporabite pbm2ppa za predelavo v rastrski format ppa, ki ga razume va¹ tiskalnik. Ta program lahko zdaj pride tudi kot gonilnik za ghostscript. Programje za ppa lahko dobite na domaèi strani ppa <http://www.rpi.edu/~normat/technical/ppa/>; pbm2ppa podpira nekatere modele HP-jev 720, 820, in 1000; za veè podatkov o tiskalni¹ki podpori ppa preberite dokumentacijo, ki pride poleg paketa. 13. Kako tiskati na faks 13.1. Uporaba faks-modema Obstaja veliko faksirnih programov, ki vam omogoèajo faksiranje in sprejemanje dokumentov. Eden najkompleksnej¹ih je HylaFax Sama Lefflerja, dostopen s ftp.sgi.com. Podpira vse mogoèe reèi od veè modemov do oddajanja (angl. broadcasting). SuSE izdaja odjemalec Java HylaFax, ki baje deluje na katerikoli javanski platformi (vkljuèno z Windows in Linuxom). Za veèino platform obstajajo tudi nejavanski faksirni odjemalci: Linux lahko skoraj zagotovo zadovolji va¹e omre¾ne faksirne potrebe. Dostopna je tudi ¹e bolj¹a izbira za veèino ¹katel z Linuxom; efax, preprost program za po¹iljanje faksov. Program mgetty lahko po¹ilja fakse (in na nekaterih modemih celo obvlada glasovno po¹to!). 13.2. Uporaba oddaljenih tiskalni¹kih storitev Obstaja poskusna storitev, ki vam ponuja, da po¹ljete elektronsko po¹to z neèim, kar bi radi natisnili, potem pa to pride ven na doloèenem faksirnem stroju. Podprti so prijetni formati, kot postscript, torej, èeprav je splo¹en vtis pikèast, je to lahko zelo uporabna storitev. Za veè informacij o tiskanju z oddaljenim tiskalni¹kim servisom, glejte njegovo spletno stran Remote Printing WWW Site <http://www.tpc.int/>. 14. Kako narediti nekaj, kar je vredno tiskanja Tukaj pridemo v pravo podganje leglo programja. Linux lahko naèeloma poganja veliko tipov binarnih programov z razliènimi stopnjami uspeha: Linux/x86, Linux/Alpha, Linux/Sparc, Linux/foo, iBCS, Win16/Win32s (z dosemu in, nekega dne, z Wine), Mac/68k (z emulatorjem Executor), in Java. Opisal bom le domorodno programje za Linux in splo¹ni Unix. Za sam Linux je izbira veèinoma omejena na programje, v splo¹nem dostopno za Unix: 14.1. Opisni jeziki Veèina opisnih jezikov je bolj primerna za velike in ponavljajoèe se projekte, kjer ¾elite prepustiti raèunalniku kontrolo ureditve besedila in s tem poenotiti izgled reèi. nroff To je bil eden prvih opisnih jezikov v Unixu. Strani z opisi ukazov v referenènem priroèniku (za man) so najbolj pogost primer stvari, formatiranih z makro ukazi *roff; veliko ljudi prisega na njih, a nroff ima, vsaj zame, preveè zastarelo skladnjo, kot bi bilo potrebno, in verjetno predstavlja slabo izbiro za nova dela. Vseeno se izplaèa vedeti, da lahko s programom groff postavite stran iz formata za man direktno v postscript. Veèina programov man naredi to z ukazom man -t foo | lpr. TeX TeX (izg. ,,teh``), in paket makro ukazov imenovan LaTeX (izg. ,,lateh``), sta dva izmed najbolj uporabljanih opisnih jezikov Unixa. Tehnièni spisi so pogosto napisani v LaTeXu, saj zelo poenostavi vpra¹anja izgleda in je ¹e vedno eden redkih sistemov za stavljenje teksta, ki podpira matematiène izraze hkrati popolnoma in dobro. Izhodni format TeXa je dvi, in ga lahko pretvorite v PostScript ali PCL za tiskalnik Hewlett Packard s programoma dvips or dvilj. Èe ¾elite namestiti TeX ali LaTeX, namestite celotno skupino paketov za teTeX; ta vsebuje vse. Veè o izvedbi TeXa za Linux boste izvedeli v prevodu spisa TeTeX HOWTO. SGML Za Unix in Linux obstaja vsaj en prost razèlenjevalnik za SGML; sestavlja osnovo na Linuxu narejenega dokumentirnega sistema Linuxdoc-SGML. Podpira tudi druge DTD-je. HTML Nekdo je opozoril, da je lahko za preproste projekte dovolj pisati v HTML in jo natisniti z brkljalnikom Netscape. Ne strinjam se, a va¹e izku¹nje se lahko razlikujejo. 14.2. Urejevalniki besedila WYSIWYG (kar vidi¹, to dobi¹) Niè veè ni pomanjkanja programja za urejanje besedila v naèinu WYSIWYG. Dostopnih je veliko popolnih pisarni¹kih zbirk, vkljuèno z eno, ki je prosta za osebno uporabo (StarOffice). StarOffice Nem¹ko podjetje raz¹irja po omre¾ju zbirko StarOffice, prosto za Linux. Ta popolna pisarni¹ka zbirka ima vse lastnosti, ki jih lahko prièakujete, in ne morete najti bolj¹e cene. Obstaja poseben spis mini-HOWTO, ki opisuje, kako jo dobite in namestite. Generira PostScript ali PCL, torej bi morala delovati s skoraj vsakim tiskalnikom, ki sicer deluje v Linuxu. Izgleda, da je ta zbirka klon paketa Office in torej precej napihnjena. WordPerfect Corel prosto raz¹irja osnovno razlièico programa Word Perfect 8 za Linux, in namiguje, da bo raz¹irjal tudi Corel Draw in Quattro Pro, ko boste prenesena. To je verjetno najbolj¹a izbira, èe imate stroj ARM; Corel izdeluje raèunalnike Netwinder Linux na procesorjih ARM in bo skoraj gotovo ponudil razlièice vsega za Linux na teh procesorjih. Kupite lahko tudi polno zmogljivo razlièico in podporo, skupaj ali posebej. Spletna stran Linux WordPerfect Fonts and Printers <http://www.channel1.com/users/rodsmith/wpfonts.html> ponuja informacije o nastavitvi WordPerfecta za uporabo z Ghostscriptom ali z vgrajenimi tiskalni¹kimi gonilniki (izgleda, da so ti identièni z dosovskimi gonilniki za WordPerfect, èe gonilnik za va¹ tiskalnik ni vkljuèen v distribucijo WP8). Applix Applix je veèplatformski (se pravi, deluje na razliènih Unixih, Windows in drugih) pisarni¹ki paket, ki ga prodaja podjetje Applix. Red Hat in SuSE sta ga prodajala sama, ko je bila to edina igra v mestu; zdaj se je prodaja preusmerila k Applix. LyX LyX je uporabni¹ki vmesnik za LaTeX, ki izgleda zelo obetavno. Glejte spletno stran LyX Homepage <http://www.lyx.org/> za veè informacij. Obstaja tudi razlièica LyXa v stilu okenskega upravljalnika KDE, imenovana KLyX; prvi avtor LyXa in spodbujevalec uporabe namizja KDE sta ista oseba. Maxwell Maxwell je preprost urejevalnik besedil, zasnovan na formatu Microsoft RTF, ki se je zaèel kot komercialni izdelek, a se zdaj raz¹irja pod GPL. The Andrew User Interface System AUIS vkljuèuje ez, urejevalnik tipa WYSIWYG z veèino osnovnih lastnosti urejevalnika besedila, zmo¾nost delanja HTML in polno podporo za e-po¹to po standardu MIME in novièarske skupine. ®al programa AUIS ne vzdr¾ujejo veè. Koffice Projekt za aktivno namizje KDE dela na popolni pisarni¹ki zbirki. Mislim, da ¹e ni zrela za javni nastop. Urejevalnik besedil bo najbr¾ naslednik LyXa. GNOME Projekt GNOME tudi deluje v smeri izdelave razliènih pisarni¹kih orodij z licenco GNU GPL, toda nobeno ¹e ni dostopno. Jeff Phillips <jeff@I_RATUS.org> uporablja Calderin WordPerfect 7 za Linux (na distribuciji Slackware, od vseh mogoèih), in pravi, da deluje dobro. Zdi se, da po prièakovanjih vkljuèuje tudi vgrajeno tiskalni¹ko podporo. Caldera mora imeti informacije nekje na <http://www.caldera.com/>. Lahko kupite tudi novej¹o razlièico WordPerfecta direktno od podjetja, ki mu je Corel zaupal prenos na Unix. Drugi proizvajalci mi lahko po¹ljejo sporoèilo z njihovo ponudbo. 15. Predogled reèi za tiskanje na zaslonu Skoraj vse, kar lahko natisnete, si lahko tudi ogledate na zaslonu. 15.1. PostScript Ghostscript ima gonilnik za X11, ki ga najbolje upravlja program za predogled PostScripta gv. Zadnje razlièice teh programov bi morale biti sposobne tudi prikaza datotek PDF. Vedite, da je gv zamenjal prej¹nji program ,,Ghostview``; uporabni¹ki vmesnik je precej lep¹i in ponuja veè mo¾nosti, kot dobri stari vmesnik Athena v programu ghostview. 15.2. TeXove dvi Datoteke DVI (DeVice Independent -- od naprave neodvisne datoteke) si lahko predogledate v X11 s programom xdvi. Sodobne razlièice prikazovalnika xdvi klièejo ghostscript za prikaz vkljuèenih slik v PostScriptu. Obstaja tudi gonilnik za terminal VT100. Imenuje se dgvt. Tmview deluje z Linuxom in svgalib, èe je to vse, kar lahko poènete. 15.3. Adobe PDF Za Linux obstaja Adobeov prikazovalnik Acrobat Reader; vzemite ga z njihove spletne strani <http://www.adobe.com/>. Lahko uporabite tudi xpdf, ki je prosto dostopen in pride z izvorno kodo. Mislim, da tudi Ghostview do zdaj ¾e podpira ogled datotek PDF z gs za X11. 16. Zaporedni tiskalniki pod lpd 16.1. Postavitev v printcap Stre¾niku lpd lahko podate pet atributov, ki jih nastavite v datoteki /etc/printcap in s tem nadzorujete vse nastavitve zaporednih vrat, na katerih je tiskalnik. Preberite stran referenènega priroènika o printcap in si poglejte pomen atributov br#, fc#, xc#, fs# in xs#. Zadnji ¹tiri od teh atributov so bitne slike, ki pomenijo nastavitve za uporabo vrat. Atribut br# je preprosto hitrost prenosa v baudih, npr. ,br#9600`. Zelo lahko je preslikavati iz nastavitev stty v nastavitev zastavic v printcap. Èe morate to storiti, zdaj poglejte stran o stty v referenènem priroèniku. Uporabite stty za postavitev tiskalni¹kih vrat, tako da lahko izpi¹ete na njih datoteko (s cat) in se ta pravilno natisne. Takole izgleda ,stty -a` za moja tiskalni¹ka vrata: dina:/usr/users/andy/work/lpd/lpd# stty -a < /dev/ttyS2 speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke Edine razlike med tem in naèinom, kako se vrata inicializirajo ob zagonu, so -clocal, -crtscts, in ixon. Va¹a vrata so prav lahko drugaèna, odvisno od tega, kako va¹ tiskalnik zganja kontrolo toka. Pravzaprav uporabljate stty na nekam èuden naèin. Ker stty deluje na terminalu, prikljuèenem na standardni vhod, ga uporabite za obvladovanje danih zaporednih vrat z uporabo znaka ,<`, kot zgoraj. Ko ste enkrat zadeli va¹e nastavitve v stty tako, da ukaz ,,cat file > /dev/ttyS2`` (v mojem primeru) po¹lje datoteko na tiskalnik, poglejte datoteko /usr/src/linux/include/asm-i386/termbits.h. Ta vsebuje veliko definicij z #define in nekaj struktur struct (morda boste ¾eleli natisniti to datoteko na tiskalniku (saj vam deluje, kajne?) in jo uporabili kot papir za èeèkanje). Pomaknite se v razdelek, ki se zaèenja takole: /* c_cflag bit meaning */ #define CBAUD 0000017 Ta razdelek na¹teva pomen posameznih bitov v fc# in fs#. Opazili boste, da se tamkaj¹nja imena (po hitrostih prenosa v baudih) ujemajo z eno od vrstic izhoda stty. Vam nisem rekel, da bo to lahko? Poglejte, katere nastavitve izhoda stty se zaènejo z znakom ,-`. Se¹tejte vse tak¹ne ¹tevilke (osmi¹ke so). To predstavlja bite, ki bi jih radi ugasnili, zato je rezultat va¹a zmo¾nost fc#. Seveda, spomnite se, da boste pri¾gali bite takoj, ko jih boste ugasnili, zato lahko le uporabite ,fc#0177777` (jaz storim tako). Zdaj napravite isto stvar za tiste nastavitve (na¹tete v tem razdelku), ki pred seboj nimajo znaka ,-` v va¹em izhodu stty. V mojem primeru so pomembni biti CS8 (0000060), HUPCL (0002000), in CREAD (0000200). Pazite tudi na zastavice za va¹o baudno hitrost (moja je 0000015). Se¹tejte vse to, in v mojem primeru boste dobili 0002275. To gre v va¹o zmo¾nost fs# (,fs#02275` v mojem primeru deluje èisto v redu). Napravite isto s pri¾iganjem in uga¹anjem za naslednji razdelek vkljuène datoteke, ,,c_lflag bits``. V mojem primeru mi ni bilo treba nastavljati nièesar, torej uporabim le ,xc#0157777` in ,xs#0`. 16.2. Starej¹i zaporedni tiskalniki, ki izgubljajo znake Jon Luckey opozarja, da nekateri starej¹i tiskalniki z zaporednimi vmesniki za dva stotina in majhnimi vmesnimi pomnilniki zares mislijo ,,stop``, ko tako pravijo s kontrolo toka. Opazil je, da je onemogoèenje FIFO na njegovih zaporednih vratih Linuxa s èipom UART 16550 s pripomoèkom setserial odpravilo te¾avo izgubljanja znakov (oèitno za to le doloèite tip UART 8250). 17. Zasluge Podatek o smbprint je iz èlanka, ki ga je napisal Marcel Roelofs <marcel@paragon.nl>. Podatek o nprint pri uporabi tiskalnikov v NetWare je posredoval Michael Smith <mikes@bioch.ox.ac.uk>. Razdelek o zaporednih tiskalnikih pod lpd je spisal Andrew Tefft <teffta@engr.dnet.ge.com>. Èvek o gama-popravkih barv in podobnem za gs je poslal Andreas <quasi@hub-fue.franken.de>. Dva odstavka o 30-sekundnem èakanju zaporednega gonilnika je prispeval <cdj@netcom.com>. Robert Hart je poslal nekaj izvrstnih odstavkov o postavitvi tiskalni¹kega stre¾nika na omre¾enih HP-jih, ki sem jih uporabil dobesedno. In posebna zahvala ducatom za ducati tistih med vami, ki ste v teh letih opozorili na tipkarske napake, slabe URL-je, in napake v spisu. Slovenski prevod z dne 16. februarja 1999 je delo Romana Maurerja <roman.maurer@fmf.uni-lj.si>. Prosim, po¹iljajte mi popravke in dopolnitve prevoda.