Tiskanje v Linuxu, HOWTO Grant Taylor 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 in (b) mi pošljete sporočilo, kaj bi moralo biti tukaj, pa ni. Na spletni strani Printing HOWTO Home Page 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 , tekstovna, postscriptna, DVI, PDF in SGML pa na . 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 ; skupaj sva soavtorjevala novonastalemu PHT nekako dve leti. Na določeni točki sva vključila delo Karla Auerja . 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 . Č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 , 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 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 . 3.3. Naprave na zaporednih vratih Naprave na zaporednih vratih se v Linuxu običajno imenujejo podobno kot /dev/ttyS1. Pripomoček stty vam bo dovoljeval interaktivni pregled ali nastavitev zaporednih vrat; setserial 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 . Č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 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 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 . Hvala Daleu Sniderju za nadlegovanje Lexmarka in pridobitev tega programa. Jetprinter 7000 Obstaja zgodnji gonilnik 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 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 . Tiskalniki 710, 720C, 722C, 820C in 1000C so tiskalniki PPA, ki se lahko uporabljajo v črnobeli tehniki s pripomočkom pbm2ppa Toma Normana . 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 , 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 . 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(){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 . 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 . 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 . 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 () { print S; } sleep 3; do dokill(); } else { while() { 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 -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 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 . 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 ; 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 . 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 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 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 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 . 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 . 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 = ; eol2 = ; 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 . Podatek o nprint pri uporabi tiskalnikov v NetWare je posredoval Michael Smith . Razdelek o zaporednih tiskalnikih pod lpd je spisal Andrew Tefft . Čvek o gama-popravkih barv in podobnem za gs je poslal Andreas . Dva odstavka o 30-sekundnem čakanju zaporednega gonilnika je prispeval . 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 . Prosim, pošiljajte mi popravke in dopolnitve prevoda.