Tiskanje v Linuxu, HOWTO <author>Grant Taylor <tt><gtaylor+pht@picante.com></tt> <date>v5.10, 18. september 2000 <abstract> To je slovenski prevod spisa <em>Linux Printing HOWTO</em>, zbirke podatkov o ustvarjanju, ogledovanju, tiskanju in faksiranju vsega mogočega v Linuxu (in na splošno v drugih Unixih). </abstract> <toc> <sect>Uvod <p> Spis <em>Printing HOWTO</em> naj bi obsegal vse, kar morate vedeti o nastavljanju tiskalniških opravil v vaših računalnikih z Linuxom. Kot je tudi sicer v življenju pogosto, 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 v velikih krajevnih omrežjih. <p> Spis je sestavljen tako, da bo večina ljudi morala prebrati le prvo polovico. Večina tu zbranih bolj obskurnih in od položaja odvisnih informacij je v drugi polovici in jih zlahka najdete v kazalu, podatke, zbrane v razdelkih 8 in 9, pa bo verjetno potrebovala večina ljudi. <p> Če se vam ta spis ali stran <htmlurl name="LinuxPrinting.org" url="http://www.linuxprinting.org/"> zdita uporabna, razmislite o tem, da bi kaj kupili prek moje asociacije z buy.com ali outpost.com; prosim, uporabite povezave na strani <htmlurl name="o priporočenih tiskalnikih" url="http://www.linuxprinting.org/suggested.html">, da bo lahko vaš nakup pripisan LinuxPrinting.org. <p> Ker je različica 3.x napisana popolnoma na novo, je nekaj podatkov iz prejšnjih izdaj izgubljenih. To je storjeno načrtno, saj so natisnjeni prejšnji HOWTO obsegali 60 strani in premogli pripovedovalno nit mrtve želve. Če tu ne najdete odgovora, (a) poglejte na spletno mesto <htmlurl name="LinuxPrinting.org" url="http://www.linuxprinting.org/"> in (b) mi pošljete sporočilo, kaj bi moralo biti tu, pa ni. <p> Na spletnem mestu <htmlurl name="LinuxPrinting.org" url="http://www.linuxprinting.org/"> najdete zadnjo angleško izvirno različico tega spisa, seveda jo najdete tudi na Metalabu (<tt>metalab.unc.edu</tt>) in vašem prijaznem krajevnem zrcalnem strežniku LDP. Slovenska spletna različica je dostopna na <url url="http://www.lugos.si/delo/slo/HOWTO-sl/Printing-HOWTO-sl.html">, tekstovna, postscriptna, DVI, PDF in SGML pa na <url url="ftp://ftp.lugos.si/doc/HOWTO-sl/">. <sect1>Zgodovina <p> To je četrta generacija spisa <em>Printing HOWTO</em> (PHT). Kronologija je taka: <enum> <item> Zaradi preveč vprašanj o tiskanju v novičarski skupini comp.os.linux sem leta 1992 napisal <em>printing-howto</em> in ga objavil. Ta spis je prehitel projekt HOWTO za nekaj mesecev in bil prvi tak spis, imenovan howto`. Ta izdaja je bila v navadni kodi ASCII. <item> Po vključitvi v projekt HOWTO se je spis <em>Printing-HOWTO</em> združil s spisom <em>Lpd FAQ</em> Briana McCauleyja <tt><B.A.McCauley@bham.ac.uk></tt>; skupaj sva bila soavtorja novo nastalega PHT nekako dve leti. Na določeni točki sva vključila delo Karla Auerja <tt><Karl.Auer@anu.edu.au></tt>. Ta generacija PHT je bila pisana v formatu TeXinfo in dostopna v formatih postscript, HTML, ASCII in Info. <item> Po več kot leto dni trajajočem gnitju in propadanju spisa PHT in neuspešnem poskusu pridobitve novega vzdrževalca sem znova napisal tole različico. Ta generacija spisa PHT je v formatu Linuxdoc-SGML za paket SGML-Tools-1. Od različice 3.27 naprej vključuje povzetek zbirke podatkov o podpori tiskalnikov; pred 3.27 v tem HOWTO ni bilo seznama o združljivosti tiskalnikov. <item> Sredi januarja 2000 sem zvedel za program za razvrščanje tiskalniških opravil PDQ. PDQ ponuja toliko boljši mehanizem tiskanja, kot ga je <tt>lpq</tt> kdajkoli, da sem se z njim igral nekaj ur, znova napisal dele tega HOWTO in številko različice povečal na 4. <item> Sredi leta 2000 sem svojo stran o tiskanju prestavil na <tt>www.linuxprinting.org</tt> in tam začel ponujati zmogljivejša nastavitvena orodja. Ta HOWTO sem tudi pretvoril v DocBook in začel pokrivati sisteme CUPS, LPRng in GPR/libppd. </enum> <sect1>Pravna zaščita <p> Ta dokument je pravno zaščitil © 1992--2000 Grant Taylor. Prosto ga lahko kopirate in razširjate pod pogoji licence GNU General Public License, različice 2 ali poznejše. <p> Slovenski prevajalec je Roman Maurer in za slovenski prevod velja takisto. <sect>Hiter začetek <p> Najhitreje začnete preprosto tako, da uporabite nastavitvena orodja, ki vam jih ponuja vaš dobavitelj. Če privzamemo, da to vključuje podporo vašemu gonilniku in da je vaš dobavitelj izdal tudi gonilnik za vaš tiskalnik, bi moralo biti na ta način preprosto dobiti osnovno sestavo. Za nastavitvena orodja, ki jih ponujajo dobavitelji, glej razdelek <ref id="vendors" name="Rešitve dobaviteljev">. <p> Če orodje vašega dobavitelja ne deluje, bi morali ugotoviti, ali naj bi vaš tiskalnik sploh deloval. Oglejte si seznam združljivih tiskalnikov v razdelku <ref name="Seznam združljivih tiskalnikov" id="PRINTER-COMPAT-LIST">, pa tudi tu opisano različico na zvezi. <p> Če je znano, da vaš tiskalnik deluje z nekim gonilnikom, preverite, ali imate ta gonilnik, in ga namestite, če ne. Tipično boste našli prispevani paket Ghostscript z novejšo kodo za ghostscript in izbranimi gonilniki tretjih oseb. Če ne, jo lahko prevedete sami; proces ni trivialen, a je dobro dokumentiran. Glej razdelek <ref id="ghostscript" name="Ghostscript"> za več podatkov o ghostscriptu. <p> Ko namestite ustrezen gonilnik, skušajte znova nastaviti svoj tiskalnik z orodji vašega dobavitelja. Če to ne uspe, izberite primerno neodvisno orodje, kot je opisano v razdelku <ref id="setup" name="Kako usposobiti zadeve">. Če tudi to ne uspe, boste morali sestaviti lastno sestavo; spet glej <ref id="setup" name="Kako usposobiti zadeve">. <p> Če se vam zatakne, morate odpraviti nekaj težav. Verjetno je najbolje najprej prebrati večino tega dokumenta, da dobite občutek za to, kako bi stvari morale delovati; potem boste v boljšem položaju kar se tiče razhroščevanja. <sect>Kako tiskati <p> Pravzaprav za tiskanje uporabljate drugačen ukaz glede na to, katero čakalniško programje uporabljate. <sect1>S PDQ <p> Večina današnjih sistemov prihaja z lpd, zato ta razdelek zanje ne velja. Kljub temu pa zdaj priporočam, da ljudje v večini primerov namestijo in uporabljajo PDQ namesto (ali poleg) lpd. PDQ ima veliko boljšo podporo možnostim tiskalnika in podobno. <p> Namesto ukaza lpr s sistemom PDQ uporabljate ukaz <htmlurl name="pdq" url="http://feynman.tam.uiuc.edu/pdq/man/pdq.1.html"> ali <htmlurl name="xpdq" url="http://feynman.tam.uiuc.edu/pdq/man/xpdq.1.html">. Oba delujeta podobno tradicionalnemu ukazu <tt>lpr</tt>, se pravi, da tiskata datoteke, ki jih določite, ali stdin, če datotek ne podaste. <sect2>Xpdq <p> Xpdq je program za okna X, ki prikaže seznam dostopnih tiskalnikov in povzetek tiskalniške vrste (skupaj s trenutnim in prejšnjimi opravili). Na datotečnem menuju sta dve izbiri, ena za tiskanje določenih datotek, druga za tiskanje stdin. Posebne izbire gonilniku za vaš tiskalnik lahko določite na menuju Driver Options; tipično bo to dupleks, ločljivost, vrsta in velikost papirja in tako naprej. <sect2>Pdq <p> Ukaz za tiskanje iz ukazne vrstice se v sistemu PDQ preprosto imenuje <tt>pdq</tt>. Večinoma ga lahko uporabljate namesto ukaza <tt>lpr</tt>; sprejme argument <tt>-P</tt> za določitev tiskalnika. Tiska bodisi naštete datoteke ali pa stdin, podobno kakor <tt>lpr</tt>. <p> Možnosti tiskalnika lahko nadzorujete z izbirama <tt>-o</tt> in <tt>-a</tt>. <sect1>Z LPD in ukazom <tt>lpr</tt> <p> Če ste že nastavili tiskalniški strežnik <tt>lpd</tt> 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 uporabljati ukaz <tt>lpr</tt>. To področje in področje upravljanja tiskalniških vrst pokriva spis <url name="Printing Usage HOWTO" url="http://www.lugos.si/delo/slo/HOWTO-sl/Printing-Usage-HOWTO-sl.html">. Ali pa si preberite stran referenčnega priročnika o lpr(1). <p> V ukazni vrstici določite ime vrste s <tt>-P</tt> in ime datoteke, da jo natisnete, ali nič, če želite tiskati s stdin. Z lpr tradicionalno ne morete krmiliti možnosti gonilnika, vendar različni sistemi sprejmejo določene izbire z <tt>-o</tt>, <tt>-Z</tt> ali <tt>-J</tt>. <p> Č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! <sect1>Tiskalniška orodja z grafičnim uporabniškim vmesnikom<label id="HOW-WITH-GUI-TOOLS"> <p> Večina tiskalniških sistemov samih po sebi ponuja le precej preprost vmesnik v ukazni vrstici. Namesto da neposredno uporabljate <tt>lpr</tt>, boste morda želeli dobiti in uporabljati uporabniški vmesnik. Ti vam navadno omogočajo, da nastavite številne izbire tiskanja (tiskalnik, vrsto papirja, zlaganje, več strani na eno itd.) v grafičnem načinu, preprostem za uporabo. Nekateri imajo lahko tudi druge odlike. <sect2>GPR<label id="GPR-INTRO"> <p> <htmlurl name="GPR" url="http://www.compumetric.com/linux.html"> Thomasa Hubbella uporablja kodo sistema CUPS za filtriranje postscriptnih opravil in ponuja preprost nadzor uporabnika nad izbirami opravila. Nekatere izbire (kot n-smerno tiskanje, izbira strani itd.) so izvedene neposredno v GPR, večina drugih pa v tiskalniku ali v filtrirnem sistemu čakalne vrste. <p> GPR deluje z LPD ali LPRng; lahko pa je preveden tudi posebej, da deluje s spremenjenim LPD iz VA Linuxa. Ko je preveden običajno, neposredno uporablja VA-jev libppd za izdelavo postscripta, specifičnega za tiskalnik, ki ga lahko potem posredujete z ukazom <tt>lpr</tt>. Ko je preveden za VA-jev LPD, bo posredoval nespremenjen postscript opravila ukazu <tt>lpr</tt>, skupaj z naborom izbir opravila, ki jih določite. To je domnevno boljši način, saj omogoča, da postscript preusmerite k drugemu tiskalniku s čakalno vrsto, ko je to primerno; žal je potreboval VA-jev posebni LPD, ki še ni v širšem obtoku (čeprav ga je seveda trivialno namestiti). <p> Če želite uporabljati GPR, najprej izberite tiskalnik (po imenu čakalne vrste za LPD) in preverite, ali je GPR naložil pravilno datoteko PPD. Če je ni, boste morali podati ime datoteke PPD in določiti izbire za vaš tiskalnik v pogovornem oknu nastavitve tiskalnika (to okno dobite tako, da pritisnete gumb Printer Configuration; vsebuje izbrane nastavitvene izbire tiskalnika, kot jih definira PPD). <p> Ko enkrat nastavite svoj tiskalnik v GPR, lahko tiskate opravila tako, da določite ime datoteke in izberete prave izbire s pultov, označenih s ,Common` in ,Advanced`. Izbire s prvega pulta so izvedene neposredno v GPR za vse tiskalnike, izbire z drugega pulta pa so definirane v datoteki PPD za vaš tiskalnik. Ta dva pulta z izbirami vidite na slikah 2 in 3. <!-- dodaj sliki SNAPSHOT-GPR-COMMON in SNAPSHOT-GPR-PRINTER --> <bf>Slika 1: Glavne izbire v GPR ; SNAPSHOT-GPR-MAIN - snapshot-gpr-main.gif</bf> <bf>Slika 2: Skupne izbire v GPR ; SNAPSHOT-GPR-COMMON - snapshot-gpr-common.gif</bf> <bf>Slika 3: Tiskalniške izbire v GPR ; SNAPSHOT-GPR-PRINTER - snapshot-gpr-printer.gif</bf> <sect2>XPP<label id="XPP-SECT"> <p> Če kot strežnik za čakalno vrsto uporabljate CUPS, lahko uporabite program <htmlurl name="XPP" url="http://www.phy.uni-bayreuth.de/till/xpp/"> (glej <ref name="sliko 4" id="SNAPSHOT-XPP-MAIN">). <p> Za tiskanje z XPP preprosto poženite program <tt>xpp</tt> in določite datoteko (ali nič, če uporabljate <tt>xpp</tt> namesto <tt>lpr</tt> za tiskanje s stdin). Potem s seznama nastavljenih tiskalnikov izberite svojega in z različnih pultov z zavihki izberite možnosti, ki bi jih radi uveljavili. Glej <ref id="SNAPSHOT-XPP-OPTIONS" name="sliko 5"> za zgled pulta z izbirami, ki ponazarja standardne izbire CUPS. <p> Svoj izbrani tiskalnik in vse izbire lahko shranite z gumbom ,Save Settings`. <label id="SNAPSHOT-XPP-MAIN"> <bf>Slika 4: Glavno okno XPP ; snapshot-xpp-main.gif</bf> <label id="SNAPSHOT-XPP-OPTIONS"> <bf>Slika 5: Okno z izbirami CUPS/XPP ; - snapshot-xpp-options.gif</bf> <sect2>XPDQ <p> PDQ lahko zlahka nastavite, da tiska iz čakalnih vrst številnih tiskalniških sistemov, nastavitvena skladnja PDQ pa ponuja preprosto definiranje poljubnih filtrirnih in uporabniških izbir za tiskalniška opravila. Tako lahko zelo uspešno uporabljate <tt>xpdq</tt> kot vmesnik do tiskanja z LPD. <p> Za več podatkov glej razdelek <ref id="PDQ-WHICH-SPOOLER" name="PDQ">. <sect>Tiskalniške naprave jedra <p> Za vzporedna vrata sta na voljo dva popolnoma različna gonilnika naprav; katerega uporabljate, je odvisno od različice vašega jedra (izveste jo z ukazom <tt>uname -a</tt>). Gonilnik se je spremenil v Linuxu 2.1.33; praktično vsi trenutni sistemi poganjajo jedro 2.2 ali poznejše, zato boste verjetno želeli skočiti kar na razdelek o gonilniku parport. <p> Nekaj podrobnosti je enakih za oba sloga gonilnika. Veliko ljudi je ugotovilo, da Linux ne zazna njihovih vzporednih vrat, razen če v svojem PC BIOS onemogočijo naprave ,,Plug and Play``. (To ni presenetljivo; zaznavanje PnP za ne-PCI naprave je tudi v Windows in drugje precej katastrofalno.) <sect1>Naprava lp (jedra <=2.1.32) <p> Jedro sistema Linux (<=2.1.32) poskrbi za eno ali več naprav <em>/dev/lp0</em>, <em>/dev/lp1</em> in <em>/dev/lp2</em>, če ste le podporo teh naprav vključili med prevajanjem ali posebej naložili (izhod <tt>cat /proc/devices</tt> mora vsebovati napravo lp, če je naložena). Te naprave se <bf>ne</bf> določajo dinamično, temveč vsaka ustreza določenemu strojnemu vhodno/izhodnemu (V/I) naslovu. To pomeni, da je lahko vaš prvi tiskalnik znan kot naprava <em>lp0</em> ali <em>lp1</em>, odvisno od vaše strojne opreme. Le preizkusite oboje. <p> Nekateri uporabniki so poročali, da sistem ne zazna njihovih dvosmernih vrat lp, če uporabljajo starejši enosmerni tiskalniški kabel. Preverite, ali imate spodoben kabel. <p> Gonilnikov za plip in lp ne morete poganjati hkrati na enih vratih (vsaj ne z 2.0). Lahko pa imate kadarkoli en ali drug gonilnik naložen ročno ali s <tt>kerneld</tt> 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. Nekdo je storil tako s popravljanjem gonilnikov; željno pričakujem poročilo o uspehu nekoga, ki mu je to uspelo le z bistro ukazno vrstico. <p> Na voljo je droben pripomoček, imenovan <url url="http://www.linuxprinting.org/man/tunelp.8.html" name="tunelp">, s katerim lahko (kot <em>root</em>) uglasite uporabo prekinitev naprave lp v Linuxu 2.0, <em>polling rate</em>, in druge izbire. <p> Če je gonilnik lp vgrajen v jedro, bo to sprejelo izbiro <tt>lp=</tt> za nastavitev prekinitev ali V/I naslovov: <tscreen><verb> 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. </verb></tscreen> <p> Če je podpora naložena kot modul, je mogoče določiti V/I naslove in prekinitvene vrstice v ukazni vrstici za klic <tt>insmod</tt> (ali v <em>/etc/conf.modules</em>, če naj prizadene kerneld) z uporabo običajne skladnje. Parametri so <tt>io=port0,port1,port2</tt> in <tt>irq=irq0,irq1,irq2</tt>. Preberite stran o ukazu <em><url url="http://www.linuxprinting.org/man/insmod.1.html" name="insmod"></em> v referenčnem priročniku za več informacij o tem. <p> **Za tiste med vami, ki (kot jaz) nikoli ne najdete standardnih številk vrat, ko jih potrebujete, so podane v drugem zgledu zgoraj. Druga vrata (<em>lp0</em>) so na naslovu 0x3bc. Pojma nimam, katero prekinitev navadno uporabljajo. <p> Izvirna koda gonilnika vzporednih vrat v Linuxu je v datoteki <tt>/usr/src/linux/drivers/char/lp.c</tt>. <sect1>Naprava parport (jedra >= 2.1.33) <p> Začenši z jedri 2.1.33 (in na voljo kot popravek za jedro 2.0.30), je naprava <em>lp</em> le odjemalec nove naprave <em>parport</em>. Naprava <em>parport</em> dodatno odpravlja številne težave, ki so morile stari gonilnik naprave <em>lp</em> -- 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. <p> Prihod naprave <em>parport</em> je omogočil množico novih gonilnikov za vzporedna vrata za stvari, kot so pogoni ZIP, CD-ROM in 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. <p> Poglavitna razlika, ki jo boste opazili, kar se tiče tiskanja, je ta, da jedra z napravo parport dodeljujejo naprave <tt>lp</tt> vzporednim vratom dinamično. Kar je torej v Linuxu 2.0 bilo <tt>lp1</tt>, je prav lahko <tt>lp0</tt> v Linuxu 2.2. Ne pozabite tega preveriti, če nadgrajujete z jedra z gonilnikom lp na jedro z gonilnikom parport. <p> Videti je, da največje težave s to napravo izhajajo iz napačnih nastavitev: <descrip> <tag>distribucije</tag> Nekatere distribucije Linuxa nimajo pravilno nastavljene datoteke <tt>/etc/modules.conf</tt> (ali <tt>/etc/conf.modules</tt>), zato se gonilnik ne naloži pravilno, ko ga potrebujete. Videti je, da se z novejšim paketom <tt>modutils</tt> pravilne magične vrstice glasijo: <tscreen> <verb> alias /dev/printers lp # le za devfs? alias /dev/lp* lp # le za devfs? alias parport_lowlevel parport_pc # manjka v Red Hat 6.0-6.1 </verb> </tscreen> <tag>BIOS-a</tag> Mnogi biosi v računalnikih PC bodo spremenili vzporedna vrata v napravo vrste Plug-and-Play. To popolnoma preprosto napravo, ki je skoraj vedno prisotna, le naredi po nepotrebnem kompleksno ; izključite nastavitve PnP za svoja vzporedna vrata (,,<tt>LPT1</tt>`` v mnogih biosih), če gonilnik v Linuxu ne zazna vaših vzporednih vrat (angl. parallel port). Pravilna nastavitev se pogosto imenuje ,,legacy``, ,,ISA``, ali ,,0x378``, a verjetno ne ,,disabled`` (onemogočeno). </descrip> <p> Lahko tudi preberete <htmlurl url="http://people.redhat.com/twaugh/parport/html/parportguide.html" name="dokumentacijo za parport"> v izvirni kodi vašega jedra, ali pogledate na <url url="http://people.redhat.com/twaugh/parport/" name="spletno mesto o parport">. <sect1>Naprave na zaporednih vratih <p> Naprave na zaporednih vratih se v Linuxu navadno imenujejo podobno kakor <em>/dev/ttyS1</em>. Pripomoček <url url="http://www.linuxprinting.org/man/stty.1.html" name="stty"> vam bo dovoljeval interaktivni pregled ali nastavitev zaporednih vrat; <url name="setserial" url="http://www.linuxprinting.org/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 najdete v spisu <url url="http://metalab.unc.edu/mdw/HOWTO/Serial-HOWTO.html" name="Serial-HOWTO">. <p> Če uporabljate počasen zaporedni tiskalnik z nadzorom pretoka (<em>flow control</em>), lahko ugotovite, da so nekatera od vaših tiskalniških opravil odrezana. Lahko so kriva zaporedna vrata, katerih privzeto obnašanje je čiščenje neprenesenih 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 nadzor 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 <tscreen><verb> cat datoteka > /dev/ttyS2 </verb></tscreen> <p> Če ta ukaz popolnoma izpiše krajše datoteke, daljše pa le odrezano, tiči zajec v tem grmu. <p> 30-sekundni časovni interval lahko nastavite kot izbiro <tt>closing_wait</tt> v ukazni vrstici za klic <tt>setserial</tt> (različica 2.12 in poznejše). Zaporedna vrata stroja se navadno inicializirajo s klicem <tt>setserial</tt> v zagonski datoteki <tt>rc.serial</tt>. Klic za nastavitev tiskalniških zaporednih vrat spremenite tako, da vstavite <tt>closing_wait</tt> hkrati z drugimi izbirami za nastavitev teh vrat. <sect1>Naprave USB <p> Nimam naprav USB, s katerimi bi se lahko igral, zato vam lahko ponudim le kazalce na druge strani. Ko napravo enkrat nastavite, dobite datoteko naprave <tt>/dev/usb/lp0</tt>, podobno kakor pri vzporednih vratih, kar bo dobro delovalo v datoteki <tt>printcap</tt> ali kot naprava s krajevnimi vrati za PDQ. <p> USB je dokumentiran na spletnem mestu <htmlurl name="Linux USB" url="http://www.linux-usb.org/">. <sect>Podprti tiskalniki <p> Jedro Linux vam omogoča, da se pogovarjate s katerimkoli tiskalnikom, ki ga priklopite na zaporedna, vzporedna ali USB vrata, pa tudi katerimkoli tiskalnikom v omrežju, vendar zgolj to še ni dovolj; sposobni morate biti tudi generirati podatke, ki jih bo tiskalnik razumel. V glavnem so med nezdružljivimi tiskalniki tisti, ki jim pravimo ,,tiskalniki za Windows`` ali ,,tiskalniki GDI``. Tako se imenujejo, ker ves ali del nadzornega jezika za tiskalnik in načrtovalske podrobnosti tiskalnega mehanizma ni dokumentiran. Tipično izdelovalec ponuja gonilnik za Microsoft Windows in ga veselo prodaja uporabnikom Windows; zato jim angleško pravimo tudi <em>winprinters</em>. V nekaterih primerih izdelovalec ponuja tudi gonilnike za NT, OS/2 ali druge operacijske sisteme. <p> Mnogi od teh tiskalnikov <em>ne delujejo</em> z Linuxom. Le malo jih deluje in nekateri od njih delujejo le malce (navadno zato, ker je nekdo z reverznim inženiringom ugotovil podrobnosti, potrebne, da napiše gonilnik). Za podrobnosti o določenih tiskalnikih glej seznam podprtih tiskalnikov v nadaljevanju. <p> Nekaj tiskalnikov je nekje vmes. Nekateri modeli izdelovalca NEC, na primer, izvajajo preprosto obliko standardnega tiskalniškega jezika PCL, ki omogoča programju, ki govori PCL, tiskanje do 300 dpi, a le NEC ve, kako dobiti polnih 600 dpi iz teh tiskalnikov. <p> Če že imate tak tiskalnik, so mogoči ovinki, po katerih prepričate Linux, da tiska na njem, a so precej nerodni. Več o teh tiskalnikih najdete v razdelku <ref id="winprinters" name="Tiskalniki le-za-Windows"> v tem sestavku. <sect1>Postscriptni tiskalniki <p> Kar se tiče tiskalnikov, ki <em>pa</em> delujejo z Linuxom, je najboljša izbira nakup tiskalnika z vgrajeno podporo postscriptu <em>v firmware</em>. Skoraj vse programje v Unixu izdeluje tiskalniški izhod v postscriptu, torej je očitno lepo imeti tiskalnik, ki neposredno podpira postscript. Žal je podpora postscriptu redka zunaj območja laserskih tiskalnikov in je včasih drag dodatek. <p> Programje za Unix in založniška industrija na splošno sta posvojila postscript kot standardni tiskalniški krmilni jezik. To se je zgodilo iz več razlogov: <descrip> <tag>Timing</tag> 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. <tag>Je neodvisen od naprave</tag> 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 izvirnega programa. Postscriptni izhod bo videti 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 ta, da stroji z Windows navadno niso vključevali pregledovalnikov za postscript, zato je podjetje Adobe določilo hiperpovezave in stiskanje za postscript ter rezultatu reklo ,,PDF``, razširjalo pregledovalnike za novo obliko in našlo trg za njihova ,,precejevalna`` orodja (funkcionalnost teh pa ponujata tudi programa <tt>ps2pdf</tt> in <tt>pdf2ps</tt> iz paketa Ghostscript). <tag>Je pravi programski jezik</tag> 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. Vendar ni razloga, da ne bi mogli v postscriptu računati približke števila <em>pi</em>. <tag>Je odprti standard</tag> Postscript je popolnoma določen v javno dostopnih knjižnih zbirkah (ki jih najdete v vsaki dobri knjigarni). Čeprav ga je razvil Adobe in ponuja njegove poglavitne komercialne izvedbe, tudi drugi izdelovalci, denimo Aladdin, izdelujejo neodvisno napisane izvedbe. </descrip> <sect1>Nepostscriptni tiskalniki <p> Če vaš proračun ne dovoljuje nakupa postscriptnega tiskalnika, lahko uporabljate katerikoli tiskalnik, ki ga podpira ghostscript, prosti interpreter za postscript, uporabljan namesto pravega tiskalnika s postscriptno podporo. Vedite, da lahko večina distribucij Linuxa izhaja z nekako zastarelimi različicami ghostscripta, zaradi licence. Na srečo je navadno na voljo vnaprej pakirana sveža različica ghostscripta, dostopna na območju s prispevki (angl. contrib area) posameznih distribucij. <p> 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 bodo delovali v Linuxu (le če je izvedba PCL v tiskalniku in ne v gonilniku za Windows). <p> Podobna ghostscriptu je tudi Adobova izvedba postscripta za računalnike, imenovana PressReady. Deluje zelo podobno kakor ghostscript in ponuja postscriptno podporo nepostscriptnim tiskalnikom, a ima to slabo lastnost, da teče le v Windows. <sect1>Kateri tiskalniki delujejo? <p> Če želite kupiti tiskalnik, lahko pogledate na več mest, da vidite, ali bo deloval. S skupnimi močmi vzdrževana <htmlurl name="zbirka podatkov" url="http://www.linuxprinting.org/database.html"> Printing HOWTO skuša postati popoln seznam stanja podpore tiskalnikov v Linuxu. Spodaj je njen povzetek; več podrobnosti in podatkov o tem, kateri gonilnik uporabiti, najdete na omenjeni spletni strani. <p> ghostscriptova <htmlurl name="stran o združljivosti tiskalnikov" url="http://www.cs.wisc.edu/~ghost/printer.html"> ima seznam nekaterih delujočih tiskalnikov kakor tudi povezave na druge strani. <p> <htmlurl name="Dejanews" url="http://www.deja.com/usenet/"> vsebuje na stotine pričevanj vrste ,,deluje`` ali ,,ne deluje``. Preskusite vse tamkajšnje nasvete in ko končate, preverite, ali je vaš tiskalnik v <htmlurl name="zbirki podatkov" url="http://www.linuxprinting.org/database.html">, da bo v prihodnje pravilno naštet v tem spisu. <p> Če ste bolj leni, imam na svoji spletni strani kratek seznam <htmlurl name="priporočenih tiskalnikov" url="http://www.linuxprinting.org/suggested.html">. Ta se osredotoča na barvne brizgalnike in poceni laserske naprave; popolnoma združljive naprave je v srednjem in višjem cenovnem razredu veliko lažje najti. Ta dokument in spletno mesto lahko tudi podprete tako, da kupite prek mene na buy.com ali outpost.com. <sect2>Seznam združljivosti tiskalnikov<label id="PRINTER-COMPAT-LIST"> <p> Ta razdelek je povzetek <htmlurl name="spletne zbirke podatkov" url="http://www.linuxprinting.org/database.html">. Spletna različica vključuje specifikacije naprav, opombe, podatke o gonilnikih, dokumentacijo, ki jo vzdržujejo uporabniki, spletne strani izdelovalcev in vmesniške skripte za uporabo gonilnikov z več različnimi tiskalniškimi čakalnimi sistemi (tudi z LPR, LPRng, PDQ in CUPS). Spletna različica tega seznama je tudi interaktivna; ljudje lahko in tudi vseskozi dodajajo tiskalnike, zato si jo zagotovo oglejte. Končno, če vaš tiskalnik ni dodan, ga dodajte! <p> Vedite, da ta seznam ni brez napak; ljudje včasih dodajo nepravilno informacijo, ki jo prej ali slej zbrišem. Vnosi, ki jih nisem preveril, so označeni z zvezdico (*). Preden se na podlagi tega seznama odločite za nakup tiskalnika, preverite v Dejanews, ali res komu deluje. Če v Dejanews ne najdete podatkov, mi pišite, in povezal vas bom s tistim, ki je dodal tiskalnik. <p> Tiskalniki so razdeljeni v tri kategorije: <descrip> <tag>popolni</tag> Popolni tiskalniki delujejo popolno -- tiskate lahko do skrajnih zmogljivosti tiskalnika, tudi z barvami, polno ločljivostjo itd. V redkih primerih so tiskalniki z nedokumentiranimi načini ,,izboljšave ločljivosti``, ki ne delajo, našteti kot popolno; na splošno je razlika v kakovosti natisnjenega dovolj majhna, da ni vredna skrbi. <tag>večinoma</tag> Tiskate lahko dobro, a morda so take ali drugačne manjše omejitve bodisi pri tiskanju ali drugih lastnostih. <tag>delni</tag> Lahko tiskate, a morda ne v barvah ali le pri slabi ločljivosti. Glej spletni seznam za podatke o omejitvah. <tag>obtežilniki za papir</tag> Z njimi ne morete natisniti hudirjeve stvari; tipično je to zaradi pomanjkanja gonilnikov in/ali dokumentacije o tem, kako jih napisati. Obtežilniki za papir se lahko tu in tam ,,promovirajo``, bodisi takrat, ko kdo odkrije, da deluje obstoječi gonilnik, bodisi takrat, ko kdo napiše nov gonilnik, vendar se na to ne zanašajte. </descrip> V vseh primerih velja, da nihče ne zagotavlja, da so podatki pravi, saj jih je sestavilo na ducate ljudi; vnosi z zvezdico (*) so še posebej sumljivi. Dejstva pa je kljub temu lahko ugotoviti prek spletnih strani z gonilniki in spletnega mesta izdelovalca. <p> In brez nadaljnjega zavlačevanja je tu seznam združljivosti tiskalnikov: <descrip> <tag>Alps</tag> <descrip> <tag>popolnoma</tag> MD-1000, MD-1300, MD-2000, MD-4000, MD-5000 </descrip> <tag>Apollo</tag> <descrip> <tag>večinoma</tag> P-1200 </descrip> <tag>Apple</tag> <descrip> <tag>popolnoma</tag> 12/640ps, Dot Matrix, ImageWriter, ImageWriter LQ, LaserWriter 16/600*, LaserWriter IINTX*, LaserWriter IIg, LaserWriter Select 360 <tag>večinoma</tag> Color StyleWriter 1500, Color StyleWriter 2200, Color StyleWriter 2400, Color StyleWriter 2500, LaserWriter NT, StyleWriter 1200, StyleWriter I, StyleWriter II </descrip> <tag>Avery</tag> <descrip> <tag>popolnoma</tag> Personal Label Printer+ <tag>večinoma</tag> Personal Label Printer </descrip> <tag>Brother</tag> <descrip> <tag>popolnoma</tag> HL-4Ve, HL-8, HL-10V, HL-10h, HL-630, HL-660, HL-720, HL-730, HL-760, HL-820, HL-1020, HL-1040, HL-1070*, HL-1250, HL-1260, HL-1270N, HL-1660e, HL-2060 <tag>večinoma</tag> HJ-400, HL-1050, HL-1060, HL-1240 <tag>delno</tag> DCP-1200, HL-1030*, MC-3000, MFC 7150C, MFC-4350, MFC-6550MC, MFC-8300, MFC-9100c, MFC-9500, MFC-9600 <tag>obtežilnik</tag> 4550*, MP-21C </descrip> <tag>C.Itoh</tag> <descrip> <tag>popolnoma</tag> M8510 </descrip> <tag>CalComp</tag> <descrip> <tag>popolnoma</tag> Artisan 1023 penplotter* </descrip> <tag>Canon</tag> <descrip> <tag>popolnoma</tag> BJ-5, BJ-10e, BJ-20, BJ-200, BJ-330, BJC-70, BJC-210, BJC-250, BJC-600, BJC-610, BJC-620, BJC-800, BJC-4000, BJC-4100, BJC-4200, BJC-4300*, BJC-4400*, GP 335, GP 405, LBP-4+, LBP-4U, LBP-8A1, LBP-430, LBP-1260, LBP-1760, LIPS-III <tag>večinoma</tag> BJC-80, BJC-240, BJC-1000*, BJC-2000*, BJC-2100, BJC-3000, BJC-4310SP, BJC-7004*, LBP-4sx <tag>delno</tag> BJ-300, BJC-210SP, BJC-4550, BJC-6000*, BJC-6100, BJC-7000*, BJC-7100*, BJC-8200, MultiPASS C2500*, MultiPASS C3000, MultiPASS C3500*, MultiPASS C5000*, MultiPASS C5500 <tag>obtežilniki</tag> BJC-5000, BJC-5100, BJC-6500, BJC-8000, LBP-460*, LBP-600, LBP-660*, Multipass L6000* </descrip> <tag>Citizen</tag> <descrip> <tag>popolnoma</tag> ProJet II*, ProJet IIc <tag>večinoma</tag> printiva600C </descrip> <tag>Compaq</tag> <descrip> <tag>delno</tag> IJ300, IJ750, IJ900 </descrip> <tag>DEC</tag> <descrip> <tag>popolnoma</tag> DECWriter 500i*, DECwriter 110i*, DECwriter 520ic*, LA50*, LA75*, LA75 Plus*, LN03*, LN07* <tag>večinoma</tag> LJ250*, LN17 <tag>delno</tag> 1800* </descrip> <tag>Dymo-CoStar</tag> <descrip> <tag>popolnoma</tag> ASCII 250*, ASCII+*, EL40*, EL60*, LabelWriter II*, LabelWriter XL*, LabelWriter XL+*, SE250*, SE250+*, Turbo* </descrip> <tag>Epson</tag> <descrip> <tag>popolnoma</tag> Action Laser II, ActionLaser 1100*, ActionPrinter 3250, Dot Matrix, L-1000*, LP 8000, LQ-24, LQ-500, LQ-570+, LQ-850, LQ-2550, LX-1050, SQ 1170, Stylus Color, Stylus Color 400, Stylus Color 440, Stylus Color 460, Stylus Color 480, Stylus Color 500, Stylus Color 600, Stylus Color 640, Stylus Color 660, Stylus Color 740, Stylus Color 760, Stylus Color 800, Stylus Color 860, Stylus Color 880, Stylus Color 900, Stylus Color 980, Stylus Color 1160, Stylus Color 1500, Stylus Color 1520, Stylus Color 3000, Stylus Color I, Stylus Color PRO, Stylus Photo, Stylus Photo 700, Stylus Photo 720, Stylus Photo 750, Stylus Photo 870, Stylus Photo 1200, Stylus Photo 1270, Stylus Photo EX <tag>večinoma</tag> EPL-5700 Stylus Color 300 Stylus Color 670* Stylus Color 850 Stylus Color II Stylus Color IIs Stylus Pro XL <tag>delno</tag> Stylus Photo 2000P <tag>obtežilnik</tag> EPL-5700L </descrip> <tag>Fujitsu</tag> <descrip> <tag>popolnoma</tag> 1200*, 2400*, 3400*, PrintPartner 10V*, PrintPartner 16DV*, PrintPartner 20W*, PrintPartner 8000* </descrip> <tag>HP</tag> <descrip> <tag>popolnoma</tag> 2000C, 2500C, Color LaserJet 4500, DesignJet 3500CP, DeskJet, DeskJet 400, DeskJet 420C, DeskJet 500, DeskJet 500C, DeskJet 510, DeskJet 520, DeskJet 540, DeskJet 550C, DeskJet 560C, DeskJet 600, DeskJet 1200C, DeskJet 1600C, DeskJet 1600CM, LaserJet, LaserJet 2 w/PS*, LaserJet 2D, LaserJet 2P, LaserJet 2P Plus, LaserJet 3, LaserJet 3D, LaserJet 3P w/PS, LaserJet 4 Plus, LaserJet 4L, LaserJet 4M, LaserJet 4ML*, LaserJet 4P, LaserJet 5, LaserJet 5L*, LaserJet 5M*, LaserJet 5MP*, LaserJet 5P*, LaserJet 6, LaserJet 6L*, LaserJet 6MP*, LaserJet 1100, LaserJet 2100, LaserJet 2100M, LaserJet 4050N, LaserJet 5000, LaserJet 8000, LaserJet 8100, LaserJet Plus*, LaserJet Series II*, Mopier 240*, Mopier 320*, PaintJet*, PaintJet XL*, PaintJet XL300*, ThinkJet* <tag>večinoma</tag> Color LaserJet 5, DesignJet 230*, DesignJet 350C, DesignJet 650C*, Designjet 750 C Plus*, DeskJet 310, DeskJet 610C, DeskJet 610CL, DeskJet 612C, DeskJet 660C, DeskJet 670C, DeskJet 672C, DeskJet 682C, DeskJet 690C, DeskJet 692C, DeskJet 694C, DeskJet 697C, DeskJet 710C*, DeskJet 712C, DeskJet 720C*, DeskJet 722C*, DeskJet 810C, DeskJet 812C, DeskJet 815C*, DeskJet 820C, DeskJet 832C, DeskJet 840C, DeskJet 842C*, DeskJet 850C, DeskJet 855C, DeskJet 870C, DeskJet 870Cse*, DeskJet 870Cxi, DeskJet 880C, DeskJet 882C, DeskJet 895C, DeskJet 895Cxi*, DeskJet 932C, DeskJet 950C*, DeskJet 970C, DeskJet 970Cse, DeskJet 1100C, DeskJet 1120C, DeskJet 1220C, LaserJet 2, LaserJet 6P, LaserJet 4000, PSC 500* <tag>delno</tag> Color LaserJet 5000, DeskJet 320, DeskJet 340C, DeskJet 890C, DeskJet 930C, DeskJet 1000C, LaserJet 1100A, OfficeJet 500*, OfficeJet 600*, OfficeJet 625*, OfficeJet 635*, OfficeJet 710*, OfficeJet Pro 1170C*, OfficeJet Pro 1175C*, OfficeJet R45*, OfficeJet R60, PhotoSmart P1000, PhotoSmart P1100* <tag>obtežilnik</tag> LaserJet 3100*, LaserJet 3150 </descrip> <tag>Heidelberg</tag> <descrip> <tag>popolnoma</tag> Digimaster 9110* </descrip> <tag>Hitachi</tag> <descrip> <tag>popolnoma</tag> DDP 70 (z MicroPress)* </descrip> <tag>IBM</tag> <descrip> <tag>popolnoma</tag> 3853 JetPrinter*, 4019*, 4029 10P*, 4303 Network Color Printer*, Execjet 4072*, Page Printer 3112*, ProPrinterII* </descrip> <tag>Imagen</tag> <descrip> <tag>popolnoma</tag> ImPress* </descrip> <tag>Infotec</tag> <descrip> <tag>popolnoma</tag> infotec 4651 MF* </descrip> <tag>Kodak</tag> <descrip> <tag>popolnoma</tag> DigiSource 9110*, IS 70 CPII* </descrip> <tag>Kyocera</tag> <descrip> <tag>popolnoma</tag> F-3300, FS-600*, FS-600 (KPDL-2)*, FS-680*, FS-800*, FS-1200*, FS-1700+*, FS-1750*, FS-3750*, FS-5900C*, P-2000*, <tag>večinoma</tag> F-800T*, FS-3500* </descrip> <tag>Lexmark</tag> <descrip> <tag>popolnoma</tag> 4039 10plus, Optra Color 40, Optra Color 45, Optra Color 1200, Optra Color 1275, Optra E*, Optra E+*, Optra E310, Optra E312, Optra Ep*, Optra K 1220*, Optra R+*, Optra S 1250*, Optra S 1855*, Optra Se 3455*, Optra W810, Valuewriter 300*, Z32 <tag>večinoma</tag> 1020 Business, 3000 <tag>delno</tag> 1000, 1100, 2030, 2070, 3200, 5000, 5700, 7000, 7200, Winwriter 400*, Z11*, Z51 <tag>obtežilnik</tag> 1020, 2050, Winwriter 100*, Winwriter 150c*, Winwriter 200*, Z22, Z52* </descrip> <tag>Minolta</tag> <descrip> <tag>popolnoma</tag> PagePro 6* PagePro 6e* PagePro 6ex* PagePro 8* <tag>delno</tag> PagePro 8L* <tag>obtežilnik</tag> PagePro 6L </descrip> <tag>Mitsubishi</tag> <descrip> <tag>popolnoma</tag> CP50 Color Printer* </descrip> <tag>NEC</tag> <descrip> <tag>popolnoma</tag> P2X*, PinWriter P6*, PinWriter P6 plus*, PinWriter P7*, PinWriter P7 plus*, PinWriter P60*, PinWriter P70*, SilentWriter LC 890*, Silentwriter2 S60P*, Silentwriter2 model 290*, SuperScript 660i*, SuperScript 1800 <tag>večinoma</tag> Silentwriter 95f* <tag>delno</tag> SuperScript 100C*, SuperScript 150C*, SuperScript 650C*, SuperScript 750C*, SuperScript 860*, SuperScript 870*, SuperScript 1260* <tag>obtežilnik</tag> SuperScript 610plus*, SuperScript 660*, SuperScript 660plus* </descrip> <tag>Oce</tag> <descrip> <tag>popolnoma</tag> 3165* </descrip> <tag>Okidata</tag> <descrip> <tag>popolnoma</tag> ML 380*, OL 410e, OL 600e*, OL 610e/PS, OL 800, OL 810e/PS, OL400ex, OL810ex, OL820*, OL830Plus, Okipage 6e, Okipage 6ex*, Okipage 8c, Okipage 8p, Okipage 10e, Okipage 12i, Okipage 20DXn <tag>večinoma</tag> Microline 182, OL 400w*, OL 610e/S, OkiPage 4w+*, OkiPage 8w Lite*, OkiPage 8z*, Okijet 2500*, Okipage 4w*, Okipage 8w*, Super 6e <tag>delno</tag> Microline 192+, Okipage 6w* <tag>obtežilnik</tag> Okijet 2010 </descrip> <tag>Olivetti</tag> <descrip> <tag>popolnoma</tag> JP350S*, JP450*, JP470*, PG 306* </descrip> <tag>PCPI</tag> <descrip> <tag>popolnoma</tag> 1030* </descrip> <tag>Panasonic</tag> <descrip> <tag>popolnoma</tag> KX-P1123*, KX-P1124*, KX-P1150*, KX-P1180i*, KX-P2023*, KX-P2135*, KX-P2150*, KX-P4410*, KX-P4450*, KX-P5400*, KX-P8420*, KX-P8475*, KX-PS600*, kx-p1624* <tag>večinoma</tag> KX-P2123*, KX-P6150* <tag>delno</tag> KX-P6500* <tag>obtežilnik</tag> KX-P6100*, KX-P6300 GDI*, KX-P8410* </descrip> <tag>Printrex</tag> <descrip> <tag>delno</tag> 820 DL* </descrip> <tag>QMS</tag> <descrip> <tag>popolnoma</tag> 2425 Turbo EX*, LPK-100* <tag>večinoma</tag> magicolor 2+*, ps-810* <tag>obtežilnik</tag> magicolor 2 </descrip> <tag>Raven</tag> <descrip> <tag>večinoma</tag> LP-410 </descrip> <tag>Ricoh</tag> <descrip> <tag>popolnoma</tag> 4081*, 4801*, 6000*, Aficio 220*, Aficio AP2000 <tag>večinoma</tag> Aficio 401* <tag>obtežilnik</tag> Aficio Color 2206*, Afico FX10* </descrip> <tag>Samsung</tag> <descrip> <tag>popolnoma</tag> ML-85*, ML-4600*, ML-5000a*, ML-6000/6100*, ML-7000/7000P/7000N*, ML-7050*, QL-5100A*, QL-6050*, SI-630A* <tag>večinoma</tag> ML-85G, QL-85G <tag>obtežilnik</tag> ML-5050G*, SF/MSYS/MJ-4700/4800/4500C* </descrip> <tag>Seiko</tag> <descrip> <tag>popolnoma</tag> SpeedJET 200* <tag>večinoma</tag> SLP*, SLP 120*, SLP 220*, SLP EZ30*, SLP Plus*, SLP Pro* </descrip> <tag>Sharp</tag> <descrip> <tag>popolnoma</tag> AR-161* </descrip> <tag>Star</tag> <descrip> <tag>popolnoma</tag> LC24-100*, LS-04, NL-10* <tag>večinoma</tag> LC 90*, LC24-200*, StarJet 48* <tag>obtežilnik</tag> WinType 4000* </descrip> <tag>Tally</tag> <descrip> <tag>popolnoma</tag> MT908* </descrip> <tag>Tektronix</tag> <descrip> <tag>popolnoma</tag> 3693d color printer, 8-bitni način*, 4693d color printer, 2-bitni način*, 4693d color printer, 4-bitni način*, 4695*, 4696*, 4697*, Phaser 780, Phaser 850*, Phaser IISX*, Phaser PX* </descrip> <tag>Xerox</tag> <descrip> <tag>popolnoma</tag> 2700 XES, 3700 XES, 4045 XES*, DocuPrint 4508, DocuPrint C20, DocuPrint C55*, DocuPrint N17, DocuPrint N32*, Document Centre 400* <tag>večinoma</tag> DocuPrint C6*, DocuPrint P8e, DocuPrint P12*, Docuprint C6*, Docuprint C8*, XJ6C* <tag>delno</tag> Document Homecentre, WorkCentre 450cp*, WorkCentre 470cx*, XJ8C* <tag>obtežilnik</tag> DocuPrint P8*, Work Centre XK35c, WorkCenter XE90fx*, WorkCentre XD120f*, WorkCentre XE80, workcentre 385*, </descrip> </descrip> <p> * Tega vnosa osebno nisem preveril. <sect1>Kako kupiti tiskalnik<label id="SHOPPING"> <p> Dandanes je kar težko kupiti tiskalnik; izbiramo lahko med številnimi modeli. Tu je nekaj nasvetov za nakup: <descrip> <tag>cena</tag> Dobite to, kar plačate. Večina tiskalnikov pod 200--300 dolarji bo tiskala zelo dobro, a tiskanje na stran bo drago. Pri nekaterih tiskalnikih cena ene ali dveh kartuš že dosega ceno novega tiskalnika! Podobno najcenejši tiskalniki ne bodo zdržali prav dolgo. Pri najcenejših tiskalnikih, na primer, je obdobje med napakami približno tri <em>mesece</em>; očitno so neprimerni za pogosto rabo. <tag>brizgalniki</tag> Glave brizgalnih tiskalnikov se bodo sčasoma zamašile tako, da jih ne bo moč več popraviti, zato je možnost nekakšne zamenjave glave odlika. Tiskalne glave brizgalnikov so drage, integrirane glave s kartušami stanejo desetkrat (!) toliko kot le kartuše s črnilom, zato je možnost zamenjave glave po potrebi odlika. Tiskalniki serije Epson Stylus imajo fiksne glave, tiskalniki HP DeskJet pa glave, integrirane s kartušami. Tiskalniki Canon imajo tridelne kartuše z neodvisno zamenljivimi črnilniki; ta zasnova mi je všeč. Po drugi strani kartuše HP niso zelo dražje in HP ponuja boljšo linijo izdelkov; Canon je pogosto tretja izbira s stališča kakovosti natisnjenega; in tiskalniki Epson Stylus so trenutno najbolje podprti v Linuxu. Preprosto ne morete zmagati. <tag>laserji</tag> Laserski tiskalniki porabljajo boben in barvilo v prahu ter malo ploščico za brisanje barvila. Najcenejša zasnova obsega barvilo in boben skupaj v veliki kartuši; te zasnove so najdražje za uporabo. Najboljše zasnove za veliko tiskanja imajo navadno barvilo v prahu ali vsaj posebne kartuše z barvilom in bobne. <tag>fotografija</tag> Najboljši fotografski izhod je izhod tonerskih tiskalnikov, ki uporabljajo srebrov halid in laserski pristop do izdelave -- presenečenje! -- pravih fotografij. Ker ti tiskalniki stanejo na desetine tisočev dolarjev, <htmlurl name="Ofoto.com" url="http://www.ofoto.com/"> ponuja posamična tiskalniška opravila, ki niso ravno draga. Rezultati so osupljivi; celo najboljši brizgalniki se ne morejo primerjati z njimi. <p> Najboljše tiskanje fotografij, ki je še cenovno ugodno, prihaja iz <!-- ??? dye-sublimation --> voščeno-sublimacijskih naprav, kot so nekateri članki serij Alps (termični prenos suhega črnila ali sublimacija voska). Žal so zelo slabo podprte v Linuxu (edino poročilo govori o zrnatih slikah z vidnimi pasovi), in celo tedaj ni jasno, ali je sublimacija voska podprta. <p> Bolj navadni za fotografije specializirani tiskalniki navadno izvajajo 6-barvno tiskanje CMYKcm ali celo 7-barvni proces CMYKcmy. Vsi za fotografije specializirani tiskalniki so dragi za uporabo; ali vam vedno zmanjka modre in morate zamenjati celotno kartušo ali pa je vnovično polnjenje posamezne barve za vaš visoko kakovostni tiskalnik fotografij drago ko žafran. Tudi posebni papirji so zelo dragi; pričakujete lahko, da bo izhod visoko kvalitetnega brizgalnega tiskalnika za fotografije stal več kot 1 dolar na stran. Glej tudi razdelek o tiskanju fotografij v nadaljevanju tega dokumenta in razdelke o niansiranju barv (kot je) v ghostscriptu. <tag>hitrost</tag> Hitrost je proporcionalna moči obdelovanja, pasovni širini in splošni ceni tiskalnika. Najhitrejši računalniki so omrežni postscriptni tiskalniki z zmogljivimi notranjimi procesorji. Tiskalniki za široko potrošnjo bodo odvisni delno od hitrosti upodabljanja postscripta v ghostscriptu, na katero lahko vplivate tako, da imate razumno dobro zmogljiv stroj; polne strani barve lahko še posebej porabijo velike količine pomnilnika v gostitelju. Če zares <em>imate</em> ta pomnilnik, bi morale stvari dobro potekati. <tag>obrazci</tag> Če želite tiskati obrazce v več izvodih, boste potrebovali tiskalnik, ki udarja; številna podjetja še vedno izdelujejo matrične tiskalnike, večina od njih pa zna posnemati tradicionalne modele Epson in torej dobro delujejo. <tag>nalepke</tag> Obstajata dve podprti liniji tiskalnikov nalepk; poiščite modele Dymo-Costar in Seiko SLP. Drugi modeli lahko delujejo ali pa tudi ne. Avery tudi izdeluje različne velikosti nalepk formata 8,5×11, ki jih lahko poganjate skozi običajni tiskalnik. <tag>risanje</tag> Veliki formati za načrte so navadno podprti z velikanskimi brizgalnimi tiskalniki; HP je priljubljen izbor. Brizgalniki srednje velikosti (11 × 17 palcev) se tudi pogosto uporabljajo za manjše natise. Veliko risanja te vrste se opravi z jeziki RTL, HP-GL in HP-GL/2; vsi ti so lastniški vektorski jeziki HP, navadno generirani z aplikacijskim programom. </descrip> <sect2>Kaj imam jaz? <p> Imam tiskalnike HP Deskjet 500, Lexmark Optra 40 in Canon BJC-4100. Vsi perfektno delujejo: HP in Canon sta starejša modela, dobro podprta v ghostscriptu; Optra pa je sodoben barvni brizgalnik s polno podporo postscriptu in PCL 5 (!). <p> Imam tudi omrežni tiskalniški strežnik Hawking Technology 10/100 Ethernet (model 7117, pravzaprav izdelek tajvanskega podjetja Zero One Technologies); to mi omogoča, da vtaknem tiskalnik kamorkoli, kjer sta priključek za elektriko in omrežje, namesto le blizu računalnika. To je mali privesek, ki se natakne na vzporedna vrata tiskalnika in ima na drugi strani omrežni priključek. Edina napaka pri tem je, da ne podpira dvosmerne komunikacije, zato ne morem urediti, da bi poslal e-pošto, ko mu zmanjkuje črnila. <sect>Čakalniško programje <p> Do nedavna so imeli uporabniki Linuxa preprosto izbiro -- vsi so uporabljali stari <tt>lpd</tt>, 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, skupaj s Sunovim Solarisom, prihajajo s povsem drugačnim tiskalniško čakalnim (<em>spooling</em>) paketom, osredotočenim na <tt>lpsched</tt>. <p> Danes so na voljo številni dobri sistemi, med katerimi lahko izbirate. Opisujem jih spodaj; preberite opise in se odločite. PDQ je najpreprostejši sodobni sistem z grafičnim vmesnikom; primeren je tako za osnovno domačo rabo kakor (v hibridni sestavi <tt>pdq</tt>/<tt>lprng</tt>) v številnih velikih okoljih. Za poslovno rabo s pretežno omrežnimi tiskalniki postscript je dobra alternativa vmesniški program kot GPR z LPRng; izbire PPD obdeluje neposredno in ima rahlo prijaznejši vmesnik. V drugih primerih je dobra izbira CUPS; tudi ta ima izvrstno podporo postscriptnim tiskalnikom, IPP, Ima spletni vmesnik in številne druge odlike. <sect1>LPD <p> LPD (angl. Line Printer Daemon), prvotni tiskalniški strežnik iz sistemov BSD Unix, je bil leta in leta standard v Unixu. Na voljo je v vsaki vrsti Unixa in ponuja bolj minimalen nabor lastnosti, izpeljanih iz potreb računalništva deljenih časov (angl. timesharing-era computing). Kljub tej nekam čudni zgodovini je danes še vedno uporaben kot osnovno tiskalniški čakalniški strežnik. Da bi bil zares uporaben s sodobnim tiskalnikom, je treba precej dodatnega dela v obliki spremljajočih filtrirnih skriptov in vmesniških programov. A ti so na voljo in LPD deluje. <p> LDP je tudi ime omrežnega tiskalniškega protokola, ki ga določa <htmlurl name="RFC 1179" url="http://www.ietf.org/rfc/rfc1179.txt">. Ta omrežni protokol govori ne le sam strežnik LPD, temveč pravzaprav katerikoli omrežni tiskalniški strežnik, omrežni tiskalnik in katerikoli program za čakalno tiskanje (angl. print spooler), ki je na voljo; LPD je najmanjši skupni imenovalec omrežnega tiskanja, ki temelji na standardih. <p> LPRng (glej razdelek <ref id="LPRNG-WHICH-SPOOLER" name="LPRng">) je dosti boljša izvedba osnovne zasnove LPD od navadne; če morate uporabljati LPD, premislite, ali bi raje uporabljali LPRng. Precej manj vuduja bo treba, da ga prepričate v to, kar bi radi, in kar že je vuduja, je dobro dokumentiran. <p> Po svetu kroži veliko izvirnih kod LPD. Neka vrsta BSD Unixa je verjetno uradni lastnik, a vsakdo izvaja spremembe, kakor mu je drago, in vse te se križajo na neznane načine, tako da je težko natanko reči, kateri LPD imate. Od že pripravljenih LPD VA Linux ponuja enega z nekaj drobnimi spremembami, ki naredijo uporabniški vmesnik bolj fleksibilen. Paket <htmlurl name="SourceForge LPD" url="http://sourceforge.net/project/?group_id=3800"> podpira zastavico <tt>-o</tt> v ukazni vrstici; izbire se potem prenesejo filtrom. To je podobno lastnostim, ki jih ponuja precej tradicionalnih izdelovalcev Unixa, in podobno (čeprav nezdružljivo) kot makor mehanizem z izbiro <tt>-z</tt> v LPRng. <sect2>Uporabniški vmesniki za LPD <p> Če se odločite za LPD, je najbolje, da ga uporabljate prek uporabniškega vmesnika. Kar nekaj jih je, med katerimi lahko izbirate; GPR (glej <ref id="HOW-WITH-GUI-TOOLS" name="Tiskalniška orodja z grafičnim uporabniškim vmesnikom">) in XPDQ (glej razdelek <ref id="PDQ-WHICH-SPOOLER" name="PDQ">) sta morda najboljša. So pa tudi drugi; povejte mi zanje. <sect1>PDQ<label id="PDQ-WHICH-SPOOLER"> <p> <htmlurl name="PDQ" url="http://feynman.tam.uiuc.edu/pdq/"> je nedemonski tiskalniški sistem, ki ima vgrajeno in razumno skladnjo za nastavitev gonilnika. To vključuje možnost deklaracij tiskalniških izbir in orodje z grafičnim vmesnikom ali ukazno vrstico, ki mu je moč podati te izbire; uporabniki dobijo prijetno pogovorno okno, v katerem podajo ločljivost, dupleksiranje, vrsto papirja itd. (glej sliko 7). <p> <bf>Slika 6. Glavno okno XPDQ. snapshot-xpdq-main.gif</bf> <p> Poganjanje vseh filtrov kot uporabnik ima številne prednosti: možni varnostni problemi v postscriptu večinoma izginejo, večdatotečna opravila v LaTeXu se lahko učinkovito natisnejo kot datoteke DVI in tako naprej. <p> To je to, kar zdaj uporabljam; napisal sem datoteke s specifikacijami za svoje tiskalnike in precej jih je vključenih v distribucijo, zato je mnogo primerov, na katerih lahko gradite svoje. Napisal sem tudi nekaj orodij, ki avtomatizirajo izdelavo specifikacij gonilnika, da bi pomagal preostanku med vami. <p> PDQ ni brez napak: najopazneje je, da obdela celotna opravila, preden jih pošlje tiskalniku. To pomeni, da za velika opravila PDQ preprosto ni praktičen -- lahko se vam stotine megabajtov prepisuje sem ter tja po disku. Še slabše, za počasnejše gonilnike, kot so tisti za boljše brizgalnike, se opravilo ne bo začelo tiskati, dokler ghostscript in gonilnik ne končata obdelovanja. To je lahko še precej minut po oddaji. <p> Če imate mnogo uporabnikov, mnogo tiskalnikov ali kaj drugega kompleksnejšega, priporočam, da uporabljate PDQ kot uporabniški vmesnik za omrežno tiskanje po protokolu LPD (na lokalnem stroju lahko tiskate prek protokola LPD). V večini teh primerov pa namesto uporabe tradicionalnega <tt>lpd</tt> iz BSD v ozadju priporočam LPRng. <p> <bf>Slika 7. Okno z izbirami gonilnika v XPDQ: SNAPSHOT-XPDQ-OPTIONS</bf> <sect1>LPRng<label id="LPRNG-WHICH-SPOOLER"> <p> Nekateri distributerji Linuxa (skupaj s podjetjem Caldera) ponujajo LPRng, dosti manj zastarelo izvedbo tiskalniškega čakanja. LPRng je precej lažje upravljati na velikih namestitvah (beri: več kot en tiskalnik, katerikoli zaporedni tiskalniki ali katerikoli čudni omrežni tiskalniki ne-lpd) in ima manj strašljivo naključno programsko osnovo kakor običajni <tt>lpd</tt>. 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. <p> LPRng tudi vključuje nekaj primerov nastavitev za pogoste omrežne tiskalnike, večinoma vrste HP LaserJet, ki vključujejo nekaj možnosti zaračunavanja. Če želite več podatkov o LPRng, preverite spletno stran <url name="LPRng Web Page" url="http://www.astart.com/lprng/LPRng.html">. LPRng uporablja bolj ali manj enak osnovni filtrirni model kakor <tt>lpd</tt> v BSD, zato se <htmlurl name="podpora LPD" url="http://www.linuxprinting.org/lpd-doc.html">, ki jo ponujam na svojem spletnem mestu, nanaša tudi na LPRng. To vam lahko pomaga učinkovito uporabljati proste programske gonilnike za veliko tiskalnikov. <p> LPRng se razširja bodisi pod licenco GPL ali pa pod umetniško licenco (angl. Artistic license). <sect1>PPR <p> <htmlurl name="PPR" url="http://ppr.trincoll.edu/"> je postscriptno usmerjen tiskalniški čakalni program, ki vključuje osnovno zmožnost razčlenjevanja postscripta, iz česar izpelje precej prijetnih lastnosti. Vključuje dobre zmožnosti obračunavanja opravil, dobro podporo odjemnikom Appletalk, SMB in LPD ter mnogo boljše upravljanje napak kakor <tt>lpd</tt>. PPR lahko, kot vsak tu omenjeni čakalni program, kliče ghostscript, da dela tudi z nepostscriptnimi tiskalniki. <p> Za PPR sem izvedel šele pred nedavnim; ne poznam nikogar, ki bi ga preskusil. Napisan je bil na Trinity College, kjer ga tudi uporabljajo. Licenca je v slogu BSD; prost za uporabo, a z omembo avtorstva. <p> Glede na dokumentacijo je nekam eksperimentalen. Zmaličena postscriptna opravila se nočejo tiskati; namesto tega se bodo odbila in uporabnik mora popraviti postscript. To je lahko za nekatera okolja neprimerno, čeprav večina uporabnikov generira postscript z malim številom generatorjev dobro definiranega postscripta, zato verjetno to ne bo prevelik problem. <sect1>CUPS <p> Zanimiv novinec je <htmlurl name="CUPS" url="http://www.cups.org/">, izvedba internetnega protokola za tiskanje (angl. Internet Printing Protocol, IPP), standard RFC za nadomestilo starega (in pomanjkljivega) protokola LPD, podoben HTTP. Izvedbo sistema CUPS je vodil Michael Sweet iz podjetja Easy Software Products; CUPS se razširja pod GPL. <!-- venerable, klunky, quirks --> <p> Končno sem opravil nekaj dela s CUPS in res deluje tako, kot ga oglašujejo. Vključuje vrsto zelo dobrih lastnosti, tudi razumno delo z izbirami spletnega vmesnika in vmesnikov v ukazni vrstici ter filtrirnega sistema, temelječega na MIME, z močno podporo postscriptu. Ker je tako nov, ima še nekaj hroščev in v tem trenutku (različica 1.1) ga je težko priporočati za velike ali varne namestitve. Je pa dobra rešitev za manjše namestitve ali posebej velike namestitve z uporabniki, ki jim zaupamo. <p> Podobno kakor druge sisteme lahko tudi CUPS uporabljate z večino gonilnikov. Žal je nekam težko prikrojiti poljuben gonilnik za uporabo s CUPS -- vsaj, če želite, da delujejo vse izbire -- zato je najbolje poiskati datoteko PPD in filtrirni skript, da usposobite svoj gonilnik. S sistemom CUPS lahko uporabljate vsaj štiri nabore gonilnikov: <descrip> <tag><htmlurl name="CUPS-O-Matic" url="http://www.linuxprinting.org/cups-doc.html"></tag> Moj spletno zasnovani sistem CUPS-O-Matic lahko izdeluje primerne datoteke PPD za rabo s katerimkoli tiskalniškim gonilnikom, katerega vse podrobnosti so vnesene v zbirko podatkov o tiskanju v Linuxu (angl. Linux Printing Database). PPD se uporablja skupaj s skriptom v ozadju, imenovanim <tt>cupsomatic</tt>. CUPS-O-Matic uporablja gonilnike, ki so prosto programje. Trenutno se osredotočam bolj na pravilnost kot na popolnost, zato je v resnici podprtih le nekaj gonilnikov. To se bo sčasoma spremenilo. <tag><htmlurl name="Gonilniki za CUPS in KUPS" url="http://cups.sourceforge.net/"></tag> Projekt za izdelavo gonilnikov za CUPS zbira datoteke PPD, uporabne bodisi s tiskalniki postscripta ali filtrom v ozadju, imenovanim <tt>ps2gs2raw</tt>. Te datoteke PPD uporabljajo gonilnike, ki so prosto programje. KUPS je spremljajoči program za prikrojitev. <tag>Datoteke PPD za postscript</tag> CUPS lahko neposredno uporablja datoteke PPD za postscriptne tiskalnike, ki jih prilaga izdelovalec. Pogosto so na voljo kot gonilniki za tiskalnik v Windows ali pa jih najdemo na spletni strani izdelovalca. <htmlurl name="Adobe" url="http://www.adobe.com/products/printerdrivers/winppd.html"> prav tako razširja datoteke PPD za številne postscriptne tiskalnike. <tag>ESP Print Pro</tag> Podjetje <htmlurl name="Easy Software Products, Inc." url="http://www.easysw.com/"> prodaja CUPS v paketu z zbirko lastniških gonilnikov. Čeprav ti niso prosto programje, poganjajo številne pogoste tiskalnike. Paket je nekam drag, če ga merimo po ceni enega podprtega tiskalnika, a vsekakor ima svoje mesto. Ti gonilniki sicer ne slovijo kot zelo dobri, so pa nekako vseobsegajoči in tudi povprečna kakovost tiskanja je boljša kakor obtežilnik za papir. </descrip> <p> Program neodvisnega izdelovalca, <htmlurl name="XPP" url="http://www.phy.uni-bayreuth.de/till/xpp/"> (glej <ref id="SNAPSHOT-XPP-MAIN" name="sliko 4">), ponuja zelo prijeten grafični uporabniški vmesnik funkcionalnosti CUPS, skupaj s čudovitim vmesnikom za izbire tiskanja (prikazane na sliki <ref id="SNAPSHOT-XPP-OPTIONS" name="sliki 5">). Za podatke o uporabi XPP glej razdelek <ref id="XPP-SECT" name="XPP">. -------------- <sect>Kako vse skupaj deluje <p> Če želite pravilno usposobiti tiskanje, morate razumeti, kako deluje sistem za tiskanje s čakalno vrsto. Vsi sistemi v bistvu delujejo enako, čeprav se lahko pravi vrstni red malce razlikuje in nekateri sistemi preskočijo korak ali dva: <p> <bf>Slika 8: Ilustracija čakalnega tiskanja</bf> <p> <enum> <item> Uporabnik odda opravilo skupaj s svojim izborom izbir. Podatki opravila so navadno, a ne vedno, postscript. <item> Čakalni sistem prepiše opravilo in izbire prek omrežja v splošni smeri tiskalnika. <item> Čakalni sistem čaka, da je tiskalnik prost. <item> Čakalni sistem za opravilo uporabi izbire, ki jih je izbral uporabnik, in preslika podatke opravila v domorodni jezik tiskalnika, ki navadno ni postscript. Ta korak se imenuje <em>filtriranje</em>; večina dela pri vzpostavljanju stvari je v tem, da se izvede pravilno filtriranje. <item> Opravilo je končano. Čakalni sistem navadno na tej točki izvede določeno čiščenje. Če je vmes nastala napaka, bo čakalni sistem o tem navadno nekako obvestil uporabnika (na primer po e-pošti). </enum> <sect1>PDQ <p> Angleška kratica PDQ pomeni ,,Print, Don't Queue`` -- tiskaj, ne čaka v vrsti -- in način, na katerega deluje, zrcali to zasnovo. Ko za tiskanje uporabljate PDQ, se izvede naslednje zaporedje dogodkov: <itemize> <item> Poženete <tt>pdq</tt> ali <tt>xpdq</tt> in mu podaste datoteko. <item> Določite tiskalnik. <item> Določite nastavitve za različne izbire in argumente, definirane v gonilniški datoteki tiskalnika za PDQ (dupleks, število izvodov, kakovost tiskanja in tako naprej). <item> PDQ analizira vsebino tega, kar ste natisnili, in upošteva navodila v gonilniški datoteki PDQ, ki mu povejo, kako naj obdela vaše podatke za ta tiskalnik z vašimi izbirami. <item> PDQ pošlje obdelane podatke tiskalniku glede na vmesnik, definiran za ta tiskalnik (naravnost na <tt>/dev/lp0</tt> ali omrežnemu strežniku LPD, prek omrežja sistemu Apple ali Microsoft ali celo na faks). <item> Če PDQ ne more takoj poslati podatkov tiskalniku, izvali proces v ozadju, ki čaka in poskuša znova, dokler mu ne uspe ali ne prekorači časovne omejitve. </itemize> V vsakem trenutku tega postopka, in pozneje, lahko stanje vsakega tiskalniškega opravila vidite in pregledujete z <tt>xpdq</tt>. Opravila, ki so spodletela, so označena z rdečo in jih lahko pošljete znova. <sect1>LPD <p> Lpd pomeni <em>Line Printer Daemon</em> (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. To so: <p> <descrip> <tag><tt><htmlurl name="lpd" url="http://www.linuxprinting.org/man/lpd.8.html"></tt></tag> Čakalniški pritajeni strežnik. Eden od teh teče in nadzoruje vse v stroju <bf>in</bf> po eden teče na vsak tiskalnik, ko tiskalnik tiska. <tag><tt><htmlurl name="lpr" url="http://www.linuxprinting.org/man/lpr.1.html"></tt></tag> Uporabniški čakalni ukaz. Lpr stopi v stik z lpd in vstavi novo tiskalniško opravilo v čakalno vrsto. <tag><tt><htmlurl name="lpq" url="http://www.linuxprinting.org/man/lpq.1.html"></tt></tag> Navede opravila v tiskalniški čakalni vrsti. <tag><tt><htmlurl name="lpc" url="http://www.linuxprinting.org/man/lpc.8.html"></tt></tag> Nadzorni ukaz sistema lpd. Z <tt>lpc</tt> lahko ustavite, zaženete, preuredite itd. opravila v tiskalniški čakalni vrsti. <tag><tt><htmlurl name="lprm" url="http://www.linuxprinting.org/man/lprm.1.html"></tt></tag> <tt>lprm</tt> odstrani opravilo iz tiskalniške čakalne vrste. </descrip> <p> Kako gre to skupaj? Zgodi se naslednje: <enum> <item> Ko se računalnik zažene, se požene <tt>lpd</tt>. Čaka na povezave in upravlja tiskalniške čakalne vrste. <item> Uporabnik odda opravilo z ukazom <tt>lpr</tt> ali podobnim vmesnikom, denimo GPR, PDQ itd. <tt>lpr</tt> prek omrežja kontaktira <tt>lpd</tt> in preda uporabnikovo datoteko (s podatki za tiskanje) in nadzorno datoteko (z uporabnikovimi izbirami). <item> Ko tiskalnik postane dostopen, glavni <tt>lpd</tt> izvali otroški <tt>lpd</tt>, ki obdela tiskalniško opravilo. <item> Otroški <tt>lpd</tt> izvede ustrezne filtre (kot jih določa atribut <tt>if</tt> v <tt>/etc/printcap</tt>) za to opravilo in pošlje rezultirajoče podatke tiskalniku. </enum> <p> Sistem <tt>lp</tt> je bil prvotno načrtovan za vrstične tiskalnike -- se pravi, ljudje so večinoma tiskali besedila v ASCII. Sodobnim tiskalniškim potrebam lahko z <tt>lpd</tt> ustrežemo tako, da dodamo vse vrste čarovnije v filte <tt>if</tt> (no, bolj ali manj; mnogi drugi sistemi bolje opravijo delo). <p> Za pisanje filtrov za LPD so na voljo številni programi. Med njimi so: <descrip> <tag>gs</tag> ghostscript je tolmač za postscript, ki teče v računalniku (znan tudi kot procesor rastrskih slik, angl. Raster Image Processor, RIP). Sprejme postscript in izdela izhod v različnih tiskalniških jezikih ali številnih grafičnih formatih. Ghostscript je obdelan v razdelku <ref name="Ghostscript" id="ghostscript">. <tag>ppdfilt</tag> Program <htmlurl name="ppdfilt" url="http://sourceforge.net/project/?group_id=1658"> je samostojna različica komponente CUPS. Filtrira postscript, tako da nad njim izvaja nekaj osnovnih preslikav (tiskanje več strani na list, več izvodov itd.) in dodaja stavke z uporabnikovimi izbirami glede na datoteko s tiskalniškimi definicijami za postscript (angl. Postscript Printer Definition, PPD), ki je navadno vključena poleg postscriptnih tiskalnikov. <p> Pripomoček <tt>ppdfilt</tt> je najbolje uporabljati skupaj s sistemom LPD, ki sprejema izbire (kot je VA Linux LPD ali LPRng), in filtrirnim skriptom, ki razčlenjuje izbire, ki jih poda uporabnik, v ustrezen ukaz za <tt>ppdfilt</tt>. VA Linux in HP ponujata spremenjen paket <tt>rhs-printfilters</tt>, ki naredi točno to; izdela lepe rezultate, če imate postscriptni tiskalnik. Za več podatkov o tem sistemu glej razdelek <ref id="LPD-FOR-POSTSCRIPT-PRINTERS" name="LPD za postscriptne tiskalnike">. <tag>ps2ps</tag> Pripomoček <tt>ps2ps</tt> je skript, vključen poleg ghostscripta. Filtrira postscript v bolj dobesedni <!-- streamlined --> postscript, morda na nižji stopnji jezika (angl. Language Level). To je uporabno, če imate starejši postscriptni tiskalnik; večina sodobnega programja izdeluje sodobni postscript. <tag>mpage</tag> Pripomoček <tt>mpage</tt> sprejme besedilo ali postscript in izdela več strani na eni -- se pravi, izvod z več slikami strani na eni strani papirja. Pravzaprav je več programov, ki delajo to, skupaj s pripomočki <tt>enscript</tt>, <tt>nenscript</tt> in <tt>a2ps</tt>. <tag>a2ps</tag> Pripomoček <tt>a2ps</tt> (angl. any-to-ps, karkoli-v-postscript) je program, ki sprejme različne vrste datotek in jih pretvori v postscript za tiskanje. </descrip> <sect>Kako usposobiti zadeve<label id="setup"> <p> Za večino namestitev lahko verjetno ta razdelek v celoti ignorirate -- namesto tega lahko skočite kar na razdelek <ref id="vendors" name="Rešitve dobaviteljev"> ali, še bolje, pogledate dokumentacijo vaše distribucije. Večina distribucij Linuxa ima eno ali več ,,trotl-zihr`` orodij za vse, kar opisujemo tukaj, za navadne tiskalnike. <p> Če orodje iz vaše distribucije za vas ne deluje ali bi radi imeli možnost interaktivnega nadziranja tiskalniških izbir, kadar tiskate, bi morali uporabljati kak drug sistem. PDQ je dobra izbira; ponuja zelo dobro funkcionalnost in ga je preprosto usposobiti. APS Filter je drug dober sistem; zelo enostavno nastavlja vrste in filtre za LPD v večini kakršnihkoli sistemov Unix. <p> Uporabljate lahko tudi vmesnike za tiskalniški sistem s spletnega mesta <htmlurl name="Linux Printing" url="http://www.linuxprinting.org/">, da povežete številne proste gonilnike v več čakalnih sistemov. Ko bo ta projekt enkrat končan, bodo ti vmesniki ponujali najboljšo funkcionalnost: podprti so vsi slogi gonilnikov, ki so prosto programje, na voljo so nastavljive izbire in podprtih je večina tiskalniških čakalnih sistemov. <sect1>Nastavitev PDQ <p> PDQ lahko prikroji bodisi naduporabnik bodisi uporabnik Janez. Spremembe, ki jih naredi <tt>root</tt>, se zapišejo v <tt>/etc/printrc</tt> in prizadenejo vsakogar, medtem ko Janezove spremembe spremenijo le njegovo osebno datoteko <tt>.printrc</tt>. Vse se nanaša na obe vrste nastavitev. <p> Če v vaši distribuciji ni vnaprej pakiranega PDQ, morate dobiti izvirno kodo s <htmlurl name="spletne strani PDQ" url="http://feynman.tam.uiuc.edu/pdq/"> in jo prevesti sami. To je preprosto prevajanje, a najprej se morate prepričati, ali imate nameščene različne razvojne knjižnice GTK, C-jevsko razvojno knjižnico, prevajalnik <tt>gcc</tt>, <tt>make</tt> in morda še nekaj drugih razvojnih reči. <sect2>Gonilniki in vmesniki <p> PDQ dovoli, da uporabniki izberejo tiskalnik, na katerega želijo tiskati. Tiskalnik je v PDQ definiran kot kombinacija ,,gonilnika`` in ,,vmesnika``. Tako gonilniki kot vmesniki so pravzaprav le koščki besedila v nastavitveni datoteki za PDQ. <p> Vmesnik za PDQ pove vse o tem, kako pošiljati podatke tiskalniku. Najpogostejši vmesniki, ki so že definirani v vzorčni datoteki <tt>printrc</tt> v distribuciji PDQ, so: <descrip> <tag>local-port</tag> Vmesnik za krajevna vrata se pogovarja z vzporednimi ali zaporednimi vrati stroja, v katerem teče PDQ. Z uporabo tega vmesnika lahko PDQ tiska neposredno na vaša vzporedna vrata. Vedite, da lahko v večuporabniških sistemih to povzroča zmedo in če imate omrežje, se bo vmesnik <tt>local-port</tt> nanašal le na en sistem. V teh primerih lahko definirate surovo nefiltrirano vrsto za <tt>lpd</tt> na vratih in tiskate na sistemski strežnik <tt>lpd</tt> natanko enako z vseh sistemov in računov brez kakršnihkoli težav. Ta vmesnik ima za argument ime naprave; tipična vrednost bi bila <tt>/dev/lp0</tt>. <tag>bsd-lpd</tag> Vmesnik za LPD kot v BSD se pogovarja prek omrežja s strežnikom LPD ali z omrežnim tiskalnikom, ki govori kot LPD. PDQ podpira oddajo opravil, preklic in poizvedbe na vmesnike LPD. Ta vmesnik ima za argumenta ime računalnika in ime čakalne vrste. <tag>appletalk</tag> Ta vmesnik vam omogoča tiskanje prek omrežja Appletalk; če imate tiskalnik priključen na vaš Macintosh, je to pravi način. Za delovanje ta vmesnik potrebuje paket Netatalk. </descrip> <p> Gonilnik PDQ pove vse o tem, kako pregnesti tiskalniške podatke v format, ki ga razume določen tiskalnik. Za postscriptne tiskalnike bo to vključevalo pretvorbo iz ASCII v postscript; za nepostscriptne bo to vključevalo pretvorbo z ghostscriptom iz postscripta v jezik tiskalnika. <p> Če nobena od vključenih specifikacij gonilnika ne ustreza vašemu tiskalniku, si preberite spodnji razdelek o tem, kako napisati svojo. <sect2>Definiranje tiskalnikov <p> Za definiranje tiskalnika v PDQ: <itemize> <item> Najprej preverite, ali imate v sistemski ali osebni datoteki <tt>printrc</tt> ustrezne deklaracije gonilnika in vmesnika. <item> Če želite definirati tiskalnik v <tt>/etc/printrc</tt> (za vse uporabnike), se prijavite kot <tt>root</tt>. <item> Poženite <tt>xpdq</tt> in izberite <em>Printer -> Add printer</em>. Ta ,,čarovnik`` vas bo sprehodil po izbiri gonilnika in vmesnika. </itemize> <p> To pa je tudi vse, kar je; večina dela je v iskanju ali ustvarjanju ustreznih specifikacij gonilnika, če ne najdete že narejene. <sect2>Ustvarjanje deklaracije gonilnika PDQ <p> Tu se bomo sprehodili po zgledu, kako narediti deklaracijo gonilnika za PDQ. Preden začnete, pa je vendarle več mest, na katerih najdete že narejeno deklaracijo gonilnika: <itemize> <item> PDQ ima zbirko že napisanih datotek za gonilnike. <item> <htmlurl name="Zbirka podatkov" url="http://www.linuxprinting.org/database.html"> na spletnem mestu Linux Printing ponuja program <htmlurl name="PDQ-O-Matic" url="http://www.linuxprinting.org/pdq-doc.html">, ki generira specifikacijo za PDQ iz podatkov iz zbirke. Če sta v zbirki tudi pravilna podatka o vašem tiskalniku in gonilniku, je to najboljša pot, če imate nepostscriptni tiskalnik. <item> Napisal sem orodje, imenovano <htmlurl name="ppdtopdq" url="http://www.picante.com/~gtaylor/download/printing/">, ki vzame datoteko PPD in jo pretvori v specifikacijo gonilnika za PDQ z okoli 75 % uspeha. To lahko uporabite, če imate postscriptni tiskalnik. </itemize> <p> Na več mest lahko pogledate za podatke, potrebne, da napišete svoj lastni gonilnik za PDQ: <itemize> <item> Skladnja za specifikacijo gonilnika za PDQ je precej bogata in je popolnoma dokumentirana v strani referenčnega priročnika za <htmlurl name="printrc(5)" url="http://feynman.tam.uiuc.edu/pdq/man/printrc.5.html">. <item> Distribucija PDQ vsebuje nekaj datotek za zgled. Še posebej si oglejte datoteko za Epson Stylus, ki ponazarja zgradbo definicije za gonilnik, ki ga poganja ghostscript. <item> <htmlurl name="Zbirka podatkov Printing HOWTO" url="http://www.linuxprinting.org/database.html"> vključuje podatke o surovih gonilnikih za Linux za več kot 600 tiskalnikov. To vam bo povedalo, katere izbire je treba podati ghostscriptu ali kateri dodatni program je treba pognati na izhodu ghostscripta. </itemize> <p> Če morate izdelate svojo lastno specifikacijo gonilnika ali ste izboljšali eno iz distribucije PDQ ali enega od programov za generiranje gonilnikov za PDQ, prosim, delite svoj izdelek s svetom! Pošljite mi ga na naslov <tt>gtaylor+pht@picante.com</tt> in zagotovil bom, da ga bodo našli naslednji uporabniki PDQ za vašo vrsto tiskalnika. <p> Zdaj pa se sprehodimo po pisanju specifikacije gonilnika, ki je naveden v zbirki podatkov Printing HOWTO kot delujoč, a zanj ne morete najti specifikacij gonilnika PDQ. Kot zgled tiskalnika bom uporabil Canon BJC-210. <p> Najprej pogledamo <htmlurl name="vnos v zbirki podatkov" url="http://www.linuxprinting.org/show_printer.cgi?recnum=58752"> za ta tiskalnik. Opazite, da je podprt ,,popolnoma``, torej lahko pričakujemo enake (ali boljše) rezultate kot uporabniki Windows. Pomembni podatki so na dveh mestih v vnosu: <descrip> <tag>Notes (zapiski)</tag> Zapiski v človeško berljivem formatu bodo pogosto vsebovali koristne informacije. Za nekatere tiskalnike je na voljo tudi povezava <em>More Info</em>, ki se navadno nanaša na spletno stran z več podatki, ki jo vzdržuje kak uporabnik tega tiskalnika, ali na spletno stran gonilnika. <tag>Driver List (seznam gonilnikov)</tag> Večina tiskalnikov ima seznam gonilnikov, za katere je znano, da delujejo. To je najpomembnejši del. Lahko sledite povezavam na stran, specifično za gonilnik, na kateri bo pogosto več podatkov o tem, kako izvajati gonilnik, ali pa povezavi na spletno stran gonilnika, če obstaja. </descrip> <p> Specifikacija gonilnika PDQ ima dve logični funkciji: uporabniško interakcijo in obdelavo tiskalniškega opravila. V datoteki sta zastopani na treh mestih: <descrip> <tag>deklaracije izbir</tag> Te določajo, katere izbire lahko uporabnik nastavlja, in deklarirajo spremenljivke PDQ za rabo v poznejših delih gonilnika. <tag>jezikovni filtri</tag> Ti obdelajo tiskalniško opravilo iz kateregakoli formata, v katerem je prišel (navadno postscript ali ASCII), v jezik, ki ga lahko razume tiskalnik (na primer PCL). Tu so na voljo vrednosti izbir, pa tudi v izhodnem filtru. <tag>izhodni filter</tag> Ta končni filter poveže tiskalniške podatke ne glede na vrsto vhoda; pogosto so tu nastavljene izbire tiskanja. </descrip> <p> Oglejmo si vsako od teh za Canon BJC-210: <sect3>Izbire <p> Seznam gonilnikov za ta tiskalnik vključuje gonilnika bj200 in bjc600, oba sta gonilnika vrste ghostscript. Zapiski svetujejo, da za črno-belo tiskanje uporabimo bj200. <p> Kar se torej tiče uporabnika, BJC-210 podpira eno uporabno izbiro: uporabnik bi moral izbrati barvno ali črno-belo tiskanje. To deklarirajmo kot izbiro, imenovano ,,<tt>MODE</tt>``: <tscreen> <verb> option { var = "MODE" desc = "Način tiskanja" # default_choice "Color" # odkomentirajte, da bo privzeto barvno choice "BW" { # Del z vrednostjo (value) dodeli spremenljivki MODE, karkoli # pač želite. Tu bomo dodelili besedilo, ki se spreminja med # dvema naboroma izbir za dva načina v ghostscriptu. value = "bj200" help = "Hitro črno tiskanje s črno kartušo." desc = "Le-črno" } choice "Color" { value = "bjc600" help = "Barvno tiskanje." desc = "Barvno" } } </verb> </tscreen> <p> Z zgornjimi deklaracijami bo uporabnik v pogovornem oknu gonilnika, ko bo tiskal v <tt>xpdq</tt>, videl izbiro med načinoma ,,Color`` in ,,BW``. V orodju <tt>pdq</tt> lahko v ukazni vrstici določi <tt>-oBW</tt> ali <tt>-oColor</tt>. Privzeto vrednost lahko nastavite v <tt>xpdq</tt> ali, kot smo jo zgoraj, s ključno besedo <tt>default_choice</tt>. <sect3>Jezikovno filtriranje <p> PDQ navadno prepozna svoj vhod z ukazom <tt>file(1)</tt>. Za vsako vrsto datoteke, ki jo vrne <tt>file</tt>, ki bi jo radi obdelovali, ponudite stavek <tt>language_driver</tt>. Stavek je sestavljen predvsem iz skripta, ki obdeluje tiskalniški jezik v kateremkoli (!) skriptnem jeziku, ki ga želite (privzeta je navadna Bournova lupina). <p> V našem primeru želimo tiskati postscript in ASCII na našem BJC-210. To zahteva dva jezikovna gonilnika: enega, da poganjamo ghostscript za postscriptna opravila, in drugega, da za opravila v ASCII dodajamo znake za povratek v vrstici (angl. carriage return, CR). <tscreen> <verb> # Uporabi se prvi language_driver v datoteki, ki ustreza temu, # kar pravi file(1). language_driver ps { # file(1) vrne "PostScript document text conforming at..." filetype_regx = "postscript" convert_exec = { gs -sDEVICE=$MODE -r360x360 \ # izbire gs iz zbirke podatkov -q -dNOPAUSE -dBATCH -dSAFER \ # "navadne" izbire ghostscripta -sOutputFile=$OUTPUT $INPUT # predelaj INPUT v datoteko OUTPUT # Ti dve zadnji vrstici bosta pogosto isti za vse tiskalnike, # podprte z gs. Vrstica gs... pa bo drugačna za vsak tiskalnik. } } # Vrsto text deklariramo po vrsti postscript, ker bo ukaz "file" # pogosto opisal postscriptno datoteko kot besedilno (kar tudi je). language_driver text { # Brez filetype_regx; iščemo ime gonilnika: "text" convert_exec = {#!/usr/bin/perl # program v perlu, le zato, ker to lahko storimo! my ($in, $out) = ($ENV{'INPUT'}, $ENV{'OUTPUT'}); open INPUT, "$in"; open OUTPUT, ">$out"; while(<INPUT>) { chomp; print OUTPUT, "$_\r\n"; } } } </verb> </tscreen> <p> To je to! Medtem ko drugi tiskalniki morda potrebujejo filtriranje izhoda (kot je opisano v naslednjem razdelku), so zgornji stavki vse, kar je potrebno za BJC-210. Vse skupaj le še zavijemo znotraj poimenovanega stavka <tt>driver</tt>: <tscreen> <verb> driver canon-bjc210-0.1 { option { var = "MODE" desc = "Način tiskanja" # default_choice "Color" # odkomentirajte, da bo privzeto barvno choice "BW" { # Del z vrednostjo (value) dodeli spremenljivki MODE, karkoli # pač želite. Tu bomo dodelili besedilo, ki se spreminja med # dvema naboroma izbir za dva načina v ghostscriptu. value = "bj200" help = "Hitro črno tiskanje s črno kartušo." desc = "Le-črno" } choice "Color" { value = "bjc600" help = "Barvno tiskanje." desc = "Barvno" } } # Uporabi se prvi language_driver v datoteki, ki ustreza temu, # kar pravi file(1). language_driver ps { # file(1) vrne "PostScript document text conforming at..." filetype_regx = "postscript" convert_exec = { gs -sDEVICE=$MODE -r360x360 \ # izbire gs iz zbirke podatkov -q -dNOPAUSE -dBATCH -dSAFER \ # "navadne" izbire ghostscripta -sOutputFile=$OUTPUT $INPUT # predelaj INPUT v datoteko OUTPUT # Ti dve zadnji vrstici bosta pogosto enaki za vse tiskalnike, # podprte z gs. Vrstica gs... pa bo drugačna za vsak tiskalnik. } } # Vrsto text deklariramo po vrsti postscript, ker bo ukaz "file" # pogosto opisal postscriptno datoteko kot besedilno (kar tudi je). language_driver text { # Brez filetype_regx; iščemo ime gonilnika: "text" convert_exec = {#!/usr/bin/perl # program v perlu, le zato, ker to lahko storimo! my ($in, $out) = ($ENV{'INPUT'}, $ENV{'OUTPUT'}); open INPUT, "$in"; open OUTPUT, ">$out"; while(<INPUT>) { chomp; print OUTPUT, "$_\r\n"; } } } } </verb> </tscreen> <sect3>Filtriranje izhoda <p> Če želite nekaj dodati pred vsa tiskalniška opravila ali za njih ali narediti neke vrste preslikavo na vseh podatkih vseh vrst, potem to spada v stavek <tt>filter_exec</tt>. Naš mali Canon ne potrebuje takih stavkov, a le zaradi zgleda je tu preprosta ilustracija, ki prikazuje, kako podpreti dupleksiranje in izbiro ločljivosti s tiskalnikom Laserjet ali klonom, ki govori PJL: <tscreen> <verb> driver generic-ljet4-with-duplex-0.1 { # Najprej, dva stavka z izbirami za stvari, ki jih lahko # izbere uporabnik: option { var = "DUPLEX_MODE" desc = "Način dupleksiranja" default_choice = "SIMPLEX" choice "SIMPLEX" { value = "OFF" desc = "Enostranski natisi" } choice "DUPLEX" { value = "ON" desc = "Dvostranski natisi" } } option { var = "GS_RES" desc = "Ločljivost" default_choice = "DPI600" choice "DPI300" { value = "-r300x300" desc = "300 dpi" } choice "DPI600" { value = "-r600x600" desc = "600 dpi" } } # Zdaj lahko obdelamo postscriptni vhod z gonilnikom ljet4 # za ghostscript: language_driver ps { filetype_regx = "postscript" convert_exec = { gs -sDEVICE=ljet4 $GS_RES \ -q -dNOPAUSE -dBATCH -dSAFER \ -sOutputFile=$OUTPUT $INPUT } } # Na koncu zavijemo opravilo v ukaze PJL: filter_exec { # zahteva echo z možnostjo pošiljanja ubežnih kod... echo -ne '\33%-12345X' > $OUTPUT echo "@PJL SET DUPLEX=$DUPLEX_MODE" >> $OUTPUT # Dodaste lahko dodatne ukaze @PJL kakor v zgornji vrstici. # Zagotovo pa vedno pripenjajte (>>) na izhodno datoteko! cat $INPUT >> $OUTPUT echo -ne '\33%-12345X' >> $OUTPUT } } </verb> </tscreen> <sect1>Nastavitev LPD <p> Večino sistemov Linux dobite z LPD. Ta razdelek opisuje zelo osnovno usposobitev LPD; nadaljnji razdelki pokrivajo podrobnosti izdelave zapletenih filtrov in omrežnih nastavitev. <sect2>Osnovna nastavitev LPD <p> Najmanjša sestava lpd 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 izdelave privlačnega izhoda. A nekje moramo začeti. <p> Če želite dodati tiskalniško čakalno vrsto v lpd, morate dodati vnos v datoteko <tt>/etc/printcap</tt> in narediti nov čakalni imenik pod <tt>/var/spool/lpd</tt>. <p> Vnos v <tt>/etc/printcap</tt> je videti podobno: <tscreen><verb> # LOKALNI djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :sh: </verb></tscreen> To definira čakalno vrsto, imenovano <em>lp</em>, <em>dj</em> ali <em>deskjet</em>, ki čaka v imeniku <tt>/var/spool/lpd/dj</tt>, brez omejitev velikosti za posamezno opravilo, ki tiska na napravo <tt>/dev/lp0</tt> in nima naslovne strani (z imenom tistega, ki tiska ipd.) dodane pred tiskalniško opravilo. <p> Zdaj z ukazom <tt>man printcap</tt> preberite stran v referenčnem priročniku za <tt><htmlurl name="printcap" url="http://www.linuxprinting.org/man/printcap.5.html"></tt> <p> Zgornje je videti zelo preprosto, a prav tu se skriva kleč -- če ne pošiljate datotek, ki jih DeskJet 500 lahko razume, bo ta DeskJet tiskal čudne stvari. Če, denimo, pošljete povsem navadno tekstovno datoteko Unixa tiskalniku <em>deskjet</em>, bo ta dobesedno razumel znake za novo vrstico in dobili bomo: <tscreen><verb> To je prva vrstica. To je druga vrstica. To je tretja vrstica. </verb></tscreen> in tako naprej. Tiskanje postscriptne datoteke v to čakalno vrsto nam bo dalo čudovit izpis ukazov postscripta, izpisanih s tem ,,stopničastim učinkom``, a nobenega uporabnega izhoda. <p> Gotovo je treba 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. <em>spool attributes</em>) <tt>if</tt> in <tt>of</tt>. No, <em>if</em> ali vhodni filter je natanko to, kar tu potrebujemo. <p> Če napišemo majhen ukazni skript, imenovan <tt>filter</tt>, ki doda znake za pomik na začetek vrste (angl. carriage return, CR) pred znake za konec vrstice, bomo s tem odpravili stopničavost besedila. Torej moramo v naš vnos v printcap dodati vrstico z <tt>if</tt>: <tscreen><verb> lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :if=/var/spool/lpd/dj/filter:\ :sh: </verb></tscreen> Preprost filtrirni skript <tt>filter</tt> bi lahko bil: <tscreen><verb> #!perl # Zgornja vrstica mora v resnici vsebovati polno pot do # tolmača perl. # Ta skript mora biti izvedljiv: chmod 755 filter while(<STDIN>){chomp $_; print "$_\r\n";}; # Morda boste želeli končati z znakom za izmet strani: # print "\f"; </verb></tscreen> Če naredimo zgornje, smo dobili čakalno vrsto, ki zna tiskati datoteke z običajnimi besedili v Unixu in dobi smiselne rezultate. (Da, štiri milijone boljših načinov je, da napišemo ta filter, a le malo je tako nazornih. To lahko naredite tudi učinkoviteje.) <p> Edina preostala težava je, da tiskanje navadnega besedila pravzaprav ni preveč moderno -- gotovo bi bilo bolje, če bi lahko tiskali postscript in druge urejene ali grafične vrste izhodov. No ja, bilo bi, in to je preprosto storiti. Metoda je preprosta razširitev zgornjega filtra za popravo vrstic. <p> Tak filter se imenuje <em>magični</em> filter (angl. magic filter). Igra enako vlogo kakor jezikovni filtri v PDQ. Ne utrujajte se s pisanjem tega, razen če morate tiskati res čudne zadeve -- veliko je že napisanih in večina ima orodja za preprosto interaktivno nastavitev. Preprosto bi morali le izbrati primeren že napisani filter: <descrip> <tag>LPD-O-Matic</tag> <htmlurl name="Ldpomatic" url="http://www.linuxprinting.org/lpd-doc.html"> je filter, zasnovan, da bi uporabljal podatke o tiskalnikih iz zbirke podatkov Linux Printing. Kmalu bo podpiral praktično vse gonilnike, ki so prosto programje, skupaj z običajnimi gonilniki za ghostscript, gonilniki Uniprint in raznimi filtrirnimi programi, ki krožijo naokoli. Deluje z različnimi vrstami LPD, tudi s pravim BSD, LPRng in novim LDP VA Linux ter omogoča izbiranje možnosti. <tag>APS Filter</tag> Pripomoček <htmlurl name="apsfilter" url="http://people.FreeBSD.org/~andreas/apsfilter/"> je filter, zasnovan za uporabo v številnih različnih Unixih. Podpira praktično vse gonilnike za ghostscript. Tudi ta deluje z različnimi vrstami LPD, tudi s pravim BSD in LPRng. Trenutno je to najbrž najboljši sistem neodvisnih izdelovalcev za nepostscriptne tiskalnike. <tag>RHS-Printfilters</tag> RHS-Printfilters je filtrirni sistem, ki ga je izdelalo podjetje Red Hat. Mislim, da so ga začeli prilagati različici 4 Red Hat Linuxa, kot orodje v ozadju za preprosto uporabno grafično orodje <tt>printtool</tt>. Druge distribucije, tudi Debian, zdaj prilagajo kombinacijo rhs-printfilters/printtool kot tiskalno možnost. Torej je ta sistem nedvomno največkrat nameščen. <p> Filtrirni sistem RHS temelji na zbirki podatkov s seznamom v ASCII, ki se razširja poleg njega. Ta seznam podpira številne gonilnike vrste ghostscript in uniprint, vendar ne filtrirnih gonilnikov. Tako narejeni filtri tudi ne podpirajo veliko na področju izbir, ki jih lahko uporabnik nadzira med tiskanjem. <p> Pripomoček <tt>printtool</tt> postavi datoteko, imenovano <tt>postscript.cfg</tt>, v tiskalniški čakalni imenik. V tej datoteki je v slogu Bournove lupine vsaka nastavitev spremenljivka. V nenavadnih primerih lahko naredite uporabne spremembe neposredno v nastavitveni datoteki, česar <tt>printtool</tt> ne bi dovolil; tipično bi to bila določitev nenavadnega gonilnika za ghostscript ali ime datoteke PPD za različico RHS-Printfilters podjetja VA. <p> VA Linux je v skladu s pogodbo s HP izdelal nekaj izboljšav sistema RHS-Printfilters. S pravimi različicami je zdaj mogoče izbrati možnosti za postscriptne tiskalnike, ki jih krmilijo Adobove datoteke PPD. Ta sistem pokrivam v razdelku <ref id="LPD-FOR-POSTSCRIPT-PRINTERS" name="LPD za postscriptne tiskalnike">. </descrip> <p> Pri teh filtrih je še en kavelj: starejše različice <tt>lpd</tt> za oddaljene tiskalnike ne poganjajo filtrov <em>if</em>, večina novejših pa ga poganja (čeprav pogosto brez argumentov). Različice LPD, ki jih dobite s sodobnimi distribucijami Linuxa in FreeBSD, ga; večina komercialnih Unixov, ki še vedno prilagajo LPD, ima različico, ki ga ne. Več podatkov o tem najdete v razdelku o omrežnem tiskanju v nadaljevanju tega dokumenta. Če imate le krajevno povezane tiskalnike, vas to ne bo prizadevalo. <sect2>LPD za postscriptne tiskalnike<label id="LPD-FOR-POSTSCRIPT-PRINTERS"> <p> Medtem ko večina različic LPD postscripta ne obdeluje dostojno (pustimo uporabniške izbire), je VA Linux pred kratkim spremenil LPD in filtrirno programje Red Hata, da zdaj precej dobro podpira postscriptne tiskalnike. Trenutno ta sistem deluje le z Red Hat Linuxom 6.2, čeprav se paketi zlahka prilagodijo tudi za druge distribucije. <sect3>Kako to deluje <p> Novi sistem podjetja VA uporablja definicijske datoteke za postscriptni tiskalnik (angl. Postscript Printer Definition, PPD). Datoteke PPD prilagajo prodajalci tiskalnikov in deklarirajo dostopne izbire tiskalnika skupaj s postscriptno kodo, potrebno, da se aktivirajo. S sistemom VA običajna shema LPD deluje malo drugače: <enum> <item> Uporabnik lahko določi izbire z zastavico <tt>-o</tt>. Če, denimo, tiskate na prosojnice, lahko določite <tt>-o MediaType:Transparency</tt>. Alternativno lahko za določitev izbir v pogovornem oknu uporabite uporabniški vmesnik <htmlurl name="GPR" url="http://www.compumetric.com/linux.html">; posnetke zaslona z GPR lahko vidite v <ref id="GPR-INTRO" name="razdelku o GPR"> <item> LPR poda izbire sistemu LPD kot razširjeni atribut v nadzorni datoteki za LPD. <item> Podatki z razširjenimi izbirami se podajo paketu RHS-Printfilters v okoljski spremenljivki, ta pa potem uporabi <tt>ppdfilt</tt>, da doda te izbire podatkov za natis. </enum> <sect3>Pridobivanje in namestitev <p> Pakete RPM ali arhive z izvirno kodo dobite s <htmlurl name="spletnega mesta projekta na SourceForge" url="http://printing.sourceforge.net/">. Podrobnosti o namestitvi najdete na <htmlurl name="namestitveni micro-HOWTO" url="http://printing.sourceforge.net/gpr-libppd-uhowto.html"> tega projekta. V bistvu morate v celoti odmestiti Red Hatove različice paketov <tt>printtool</tt>, <tt>lpd</tt> in <tt>rhs-printfilters</tt>, nato pa namestiti različice podjetja VA, plus <tt>ppdfilt</tt>, <tt>gpr</tt> in še nekaj drugih pripomočkov. <p> Potrebovali boste tudi datoteke PPD za vaše postscriptne tiskalnike. Datoteke PPD je navadno precej lahko najti. VA Linux in HP distribuirate datoteke PPD za številne modele Laserjet. Drugi izdelovalci ponujajo datoteke PPD za svoje tiskalnike, podjetje Adobe pa razpečuje <htmlurl name="datoteke PPD" url="http://www.adobe.com/products/printerdrivers/winppd.html"> za mnogo tiskalnikov. <p> Trenutno je precej tega težko namestiti. Vendar bodo prihodnja namestitvena orodja zgrajena nad knjižnico za namestitev tiskalnika, imenovano <tt>libprinterconf</tt>, ki omogoča samodejno zaznavanje in nastavitev <tt>rhs-printfilter</tt> za omrežne in krajevne tiskalnike. <p> <bf>Opomba:</bf> GPR je moč uporabljati tudi samostojno, brez spremenjenega sistema LPD ali celo RHS-Printfilters. GPR se lahko prevede neposredno z vso potrebno logiko za gnetenje postscriptnih opravil. To je lahko preprostejša izbira za namestitev za tiste, ki jim nikoli ni zares treba tiskati z neposredno uporabo <tt>lpr</tt>. <sect3>Nadzorovanje postscriptnih izbir <p> Ko enkrat vzpostavite postscriptni sistem LPD podjetja VA, lahko tiskalniške izbire nadzorujete na dva načina: <descrip> <tag>z grafičnim vmesnikom</tag> Če želite uporabljati GPR, najprej preverite, ali ste podali pravilno datoteko PPD. Potem bodo tiskalniške izbire dostopne na pultu ,Advanced`. Osnovne izbire za <tt>ppdfilt</tt> bodo dostopne na pultu ,Common`. <tag>z ukazno vrstico</tag> Ta <tt>lpr</tt> podpira izbiro <tt>-o</tt>. Katerikoli par izbira/vrednost iz vaše datoteke PPD lahko podaste z izbiro <tt>-o</tt>. Oglejte si, na primer, ta stavek iz datoteke PPD: <tscreen> <verb> *OpenUI *PrintQuality/Print Quality: PickOne *DefaultPrintQuality: None *OrderDependency: 150 AnySetup *PrintQuality *PrintQuality None/Printer Setting: "" *PrintQuality Quick/QuickPrint: "<< /DeviceRenderingInfo ... *PrintQuality Normal/Normal: "<< /DeviceRenderingInfo << /... *PrintQuality Pres/Presentation: "<< /DeviceRenderingInfo ... *PrintQuality Image/1200 Image Quality: "<< /DeviceRenderi... *CloseUI: *PrintQuality </verb> </tscreen> <p> Za izbiro <tt>PrintQuality</tt> so možne vrednosti <tt>Quick</tt>, <tt>Normal</tt>, <tt>Pres</tt> ali <tt>Image</tt>. Podali bi lahko ukaz kod: <tscreen> <verb> % lpr -o PrintQuality:Image file.ps </verb> </tscreen> <p> Obstajajo številne izbire, skupne vsem tiskalnikom, ki bodo delale poleg tistih iz vaše datoteke PPD. Te vključujejo: <descrip> <tag><tt>page-ranges</tt></tag> Določite lahko obseg strani, ki naj se natisnejo. Na primer, <tt>page-ranges:2-3</tt>. <tag><tt>page-set</tt></tag> Tiskate lahko le na lihe ali le na sode strani. Na primer, <tt>page-set:odd</tt> za lihe strani. <tag><tt>number-up</tt></tag> Na vsaki strani papirja lahko tiskate več strani. Na primer, <tt>number-up:2</tt>. </descrip> <p> Druge izbire so podrobno razložene na strani referenčnega priročnika za <tt>ppdfilt</tt>. </descrip> <sect2>Dovoljenja datotek <p> Na zahtevo ljudstva dodajam spodaj izpis dovoljenj zanimivih datotek mojega sistema. Veliko boljših načinov je, da to storite, idealno z uporabo binarnih datotek SGID in ne tako, da vse napravite SUID root, a tak sistem sem dobil ob nakupu in kar se mene tiče, deluje. (Povsem odkrito, če vam prodajalec ne more prodati niti delujočega strežnika <tt>lpd</tt>, ste v godlji.) <tscreen><verb> -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/ </verb></tscreen> <p> 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 <tt>lp.lp</tt> ali nekaj takega, a mislim, da ne postane. To je še en razlog, da se izogibate izvirnega LPD iz BSD. <p> PDQ uporablja drugačno shemo, ki ni osredotočena na pritajene strežnike (angl. daemon-centric), zato ima druge programe. Edini programi, ki so nastavljeni SUID root, so vmesniški programi za LPD <tt>lpd_cancel</tt>, <tt>lpd_print</tt> in <tt>lpd_status</tt>; ti so SUID, ker pravi tiskalniški strežniki v Unixu zahtevajo, da tiskalniški zahtevki pridejo od privilegiranih vrat. Če so edini tiskalniki, za katere uporabljate vmesnik PDQ za BSD-LPD, omrežni tiskalniški strežniki (kot adapterja HP JetDirect ali LexMark MarkNet), potem vam na teh programih ni treba nastaviti bita SUID. <sect1>Velike namestitve <p> Velike namestitve, s čimer mislim na omrežja, ki obsegajo več kot dva tiskalnika ali računalnika, imajo posebne potrebe. Spodaj je nekaj nasvetov. Za zares velika okolja je težava že razširjanje filtrirnih podatkov v datoteki <tt>printcap</tt>. To rešuje <htmlurl name="Cisco Enterprise Print System" url="http://ceps.sourceforge.net/"> in je verjetno dobra vstopna točka ali skoraj popolna rešitev, odvisno od vaših potreb. Srednje velika do velika okolja so lahko dobro podprta z domorodnimi lastnostmi LPRng. <itemize> <item> Vsak tiskalnik bi moral imeti eno samo točko nadzora, na kateri lahko skrbnik zaustavi, preuredi ali preusmeri vrsto. Da bi to izvedli, naj vsi tiskajo na krajevni strežnik, ta pa naj potem uvršča opravila v vrsto in jih usmerja na pravi tiskalnik. Za večje naselbine ali porazdeljena omrežja imejte en strežnik na stavbo ali drug primeren del omrežja. <item> Uporabljajte LPRng, vsaj v strežnikih; BSD LPD je preveč hroščat za ,,resno`` rabo. Prav tako CUPS, vsaj zdaj sredi leta 2000. Vendar mi ne verjemite na besedo -- preskusite več programov za tiskanje s čakalno vrsto in poglejte, kateri vam bolj ustreza. <item> Odjemniški sistemi naj ne bi imeli unikatnih tiskalniških nastavitev. Za izvedbo tega uporabljajte razširjeno skladnjo <tt>printcap</tt>, tako da imate eno samo datoteko <tt>printcap</tt>, ki jo uporabljate povsod. CEPS ponuja to tako, da na vrhu zgradi majhno distribuirano zbirko podatkov namesto tradicionalnih datotek <tt>printcap</tt>. <item> Tiskalniške vrste naj ne bi bile poimenovane po izdelovalcu ali modelu tiskalnika; tiskalniške vrste poimenujte po čem smiselnem, kot je lokacija (<tt>floor2_nw</tt>) ali zmožnosti (<tt>color_transparency</tt>). Čez tri leta, ko se bo tiskalnik pokvaril, ga boste lahko zamenjali z drugim tiskalnikom, ne da bi povzročili težave. <item> Imejte spletno stran, ki prikazuje podrobne podatke o vsakem tiskalniku, skupaj z mestom, zmožnostmi itd. Razmislite, da bi prikazovali vrsto, in vključite gumb za odstranjevanje opravil iz vrste. Uporabniki ne morejo delati v kompleksnih omrežnih okoljih brez prave dokumentacije. <item> V sistemih Unix uporabljajte PDQ ali podobno, da omogočite izbiranje atributov tiskalniškega opravila, kot je dupleksiranje ali velikost papirja, in da prisilite uporabnike, da poganjajo vse procesiranje z ghostscriptom pod svojo pravo uporabniško številko ID. Če so vsi vaši tiskalniki postscriptni (kar je najbolje), lahko tudi izbirate med uporabniškima vmesnikoma GPR ali XPP; oba sta lepša. <item> Na sistemih Windows in Apple bodisi uporabite od platforme odvisne gonilnike <em>povsod</em> (Samba podpira mehanizem za samodejno nalaganje gonilnika v Windows) ali, še bolje, uporabite splošne postscriptne gonilnike <em>povsod</em>. Ne mešajte po občutku; primitivni urejevalniki besedil pogosto naredijo drugačen izhod, ko se spremeni nameščeni tiskalniški gonilnik; uporabniki ne morejo delati z izhodom, ki je odvisen od določenega para odjemnik/tiskalnik. <item> Če je to sploh mogoče, kupite visoko zmogljivi tiskalnik za zelo pogosto tiskanje. Če vam to proračun omogoča, uporabljajte zmožnost LPRng, da več tiskalnikom dodeli eno samo vrsto, in določite varuško tiskalnikov; tiskalniki so zapletene mehanske naprave, ki se v takih razmerah pogosto zabašejo s papirjem ali pa jim ga zmanjka. <item> Ne mislite, da morajo biti tiskalniki priklopljeni v delovne postaje; ethernetni ,,tiskalniški strežniki`` zdaj stanejo manj kot 100 dolarjev. Možnost, da postavite tiskalnike, kjerkoli vam to dopušča omrežje, je veliko izboljšanje glede na vsiljeno mesto poleg računalnika; tiskalnike namestite na primerna, osrednja mesta. <item> Uporabite katerokoli orodje SNMP trap ali drugo orodje za spremljanje in opozarjanje, ki ga imate na voljo -- nekdo naj bo zadolžen za to, da teka naokoli in popravlja tiskalnike, ki jim je zmanjkalo črnila ali papirja. Za nekatere skrbniške operacije s tiskalniki SNMP lahko uporabite orodje <tt>npadmin</tt> (glej razdelek <ref id="NPADMIN" name="Npadmin">). </itemize> <sect1>Obračunavanje <p> Običajni LPD vam ne ponudi prav dosti pomoči pri obračunavanju (angl. accounting). Določite lahko ime obračunske datoteke v atributu <tt>af</tt> datoteke <tt>printcap</tt>, a to se le prenese kot argument vašem filtru <tt>if</tt>. Sami morate poskrbeti za to, da vaš filter <tt>if</tt> piše vnose v obračunsko datoteko, in sami morate pozneje obdelati obračunsko datoteko (tradicionalna oblika je predvsem primerna za vrstične tiskalnike in je ni trivialno razčleniti v Perlu, zato ni razloga, da bi jo obdržali). Tudi, če kot svoj filter uporabljate moj program <tt>lpdomatic</tt>, boste morali narediti spremembe, saj je odvisen od tega, da dobi podano nastavitveno datoteko kot ,,obračunsko`` ime datoteke. <p> ghostscript ponuja operator <tt>PageCount</tt>, ki ga lahko uporabljate za štetje števila strani v vsakem opravilu; pravzaprav na konec opravila le dodaste nekaj vrstic postscripta, ki izpišejo vnos v obračunsko datoteko; najboljši zgled za to najdete v datoteki <tt>unix-lpr.sh</tt> v distribuciji izvirne kode ghostscripta. <p> Vedite, da izvedba obračunavanja v <tt>unix-lpr</tt> piše v datoteko iz tolmača ghostscript in torej ni združljiva s priporočeno izbiro <tt>-dSAFER</tt>. Boljša rešitev bi bila, da po vsakem opravilu z ukazom PJL povprašate tiskalnik, ali naj napišete delček kode v postscriptu, ki izpiše števec strani na stdout, kjer ga lahko zajamete, ne da bi morali pisati v datoteko. <p> Tiskalniški čakalni strežnik LPRng vključuje zgled izvedbe obračunavanja, specifičen za HP; domnevam, da vpraša tiskalnik s PJL. Ta tehnika bi morala delati z večino tiskalnikov PJL, postscript ali SNMP, s katerimi imate dvosmerno komunikacijo. <p> Če imate omrežni tiskalnik, ki podpira SNMP, lahko uporabljate program <tt>npadmin</tt>, da po vsakem opravilu povprašate po številu strani. To bi moralo delovati pravilno za vsa tiskalniška opravila. Glej razdelek <ref id="NPADMIN" name="Npadmin"> za več podatkov o orodju <tt>npadmin</tt>. <sect>Rešitve dobaviteljev<label id="vendors"> <p> Ta razdelek je po definiciji nepopoln. Pošljite mi podrobnosti o vaši najljubši distribuciji. Trenutno ne vem za distribucijo, ki bi podpirala ali sploh imela programje, ki ga priporočam: PDQ. <p> Na voljo so številni paketi neodvisnih izdelovalcev, ki so zasnovani tako, da bi naredili tiskanje v Unixu preprosto. Podprti so v razdelku <ref id="setup" name="Kako usposobiti zadeve">; kazalce najdete v tamkajšnjih podrazdelkih o vašem čakalnem programju. <sect1>Red Hat <p> Red Hat ima upravniško orodje <tt>printtool</tt> z grafičnim uporabniškim vmesnikom, s katerim lahko dodajate oddaljene tiskalnike in tiskalnike na krajevnih napravah. Omogoča vam izbiro tiskalnika, podprtega v ghostscriptu, in datoteko naprave Unixa, na katero naj tiska, potem namesti tiskalniško vrsto v <tt>/etc/printcap</tt> in uporablja filtrirni program iz paketa <tt>rhs-printfilters</tt>, s katerim podpre postscript in druge pogoste vhodne tipe datotek. Ta rešitev deluje precej dobro in jo je večinoma enostavno nastaviti. <p> Red Hat odpove, kadar imate tiskalnik, ki ni podprt z njihovim standardnim ghostscriptom (ki je GNU, ne Aladdin Ghostscript, in ki podpira manj tiskalnikov). Oglejte si zgornji seznam združljivosti tiskalnikov (ali <htmlurl name="v spletu" url="http://www.linuxprinting.org/printer_list.cgi">), če ugotovite, da ne morete izkoristiti polne zmogljivosti vašega tiskalnika z izvirnim programjem Red Hat. Če vaš tiskalnik ni podprt v orodjih Red Hata, boste morda morali namestiti prispevano različico Aladdin Ghostscripta in verjetno bo bolje, da uporabite paket <tt>lpdomatic</tt> ali <tt>apsfilter</tt>, ki vesta vse o tiskalnikih, ki jih podpira novejši ghostscript, in drugih. <p> V prihodnjih različicah Red Hata bo <tt>printtool</tt> znova napisan, da bo podpiral večje število tiskalnikov in z namenom, da bi podpiral morebitno nadomestilo za <tt>rhs-printfilters</tt> (trenutni filter ima težave s številnimi pogostimi tiskalniki, kot so nekateri ne-PCL DeskJeti in večina Lexmarkov). Morda bodo vključene tudi nekatere lastnosti za podporo PPD, ki jih je razvil VA Linux. <sect1>Debian <p> Debian ponuja izbiro med navadnim LPD, LPRng in CUPS; LPRng ali CUPS sta verjetno boljša izbira. Zdi se mi, da Debian ponuja tudi izbiro skriptov za nastavitev tiskalnika; verjetno je <tt>apsfilter</tt> različice 5 ali poznejši vaša najboljša izbira, saj ta različica dodaja podporo LPRng in shemo gonilnika uniprint za ghostscript. Za tiste, ki imajo radi grafična administrativna orodja, je podprt tudi Red Hatov <tt>printtool</tt>. <sect1>SuSE <p> Tiskalniški sistem SuSE Linuxa temelji na programu <tt>apsfilter</tt> z nekaj izboljšavami; <tt>apsfilter</tt> v SuSE bo prepoznal vse pogoste datotečne formate (tudi HTML, če je nameščen <tt>html2ps</tt>). Dva načina sta, kako usposobiti tiskalnike v sistemih SuSE: <itemize> <item> YaST vam bo omogočil, da nastavite ,,PostScript``, ,,DeskJet`` in ,,Druge tiskalnike``, ki jih podpirajo gonilniki za ghostscript; možno je tudi usposobiti tiskalnike GDI izdelovalca HP (DeskJet 710/720, 820, 1000, s paketom ,,ppa``). YaST bo ponudil vnose za <tt>/etc/printcap</tt> za vsak tiskalnik (,,raw``, ,,ascii``, ,,auto`` in ,,color``, če je tiskalnik, ki naj se nastavi, barvni). YaST bo izdelal čakalne imenike in uredil datoteke <tt>apsfilterrc</tt>, kjer boste lahko na fino nastavili nekatere nastavitve (prednalaganja ghostscripta, velikost papirja, usmeritev papirja, ločljivost, tiskalniška ubežna zaporedja itd.). Z YaSTom je moč tudi usposobiti mrežne tiskalnike (TCP/IP, Samba ali tiskalnik Novell Netware). <item> Poleg tega SuSE prilaga običajni program za nastavitev izvirnega paketa <tt>apsfilter</tt> (z nekaterimi izboljšavami); poženite <tt>lprsetup</tt>, da zaženete ta nastavitveni skript. Ko se enkrat privadite njegovemu grafičnemu vmesniku, boste lahko nastavljali krajevne in omrežne tiskalnike. </itemize> <p> Priročnik za namestitev SuSE razlaga oba dva načina usposabljanja tiskalnikov. <p> Wolf Rogner poroča o nekaterih težavah z distribucijo SuSE. Menda lahko grizejo tile hrošči: <itemize> <item> Običajni nastavitveni skript iz Apsfiltra je malce pokvarjen, pa tudi orodja za nastavitev v KDE. Uporabite YaST. (Uredniška opomba: ali to še vedno velja? Že nekaj časa je minilo od Wolfovega poročila.) <item> Za omrežne tiskalnike, ki jih je treba krmiti z ghostscriptom, boste morali najprej odkomentirati vrstico <tt>REMOTE_PRINTER="remote"</tt> v <tt>/etc/apsfilterrc</tt>. Potem poženite YaST, da nastavite tiskalnik in pod Mrežnimi nastavitvami usposobite oddaljeno tiskalniško čakalno vrsto. <item> YaST ne dovoli barvnih laserskih tiskalnikov, zato nastavite črno-beli tiskalnik, potem pa povsod v vnosu <tt>printcap</tt> spremenite <tt>mono</tt> v <tt>color</tt>. Morda boste morali preimenovati tudi čakalni imenik. </itemize> <sect1>Caldera <p> Caldera prilaga LPRng. Nimam pojma, kakšne vrste orodij za usposobitev tiskalnika ponujajo. <sect1>Corel <p> Corel temelji na Debianu, zato bi vse zgornje navedbe za Debian morale še vedno veljati. Poleg tega so napisali lasten program za usposobitev, ki temelji na knjižnici sysAPS, ki spet uporablja mojo zbirko podatkov. Prav gotovo so to storili kot del WordPerfecta. <p> Corel vzdržuje novičarsko skupino s podporo tiskanju, imenovano <htmlurl url="news://cnews.corel.com/corelsupport.linux.printing" name="corelsupport.linux.printing">. Videti je, da je večina prometa povezana z WordPerfectom in Corel Linuxom. <sect1>Mandrake <p> Od različice 7.2b1 ima Mandrake standard CUPS. Program QtCUPS se uporablja kot čisti administracijski grafični uporabniški vmesnik. Till se je potrudil, da je dodal čim več gonilnikov, in zdaj izdaja datoteke CUPS PPD, zgrajene z mojo kodo za vmesnik <htmlurl name="foomatic" url="http://www.linuxprinting.org/foomatic.html">. <!-- preveri Till! Je to ime ali napaka? --> <p> Mislim, da so imele prejšnje različice Mandrakea Red Hatovo orodje <tt>printtool</tt>. <sect1>Druge distribucije <p> Prosim, pošljite mi podatke o tem, kaj počnejo druge distribucije! <sect>Ghostscript<label id="ghostscript"> <p> <htmlurl name="Ghostscript" url="http://www.cs.wisc.edu/~ghost/"> je neverjetno pomemben program za tiskanje v Linuxu. Večina tiskalniškega programja sistemov Unix ustvarja postscript, ki tipično zahteva 100 dolarjev vreden dodatek k 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 <tt>lpd</tt>, vam daje navidezni postscriptni tiskalnik in vam neznansko poenostavi življenje. <p> Ghostscript je dostopen v dveh oblikah. Komercialna različica ghostscripta, imenovana <em>Aladdin Ghostscript</em>, se lahko prosto uporablja za osebno rabo, a ne sme biti razširjana s komercialnimi distribucijami Linuxa. Na splošno je približno leto dni pred prostim ghostscriptom; trenutno, na primer, podpira številne barvne brizgalnike, ki jih starejši ghostscripti ne, in ima malo boljšo podporo PDF. <p> Prosta različica ghostscripta je GNU Ghostscript in je preprosto postarana različica Aladdin Ghostscripta. Ta nekoliko čudni dogovor je omogočil podjetju Aladdin, da je postalo projekt prostega programja, ki se v celoti financira sam; najnovejše različice napišejo L. Peter in nekaj zaposlenih, in so licencirane, da jih izdelovalci strojne in programske opreme lahko uporabijo v komercialnih izdelkih. Ta shema je omogočila, da se je L. Peter mnoga leta nepretrgoma ukvarjal z ghostscriptom, žal pa je zavrla sodelovanje širše skupnosti prostega programja. Posebej avtorjem gonilnikov se zdi tak dogovor slab. Načrti L. Petra za upokojitev narekujejo večjo vpletenost skupnosti v projekt, zato razmišlja o spremembah licence in je ustanovil projekt na SourceForge. <p> Karkoli že počnete s programom <tt><htmlurl name="gs" url="http://www.linuxprinting.org/man/gs.1.html"></tt>, preverite, ali ste ga pognali z izbiro za preprečitev dostopa do datotek (<tt>-dSAFER</tt>). Postscript je polno funkcionalen jezik in slab program v postscriptu vam lahko povzroči precejšen glavobol. <p> Ko smo že pri PDF, Adobovem formatu za prenosljive dokumente (angl. Portable Document Format), ta je (vsaj do 1.3) pravzaprav le malo več kot organiziran postscript v stisnjeni datoteki. Ghostscript lahko obvlada vhod v PDF prav tako, kakor lahko obvlada postscript. Torej ste lahko prvi v ulici, ki ima tiskalnik, zmožen tiskati PDF. <sect1>Klicanje ghostscripta <p> Tipično se <tt>ghostscript</tt> požene s katerimkoli magičnim filtrom, za katerega se odločite (priporočam <tt>apsfilter</tt> ali svoj lastni <tt>lpdomatic</tt>, če vaš dobavitelj ni dodal ničesar, kar bi vam ustrezalo), a zaradi razhroščevalnih namenov ga je pogosto priročno pognati neposredno. <p> <tt>gs -help</tt> vam izpiše kratek informativni seznam izbir in dostopnih gonilnikov (bodite pozorni na to, da je to seznam gonilnikov, podprtih ob prevajanju, ne celoten seznam vseh dostopnih gonilnikov). <p> Za poskus lahko poženete <tt>gs</tt> takole: <tscreen> <verb> gs <izbire> -q -dSAFER -sOutputFile=/dev/lp1 test.ps </verb> </tscreen> <sect1>Fine nastavitve izhoda ghostscripta <p> Marsikaj lahko storite, če niste zadovoljni z izhodom programa <tt>gs</tt> (pravzaprav lahko storite, karkoli se vam prekleto ljubi storiti, saj imate izvirno kodo). <p> Nekatere od teh izbir so poleg drugih opisane v knjigi ghostscript User Guide (datoteka <htmlurl name="Use.htm" url="http://www.cs.wisc.edu/~ghost/aladdin/doc/Use.htm"> v distribuciji ghostscripta), verjetno nameščena v <tt>/usr/doc</tt> ali <tt>/usr/share/doc</tt> v vašem sistemu) in so izvrstni kandidati za gonilniške izbire v vašem filtrirnem sistemu ali deklaraciji gonilnika PDQ. <sect2>Izhodni položaj in velikost <p> Položaj, velikost in <em>aspect ratio</em> <!-- ? --> slike na strani, se nadzoruje v ghostscriptu z gonilnikom, odvisnim od tiskalnika. Če se vam zdi, da prihajajo vaše strani iz tiskalnika prekratke ali predolge ali dvakrat prevelike, boste morda želeli pogledati modul z izvirno kodo za vaš gonilnik in nastaviti 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 komentirana. <sect2>Gama, velikost pik itd.<label id="GSGAMMA"> <p> Večina nelaserskih tiskalnikov trpi zaradi dejstva, da so njihove pike precej velike. Rezultat je pretemna slika. Če imate take težave, morate uporabiti svojo prenosno funkcijo (angl. transfer function). Preprosto ustvarite naslednjo datoteko v knjižničnem imeniku ghostscripta in dodajte njeno ime v klicu <tt>gs</tt> prav pred pravo datoteko. Morda boste morali preskušati prave vrednosti, ki ustrezajo vašemu tiskalniku. Manjše vrednosti dajo svetlejši izpis. Zlasti, če vaš gonilnik uporablja Floyd-Steinbergov algoritem rasterizacije barv, so nizke vrednosti (0.2--0.15) verjetno dobra izbira. <tscreen><verb> ---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<--- </verb></tscreen> <p> S temi nastavitvami je mogoče tudi popraviti tiskalnike, ki imajo nekakšne barvne napake. Če naredite kaj takega, priporočam uporabo datoteke <tt>colorcir.ps</tt>, ki jo dobite poleg ghostscripta (v podimeniku <tt>examples/</tt>) kot testno stran. <p> Za mnoge od novejših gonilnikov za barvne brizgalnike so na voljo izbire v ukazni vrstici ali različne gonilniške datoteke UPP, ki izvedejo gama popravke in druge spremembe, da prilagodijo tiskalnik različnim vrstam papirja. To bi si morali ogledati, preden se igračkate s postscriptom, da bi popravili to ali ono. <sect2>Barvno tiskanje v ghostscriptu<label id="GSCOLOR"> <p> Privzeto stresanje barv (angl. color dithering) v ghostscriptu je optimalizirano za naprave nizke ločljivosti. Barve bo stresalo bolj čudno <!-- coarsely? -->, da bi izdelalo izhod 60 ppi (ne dpi, ppi -- ,,navidezne`` barvne pike na inč, ki jih dobite po stresanju barv). To naredi bolj klavrn izhod na sodobnih barvnih tiskalnikih; brizgalnikih s fotopapirjem, posebej, so sposobni dosti boljših nastavitev ppi. <p> Da to nastavite, uporabite izbiro <tt>-dDITHERPPI=x</tt>, pri čemer je <tt>x</tt> vrednost, ki naj se uporabi. Morda boste tako dosegli želeni učinek z vsemi gonilniki ali pa tudi ne; številni sodobni gonilniki (npr. gonilnik <tt>stp</tt> za Epson Stylus) izvajajo lastno stresanje barv in se ne ozirajo na to nastavitev. Nekateri gonilniki lahko uporabljajo bodisi običajno ghostscriptovo ali za gonilnik specifično stresanje barv (npr. gonilnik <tt>bjc600</tt> za Canon Bubblejet). <p> Stresanje barv v ghostscriptu je pravzaprav zelo osnovno. Marsikaj, kar je potrebno za dober izhod na sodobnih tiskalnikih, preprosto ni na voljo v jedru ghostscripta. Različni projekti, da bi popravili to stanje -- in svet prostega programja ima programje za to že pripravljeno -- so blokirani zaradi licenčnega stanja ghostscripta in posledično ,,katedralskega`` razvojnega sloga. Od dogodka <htmlurl name="Open Source Printing Summit 2000" url="http://www.linuxprinting.org/summit.html"> naprej pa se vsi potrebni ljudje pogovarjajo o tem, zato lahko pričakujete, da se bo to v kratkem izboljšalo. <sect>Omrežje <p> Ena od lastnosti večine tiskalniških čakalnih strežnikov 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 transparentno tiskate na tiskalnike v vseh vrstah omrežij. <sect1>Tiskanje na gostitelja z Unix/lpd <p> Če želite dovoliti oddaljenim strojem tiskati na vašem tiskalniku, morate našteti te stroje v datoteki <tt>/etc/hosts.equiv</tt> ali <tt>/etc/hosts.lpd</tt>. (Pozor, naštetje v <tt>hosts.equiv</tt> ima tudi druge učinke; preverite, ali veste, kaj počnete, če tam navedete neki stroj.) Tiskanje na svojem tiskalniku lahko dovolite tudi le posameznim uporabnikom drugih strojev s tem, da uporabite atribut <em>rs</em>; preberite stran ukaza <tt><htmlurl name="lpd" url="http://www.linuxprinting.org/man/lpd.8.html"></tt> v referenčnem priročniku. <sect2>S <tt>pdq</tt> <p> S PDQ lahko definirate tiskalnik z vmesnikom vrste ,,<tt>bsd-lpd</tt>``. Ta vmesnik vzame za argumenta ime oddaljenega računalnika in ime čakalne vrste; čarovnik za definicijo tiskalnika vas bo povprašal po tem dvojem. <sect2>Z <tt>lpd</tt> <p> Za tiskanje na drugem stroju napravite podoben vnos v datoteko <tt>/etc/printcap</tt>: <tscreen><verb> # ODDALJENI djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :rm=stroj.tam.nekje.ustanova.si:\ :rp=printername:\ :lp=/dev/null:\ :sh: </verb></tscreen> Vedite, da je na lokalnem stroju še vedno čakalni imenik, ki ga ureja <tt>lpd</tt>. Če je oddaljeni stroj zaseden ali ni priključen, tiskalniška opravila čakajo na lokalnem stroju, dokler jih ni mogoče poslati. <sect2>Z <tt>rlpr</tt> <p> Ukaz <tt>rlpr</tt> lahko uporabite za pošiljanje tiskalniških opravil neposredno v čakalno vrsto oddaljenega stroja, ne da bi morali posebej nastavljati <tt>lpd</tt>. To je najbolj uporabno v položajih, ko le tu in tam tiskate na različne tiskalnike. Iz napovedi programa <tt>rlpr</tt>: <p> Rlpr uporablja TCP/IP za pošiljanje opravil na strežnike lpd kjerkoli v omrežju. <p> Za razliko od lpr <em>ni</em> treba, da so oddaljeni tiskalniki eksplicitno znani stroju, s katerega želite tiskati (npr. prek datoteke <tt>/etc/printcap</tt>), in je torej precej bolj fleksibilen in potrebuje manj upravljanja. <p> <tt>rlpr</tt> lahko uporabljate povsod tam, kjer uporabljate tradicionalni <tt>lpr</tt>, in je nazaj združljiv s tradicionalnim ukazom <tt>lpr</tt> BSD. <p> Glavna moč, ki jo daje <tt>rlpr</tt>, je moč oddaljenega tiskanja <em>kjerkoli, kamorkoli</em>, ne glede na nastavitve sistema, s katerega želite tiskati. Deluje lahko kot filter, prav kot tradicionalni lpr, zato lahko odjemalci, kot so <tt>netscape</tt>, <tt>xemacs</tt> itd., ki se izvajajo na oddaljenem stroju, tiskajo na vašem lokalnem stroju z malo truda. <p> Rlpr je dostopen na <url name="MetaLabu" url="ftp://metalab.unc.edu/pub/Linux/system/printing/">. <sect1>Na tiskalnik v Windows ali prek Sambe <p> V spisu <em>Printing to Windows mini-HOWTO</em> je več Informacij, kot jih najdete tukaj. <sect2>Iz PDQ <p> Kolikor vem, ni vnaprej zgrajenega vmesnika SMB, a bi ga bilo precej lahko narediti z uporabo nabora modelov vmesnika Netatalk Appletalk. Naj ga, prosim, kdo naredi in pošlje za vključitev! <p> Za več namigov o tem, kako to narediti, preberite razdelek o Windows/LPD. <sect2>Iz LPD <p> Mogoče je preusmeriti tiskalniško čakalno vrsto skozi program <tt><htmlurl name="smbclient" url="http://www.linuxprinting.org/man/smbclient.1.html"></tt> (del zbirke samba) na tiskalniško storitev SMB, počivajočo na TCP/IP. Samba vključuje skript, imenovan <tt>smbprint</tt>, ki to stori. Na kratko, postavite konfiguracijsko datoteko za določen tiskalnik, na katerega tiskate, v čakalni imenik (<em>spool directory</em>) in namestite skript <tt>smbprint</tt> kot <em>if</em>. <p> Vnos v <tt>/etc/printcap</tt> je tak: <tscreen><verb> lp|remote-smbprinter:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lp:\ :if=/usr/local/sbin/smbprint: </verb></tscreen> <p> Za več podatkov, kako to sestaviti, morate prebrati dokumentacijo znotraj skripta <tt>smbprint</tt>. <p> Uporabite lahko tudi <tt>smbclient</tt> in oddaste datoteko neposredno v tiskalniško storitev SMB, ne da bi vključevali <tt>lpd</tt>. Glej stran v referenčnem priročniku (<tt>man smbclient</tt>). <sect1>Tiskanje na tiskalnik v NetWare <p> Zbirka ncpfs obsega pripomoček, imenovan <tt>nprint</tt>, ki poskrbi za enako funkcionalnost kakor <tt>smbprint</tt>, le za NetWare. Paket ncpfs dobite na <htmlurl name="MetaLabu" url="ftp://metalab.unc.edu/pub/Linux/system/filesystems/ncpfs/">. Iz vnosa LSM različice 0.16: <quote> S paketom ncpfs lahko nameščate pogone vašega strežnika NetWare v Linuxu. 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 <bf>ne</bf> deluje s katerimkoli jedrom pod 1.3.54. </quote> <sect2>Iz LPD <p> Če želite pripraviti <tt>nprint</tt> do delovanja čez lpd, napišite majhen ukazni skript za izpis standardnega vhoda (<em>stdin</em>) na NetWareov tiskalnik in ga namestite kot vhodni filter (<em>if</em>) za tiskalniško vrsto za lpd. Dobili boste nekaj takega: <tscreen><verb> sub2|remote-NWprinter:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/sub2:\ :if=/var/spool/lpd/nprint-script: </verb></tscreen> Skript <tt>nprint-script</tt> je lahko videti približno takole: <tscreen><verb> #! /bin/sh # Najprej preizkusite račun "guest" brez gesla! /usr/local/bin/nprint -S net -U name -P passwd -q printq-name - </verb></tscreen> <sect1>Tiskanje na tiskalnik pod EtherTalk (Apple) <p> Paket netatalk vključuje nekaj takega kot <tt>nprint</tt> in <tt>smbclient</tt>. Drugi so dokumentirali postopek za tiskanje v omrežja Apple in iz njih veliko bolje, kot ga bom sam kdajkoli; glej spis <url name="Linux Netatalk-HOWTO" url="http://thehamptons.com/anders/netatalk/">. <sect2>Iz PDQ <p> PDQ obsega deklaracijo vmesnika, imenovanega ,,appletalk``. Ta uporablja paket Netatalk za tiskanje na omreženi tiskalnik Apple. Le izberite vmesnik v čarovniku ,,Add printer`` v <tt>xpdq</tt>. <sect1>Tiskanje na omrežni tiskalnik <p> Številni tiskalniki imajo omrežni vmesnik, na katerega lahko neposredno tiskate, navadno s pomočjo protokola LPD. Uporabljati morate navodila, priložena tiskalniku ali njegovemu omrežnemu priključku, na splošno pa taki tiskalniki delujejo z lpd in imajo eno ali več čakalnih vrst, na katere lahko tiskate. HP, na primer, lahko deluje s podobno datoteko printcap: <tscreen><verb> lj-5|remote-hplj:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lj-5:\ :rm=ime.tiskalnika.si:rp=raw: </verb></tscreen> <p> Ali pa uporabite naslednja argumenta za vmesnik bsd-lpd za PDQ: <tt>REMOTE_HOST=ime.tiskalnika.si</tt> in <tt>QUEUE=raw</tt>. <p> Tiskalniki HP Laserjet z vmesniki Jet Direct na splošno podpirajo dve vgrajeni vrsti za lpd -- surovo (,,<em>raw</em>``), ki sprejema PCL (in morda tudi postscript), in tekstovno (,,<em>text</em>``), ki sprejema navaden ASCII (in samodejno odpravi učinek stopnic). Če imate tiskalnik z JetDirect Plus3 s tremi vhodnimi vrati, se vrste imenujejo ,,<em>raw1</em>``, ,,<em>text2</em>`` in tako naprej. <p> Bodite pozorni na to, da je podjetje ISS identificiralo večje število napadov, ki blokirajo vmesnike HP Jetdirect. Večina se je zgodila od začetka jeseni 1998. Te težave so pogoste v vgrajeni kodi; malo naprav v slogu pripomočkov bi moralo biti izpostavljenih internetnemu prometu. <p> V velikem okolju, posebej v tako velikem okolju, v katerem nekateri tiskalniki ne podpirajo postscripta, je lahko uporabno ustvariti poseben <!-- ? dedicated --> tiskalniški strežnik, na katerega tiskajo vsi stroji in na katerem tečejo opravila ghostScripta. To omogoča, da se čakalna vrsta zaustavi ali preuredi z ukazoma <tt>topq</tt> in <tt>lprm</tt>. <p> 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 delo, 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). <p> 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šega omrežja LAN, da bodo kazali na čakalno vrsto Linuxa (npr. lj-5 v zgornjem primeru). <p> Nekateri omrež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 <tt>telnet</tt> priključite na tiskalnik, dvakrat pritisnete <em>Enter</em>, napišete ,,<tt>banner: 0</tt>`` in potem ,,<tt>quit</tt>``. Na voljo so tudi druge nastavitve, ki jih lahko tako spremenite; napišite ,,<tt>?</tt>`` za seznam. <p> Poln nabor nastavitev lahko nadzirate s programjem HP <htmlurl name="webJetAdmin" url="http://www.hp.com/go/webjetadmin">. Ta paket teče kot pritajeni strežnik in sprejme zahtevke HTTP na določenih vratih. Streže obrazce in java applete, ki lahko nadzorujejo tiskalnike HP v omrežju. Teoretično lahko nadzoruje tudi tiskalniške čakalne vrste v Unixu, a to počne s storitvijo <tt>rexec</tt>, ki je popolnoma nezaščitena. Ne priporočam vam uporabe te lastnosti. <sect2>Na naprave AppSocket <p> 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 (skupaj 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 vanjo stlačiti svoje tiskalniško opravilo. V LPR je vgrajena podpora tlačenju tiskalniških opravil na naključna vrata TCP, a z BSD lpd ni tako preprosto. Verjetno bo najbolje, da dobite in uporabite mali pripomoček, imenovan <tt>netcat</tt>. <p> Vmesnik za PDQ, ki bi uporabljal <tt>netcat</tt>, bi bil nekako takle: <tscreen> <verb> interface tcp-port-0.1 { help "To je eden prvih vmesnikov, ki jih podpirajo samostojni tiskalniki in tiskalniški strežniki. Naprava preprosto posluša za povezavo TCP na določenih vratih in čaka podatke s katerekoli povezave na tiskalnik.\nTa vmesnik potrebuje program netcat (\"nc\")." required_args "REMOTE_HOST" argument { var = "REMOTE_HOST" desc = "Oddaljeni gostitelj" help = "To je ime ali številka IP tiskalniškega strežnika." } argument { var = "REMOTE_PORT" def_value = "9100" desc = "Oddaljena vrata" help = "To je število vrat TCP na tiskalniškem strežniku, na katerega mora biti poslano tiskalniško opravilo. Večina kartic JetDirect in klonov sprejme opravila na vratih 9100 (ali 9101 za vrata 2 itd.)." } requires "nc" send_exec { cat $OUTPUT | nc $REMOTE_HOST $REMOTE_PORT } } </verb> </tscreen> <p> Če to spodleti, lahko izvedete na druge načine, med drugimi v Perlu s spodnjim programom. Za boljše delovanje uporabite program <tt>netcat</tt> (,,<tt>nc</tt>``), ki opravi pretežno isto na bolj splošen način. Večina distribucij bi morala imeti <tt>netcat</tt> dostopen že v pakirani obliki. <tscreen> <verb> #!/usr/bin/perl # Hvala Danu McLaughlinu, ker je napisal izvirno 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&ero;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; } </verb></tscreen> <sect1>Poganjanje <tt>if</tt> za oddaljene tiskalnike s starejšimi LPD <p> Čudna posebnost starejših različic <tt>lpd</tt> je, da se <tt>if</tt> ne požene za oddaljene tiskalnike. (Različice po 0.43 ali nekaj takega imajo spremembo, ki izvira iz FreeBSD, tako da se <tt>if</tt> vedno požene.) Če ugotovite, da morate pognati <tt>if</tt>, lahko to storite tako, da naredite dvojno čakalno vrsto in prevrstite opravilo. Na primer, poglejte tole datoteko <tt>printcap</tt>: <tscreen><verb> 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: </verb></tscreen> V tej luči je skript <tt>filter-lj-5</tt> tak: <tscreen><verb> #!/bin/sh gs <izbire> -q -dSAFER -sOutputFile=- - | \ lpr -Plj-5-remote -U$5 </verb></tscreen> <p> Izbira <tt>-U</tt> za <tt>lpr</tt> deluje le, če je <tt>lpr</tt> pognan pritajeno (angl. <em>daemon</em>), 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. Glej stran referenčnega priročnika o <em><htmlurl name="printcap" url="http://www.linuxprinting.org/man/printcap.5.html"></em>. <sect1>Iz Windows <p> Tiskanje iz odjemalca z Windows (ali morda z OS/2) na strežnik z Linuxom je neposredno podprto čez SMB z uporabo paketa SAMBA, ki podpira tudi deljenje datotek med datotečnim sistemom Linuxa in odjemalci z Windows. <p> Samba ima precej popolno dokumentacijo, na voljo je tudi dober seznam pogostih vprašanj z odgovori, ki pokriva to temo. Na svoji škatli z Linuxom lahko nastavite magični filter in tiskate skozenj postscript ali pa uporabljate posebne, za tiskalnik specifične gonilnike na vseh strojih z Windows in imate zanje č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. Sodobne različice Sambe bi morale podpirati samodejno prenašanje gonilnika, ki ga ponujajo strežniki Windows NT, ki razreši to težavo. <p> S PDQ bi morali nastaviti Sambo, da požene ukaz <tt>pdq</tt> z ustreznimi argumenti namesto ukaza <tt>lpr</tt>, ki ga požene privzeto. Mislim, da Samba požene <tt>pdq</tt> kot pravi uporabnik, zato bi moralo tako dobro delovati. Na voljo je precej izbir za Sambo, ki bi jih morali nastaviti za to: <descrip> <tag><tt>printcap</tt></tag> To bi moralo kazati na ,,ponarejeni`` printcap, v katerem navedete seznam dostopnih tiskalnikov. Vse, kar potrebujete, je kratko in dolgo ime za vsak tiskalnik, enega na vrstico: <tscreen> <verb> lp1|Prvi tiskalnik lp2|Drugi tiskalnik lp3|Tretji tiskalnik </verb> </tscreen> V ukazu za tiskanje bo uporabljeno kratko ime. <tag>ukaz za tiskanje</tag> Ta bi moral biti nastavljen na nekaj kot <tt>pdq -P %p %s ; rm %s</tt>. <tag>ukaz <tt>lprm</tt></tag> Za nastavljanje tega trenutno ni videti dobre vrednosti. Opravila, ki jih ima PDQ v vrsti, bodo sčasoma zastarela, zato ni težav, če tiskalnik povsem odpove. Če si premislite, lahko uporabite <tt>xpdq</tt>, da prekličete opravila, a to priročno iz Windows. Zaenkrat le vstavite ukaz, ki ne počne nič, denimo <tt>true</tt>. Če kot sistem v ozadju uporabljate <tt>lpd</tt> ali LPRng, bi moral delovati primeren ukaz <tt>lprm</tt>. Nisem prepričan, kako bi Samba določila številko vnosa za vrsto lpr za opravila, ki jih je uvrstil PDQ. <tag>ukaz <tt>lpq</tt></tag> PDQ spet nima dobre vrednosti, da bi jo podali tu. Porazdeljeni sistemi ne ponujajo razumnega načina, da bi videli vrsto, a centralizirani strežniški sistemi, osredotočeni na Sambo, imajo lahko čakalno vrsto, ki jo je vredno preučiti. Zaenkrat tu dodajte le ukaz, ki ne dela nič, denimo <tt>true</tt>. Če kot sistem v ozadju uporabljate LPD ali LPRng, bi moral delovati primeren ukaz <tt>lpq</tt>, le da ne boste videli opravil, dokler jih PDQ ne neha filtrirati. </descrip> <sect1>Iz računalnika Apple <p> Netatalk podpira tiskanje iz odjemalcev Apple čez EtherTalk. Glej spletno stran <url name="Netatalk HOWTO Page" url="http://thehamptons.com/anders/netatalk/"> za več informacij. <sect1>Iz NetWarea <p> Paket <em>ncpfs</em> vključuje demonski strežnik <tt>pserver</tt>, ki ga lahko uporabite za ustvarjanje opravila za tiskalniško čakalno vrsto NetWarea. Kakor razumem, ta sistem potrebuje NetWare, grajen na Bindery, kot je 2.x, 3.x, ali 4.x, z omogočenim povezovalnim dostopom. <!-- ? bindery access enabled. --> <p> Za več podatkov o ncpfs in programu <tt>pserver</tt> glej <url url="ftp://ftp.gwdg.de/pub/linux/misc/ncpfs/" name="mesto za FTP ncpfs">. <sect1>Upravljanje omrežnih tiskalnikov <p> Večina omrežnih tiskalnikov podpira nekakšno upravljanje na daljavo. Pogosto so na voljo preproste spletne strani za nastavitev. Pogosto je na voljo tudi podpora upravljanju prek SNMP, kar je bolj uporabno. Tipično lahko izveste zanimive podatke o stanju tiskalnika, kot so zaloge črnila in papirja, število natisnjenih izvodov in tako naprej, in navadno lahko spreminjate določene nastavitve. Nadzor tiskalnikov prek SNMP in številne druge stvari, povezane s tiskanjem, standardizira <htmlurl name="delovna skupina za tiskanje" url="http://www.pwg.org/"> pri IEEE. <sect2>Npadmin<label id="NPADMIN"> <p> <htmlurl name="Npadmin" url="http://npadmin.sourceforge.net/"> je program za ukazno vrstico, ki ponuja vmesnik do pogoste funkcionalnosti SNMP omrežnih tiskalnikov. Izvaja standard <htmlurl name="Printer MIB" url="http://www.ietf.org/rfc/rfc1759.txt"> kot tudi lastniške sheme nekaterih izdelovalcev, ki jih uporabljajo pretežno starejše naprave. Podprta so tako dejanja za odkrivanje tiskalnikov kot tudi različna povpraševanja tiskalnikov o stanju. <p> Npadmin ima izvrstno <htmlurl name="stran v referenčnem priročniku" url="http://npadmin.sourceforge.net/man/"> in vnaprej prevedeni paketi se razširjajo za številne distribucije, ki uporabljajo pakete RPM ali dpkg. <sect2>Druga orodja za SNMP <p> Poleg orodja <tt>npadmin</tt> so na voljo številna orodja za SNMP, ki bodo uporabna. Pripomoček <tt>snmptraplogd</tt> lahko zapisuje dogodke SNMP trap. <!-- SNMP trap ??? --> To je uporabno za spremljanje zatikanja papirja v tiskalniku, dogodke, ko zmanjka papirja itd.; preprosto je preusmeriti določene dogodke na pozivnik ali poslati e-pošto. <p> Medtem ko <tt>npadmin</tt> ponuja poenostavljeno podporo številnim Vmesnikom SNMP omrežnih tiskalnikov, imajo lahko nekateri tiskalniki razširitve izdelovalcev, o katerih <tt>npadmin</tt> ne ve ničesar. V tem primeru lahko uporabljate orodja SNMP podjetja CMU, ki podpirajo poljubne operacije SNMP GET in SET, pa tudi sprehode in podobno. S temi in malce dela lahko izkoristite katerokoli lastnost SNMP, ki jo ponuja MIB vašega tiskalnika. Morda boste morali dobiti od svojega dobavitelja MIB, da boste ugotovili, kaj pomenijo vse spremenljivke; včasih dobavitelji mislijo, da ljudje celo uporabljajo lastniška orodja, ki jih dobavljajo. <p> Orodje <htmlurl name="libprinterconf" url="http://sourceforge.net/project/?group_id=3648"> vključuje kodo, ki izvaja odkrivanje tiskalnikov v omrežju. Tiskalniki so prepoznani glede na prevedeno knjižnico tiskalniških podpisov; trenutno knjižnica ni ravno velika, a pokriva številne pogoste modele omrežnih tiskalnikov. <sect>Tiskalniki le-za-Windows<label id="winprinters"> <p> 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 izdelovalčevega gonilnika za posnemanje tega, kar bi moralo biti strojno podprto obnašanje (najpomembnejše -- rokovanje). <!-- flow control --> <p> V vsakem primeru je na voljo nekaj možnih ovinkov, če ste že obtičali s tako polomijo. <sect1>Preusmerjevalnik v ghostscriptu v Windows <p> Na voljo je tiskalniški gonilnik za Windows (imenovan mswinpr2), ki požene tiskalniško opravilo skozi ghostscript, preden ga zares natisne. (Nekaj kot filter <em>if</em> v <tt>lpd</tt> za Unix.) Obstaja tudi nov gonilnik za ghostscript, ki tiska z uporabo klicev GDI v Windows. To dvoje skupaj naj bi(tm) dovoljevalo stroju z Windows tiskanje postscripta na tiskalnik le-za-Windows z izdelovalčevim gonilnikom. <p> Če vam uspe to usposobiti, lahko potem sledite zgornjim navodilom o tiskanju iz Linuxa prek omrežja na tiskalnik sistema Windows. S tem boste dovolili Unixom (in drugim Windows, Mac itd.) tiskanje na vašem polomljenem tiskalniku. <sect1>Tiskalniki HP za Windows <p> 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 <tt>pbm2ppa</tt>, ki ga je napisal Tim Norman. V bistvu uporabljate <tt>ghostscript</tt> za predelavo postscripta v rastrsko sliko formata pbm in potem uporabite <tt>pbm2ppa</tt> za predelavo v rastrski format ppa, ki ga razume vaš tiskalnik. Ta program je lahko zdaj na voljo tudi kot gonilnik za ghostscript. <p> Programje za ppa dobite na <url url="http://www.rpi.edu/~normat/technical/ppa/" name="domači strani ppa">; pbm2ppa podpira nekatere modele HP 720, 820, in 1000; za več podatkov o tiskalniški podpori ppa preberite dokumentacijo, priloženo paketu. <sect1>Tiskalniki Lexmark za Windows <p> Večina poceni brizgalnikov Lexmark uporablja lastniški jezik in so torej tiskalniki le za Windows. Henryk Paluch je napisal program, ki lahko tiska na tiskalnik Lexmark 7000. Upajmo, da bo zmogel pogruntati barvno in razširjeno podporo za druge brizgalnike Lexmark. Glej stran <htmlurl name="l7kdriver" url="http://bimbo.fjfi.cvut.cz/~paluch/l7kdriver/"> za več podatkov. <p> Podobno so zdaj na voljo gonilniki za tiskalnike 5700, 1000, 1100, 2070, 3200 in druge. Na zgornjem seznamu podprtih tiskalnikov in moji spletni strani najdete več informacij o tem, kako dobiti te gonilnike. <sect>Kako tiskati na faks <p> Na faksirni stroj lahko tiskate z modemo ali brez. <sect1>Uporaba faks-modema <p> Veliko faksirnih programov vam omogoča faksiranje in sprejemanje dokumentov. Eden najzmogljivejših je <htmlurl name="HylaFax" url="http://www.hylafax.org/"> Sama Lefflerja. Podpira vse mogoče, od več modemov do oddajanja (angl. broadcasting). <p> SuSE izdaja odjemalec <em>Java HylaFax</em>, ki menda deluje na katerikoli javanski platformi (tudi z Windows in Linuxom). Za večino platform so na voljo tudi nejavanski faksirni odjemalci: Linux lahko skoraj zagotovo zadovolji vaše omrežne faksirne potrebe. <p> Dostopna je tudi še boljša izbira za večino škatel z Linuxom; <tt><htmlurl name="efax" url="http://casas.ee.ubc.ca/efax/"></tt>, preprost program za pošiljanje faksov. Program <tt>mgetty</tt> lahko pošilja fakse z uporabo programa <tt>efax</tt> (in obvlada glasovno pošto ali interaktivne prijave). <sect2>Faksiranje iz PDQ <p> PDQ ni priložena deklaracija faksirnega vmesnika, vendar je tu preprosti (ki je le delno preskušen): <tscreen> <verb> interface efax-0.1 { help "Ta vmesnik za pošiljanje faksov uporablja faksirni program iz paketa efax. Najprej morate usposobiti delovanje \"fax send\" tako, da uredite datoteko /etc/efax.rc, in preskušati. Povežite ta vmesnik s splošnim postscriptnim gonilnikom, da definirate faksirni stroj \"printer\"". requires { "efax" "fax" } # Če zahtevamo, da je telefonska številka obvezna, to pomeni, # da bo čarovnik za dodajanje tiskalnika med dodajanjem # novega tiskalnika zahteval telefonsko številko. To ni # zaželeno, zato ni eksplicitno obvezna, čeprav je logično # potrebna. Skript send_exec pogleda za številko. Čarovnika # lahko preskočite tako, da ročno dodaste ta tiskalnik v # .printrc, označite to kot obvezno, pa bo potem vpraševal? argument { var = "PHONE_NUMBER" desc = "Telefonska številka" help = "Telefonska številka za klic. Predpone z 9 morajo biti definirane v vaši datoteki /etc/efax.rc." } option { var = "RESOLUTION" desc = "Ločljivost faksa" default_choice = "high" choice "low" { value = "-l" desc = "Nizka" help = "Nizka ločljivost faksa je 96 lpi." } choice "high" { value = "" desc = "Visoka" help = "Nizka ločljivost faksa je 192 lpi." } } # Če ne podaste telefonske številke, opravilo preprosto # ne deluje in edini način, da to ugotovite, je, da # pogledate sporočilo o napaki na koncu podrobnosti o # opravilu. Hm. send_exec { if [ "x$PHONE_NUMBER" != "x" ] then fax send $RESOLUTION $PHONE_NUMBER $INPUT else echo 'Podati morate telefonsko številko!' false fi } } </verb> </tscreen> <sect1>Uporaba tiskalniških storitev na daljavo <p> Na voljo je 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šni vtis pikčast, je to lahko zelo uporabna storitev. Za več informacij o tiskanju s tiskalniško storitvijo na daljavo, si oglejte njegovo spletno stran <url url="http://www.tpc.int/" name="Remote Printing WWW Site">. <sect1>Komercialne faksirne storitve <p> Številna podjetja tržijo spletne faksirne storitve. Še posebej <htmlurl name="EFax" url="http://www.efax.com/"> ponuja brezplačne prejete fakse (na vašo lastno posebno številko faksa, nič manj) prek e-pošte in pošiljanje faksov za plačilo. Druga podjetja ponujajo podobne storitve. <sect>Kako narediti nekaj, kar je vredno tiskanja <p> Tu pridemo v pravo podganje leglo programja. Linux lahko načeloma poganja veliko vrst binarnih programov različno uspešno: Linux/x86, Linux/Alpha, Linux/Sparc, Linux/foo, iBCS, Win16/Win32s (z dosemu in, nekega dne, z Wine), Mac/68k (s posnemovalnikom Executor) in Java. Opisal bom le domorodno programje za Linux in splošni Unix. <sect1>Opisni jeziki <p> Večina opisnih jezikov je primernejša za velike in ponavljajoče se projekte, pri katerih želite prepustiti računalniku nadzor nad ureditvijo besedila in s tem poenotiti videz reči. <p> <descrip> <tag><tt>nroff</tt></tag> To je bil eden prvih opisnih jezikov v Unixu. Strani z opisi ukazov v referenčnem priročniku (za <tt>man</tt>) so najpogostejši zgled stvari, formatiranih z makro ukazi *roff; veliko ljudi prisega nanje, a <tt>nroff</tt> ima, vsaj zame, preveč zastarelo skladnjo, kot bi bilo treba, in je verjetno slaba izbira za nova dela. Vseeno se izplača vedeti, da lahko s programom <tt>groff</tt> postavite stran iz formata za <tt>man</tt> neposredno v postscript. Večina programov <tt>man</tt> naredi to z ukazom <tt>man -t foo | lpr</tt>. <p> <bf>Slika 9. Zgled vhoda za roff</bf> <tscreen><verb> .B man is the system's manual pager. Each .I page argument given to .B man is normally the name of a program, utility or function. The .I manual page associated with each of these arguments is then found and displayed. A .IR section , if provided, will direct .B man to look only in that .I section of the manual. </verb></tscreen> <tag>TeX</tag> 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 videza in je <em>še vedno</em> eden redkih sistemov za stavljenje besedila, ki podpira matematične izraze hkrati popolnoma in dobro. Izhodni format TeXa je <tt>dvi</tt> in ga lahko pretvorite v postscript ali PCL za tiskalnik Hewlett-Packard s programoma <tt>dvips</tt> or <tt>dvilj</tt>. Če želite namestiti TeX ali LaTeX, namestite celotno skupino paketov za teTeX; ta vsebuje vse. Novejše namestitve TeXa vključujejo pdfTeX in pdfLaTeX, ki izdelujejo neposredno datoteke Adobe PDF. Na voljo so ukazi, ki izdelujejo nadpovezave in izkoriščajo navigacijske sposobnosti datoteke PDF. <p> Več o izvedbi TeXa za Linux boste izvedeli v prevodu spisa <htmlurl url="http://www.lugos.si/delo/slo/HOWTO-sl/TeTeX-HOWTO-sl.html" name="TeTeX HOWTO">. <p> <bf>Slika 10. Zgled vhoda za LaTeX.</bf> <tscreen><verb> \subsubsection{NAT} Each real server is assigned a different IP address, and the NA implements address translation for all inbound and outbound packets. \begin{description} \item[Advantage] Implementation simplicity, especially if we already implement other NAT capabilities. \item[Disadvantage] Return traffic from the server goes through address translation, which may incur a speed penalty. This probably isn't too bad if we design for it from the beginning. \item[Disadvantage] NAT breaks the end-to-end semantics of normal internet traffic. Protocols like ftp, H.323, etc would require special support involving snooping and in-stream rewriting, or complete protocol proxying; neither is likely to be practical. \end{description} </verb></tscreen> <tag>SGML</tag> Za Unix in Linux je na voljo vsaj en prosti razčlenjevalnik za SGML; sestavlja osnovo v Linuxu narejenega dokumentirnega sistema Linuxdoc-SGML. Podpira tudi druge DTD, najpomembnejši pa je DocBook. Ta dokument je bil napisan v DocBook-DTD SGML, glej sliko 11 za zgled. <p> <bf>Slika 11. Zgled besedila v DocBook SGML.</bf> <p> <tscreen><verb> <VarListEntry> <Term>SGML</Term> <ListItem> <Para> There is at least one free SGML parser available for Unix and Linux; it forms the basis of Linuxdoc-SGML's homegrown document system. It can support other DTD's, as well, most notably DocBook. This document is written in DocBook-DTD SGML. </Para> </ListItem> </VarListEntry> </verb></tscreen> </descrip> <sect1>Urejevalniki besedila WYSIWYG (videz ne vara) <p> Ni pomanjkanja programja za urejanje besedila v načinu WYSIWYG. Dostopnih je veliko popolnih pisarniških zbirk, skupaj z eno, ki je prosta za osebno rabo (StarOffice). <descrip> <tag>StarOffice</tag> Sun Microsystems razširja po omrežju zbirko StarOffice 5.2, brezplačno za Linux. Ta popolna pisarniška zbirka ima vse lastnosti, ki jih lahko pričakujete, in po nižji ceni ne boste našli nobene druge. Obstaja poseben spis mini-HOWTO, ki opisuje, kako jo dobite in namestite. Generira postscript, torej bi morala delovati s skoraj vsakim tiskalnikom, ki sicer deluje v Linuxu. <tag>WordPerfect</tag> Corel brezplačno razširja osnovno različico programa Word Perfect 8 za Linux in prodaja različne pakete iz Word Perfect Office 2000 (ki zajema WordPerfect, Corel Draw in Quattro Pro, različica 9). Spletna stran <url url="http://www.rodsbooks.com/wpfonts/" name="Linux WordPerfect Fonts and Printers"> ponuja informacije o nastavitvi WordPerfecta za uporabo z ghostscriptom ali vgrajenimi tiskalniškimi gonilniki (kaže, da so ti enaki dosovskim gonilnikom za WordPerfect, če gonilnik za vaš tiskalnik ni zajet v distribucijo WP8). <tag>Applix</tag> Applix je večplatformski (se pravi, deluje v 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. To je edina domorodna zbirka aplikacij za Unix; verjetno bolj ustreza unixovskemu počenjanju stvari. <tag>AbiWord</tag> <htmlurl name="AbiWord" url="http://www.abisource.com/"> je eden od različnih projektov WYSIWYG urejevalnikov besedil pod GPL; ta je izdelal precej prijeten urejevalnik besedil, ki temelji na formatu XML. Zna uvažati datoteke iz Worda. AbiWord še vedno izdelujejo, čeprav je za manjše stvari že zdaj uporaben. <p> <bf>Slika 12. AbiWord</bf> <tag>LyX</tag> LyX je uporabniški vmesnik za LaTeX, ki je videti zelo obetavno. Glej spletno stran <url name="LyX Homepage" url="http://www.lyx.org/"> za več informacij. Na voljo je tudi različica LyXa v slogu okenskega upravljalnika KDE, imenovana KLyX; prvi avtor LyXa in spodbujevalec uporabe namizja KDE sta en in isti človek. <p> <bf>Slika 13. LyX</bf> <tag>Maxwell</tag> Maxwell je preprost urejevalnik besedil, zasnovan na formatu Microsoft RTF. Začel se je kot komercialni izdelek, zdaj pa se razširja pod GPL. </descrip> <p> Drugi izdelovalci mi lahko pošljejo sporočilo s svojo ponudbo. <sect>Tiskanje fotografij <p> Številne podrobnosti odločajo o tem, ali bomo iz običajnih tiskalnikov dobili spodobno fotografijo. Če še niste kupili fototiskalnika, si preberite nasvete v zvezi s fotografijo v razdelku <ref id="SHOPPING" name="Kako kupiti tiskalnik">. <sect1>Ghostscript in fotografije <p> Ghostscript ima nekaj težav pri upodabljanju barvnih fotografij prek večine gonilnikov. Težave so resne: <itemize> <item> Številni gonilniki imajo zelo slabo optimalizirano podporo barvam. Pogosto barve ne ustrezajo izhodu gonilnika za Windows ali zaslonu. Po drugi strani imajo vsi gonilniki in ghostscript kot celota že pripravljeno podporo prilagodljivim barvam; ,,gama`` nastavitve (glej razdelek <ref id="GSGAMMA" name="Gama, velikost pik itd.">) so ena od reči, s katero se splača poigrati, in še druge so navedene v dokumentacijski datoteki <tt>Use.htm</tt> za ghostscript. <item> Zavedam se le enega gonilnika za ghostscript s podporo 6- in 7-barvnemu tiskanju; trenutno je v beta različici in podpira večino modelov Epson Stylus Photo. Govori se, da izdeluje boljše barve kakor gonilnik v Windows (!). Samo jedro gonilnika ghostscript sicer ne ponuja podpore barvnim paletam, ki niso vrste CMYK ali RGB; očitno je tu treba nekaj narediti. <item> Ghostscript pogosto končuje stresanje barv slabo ali generira tiskovine z napakami, kot so trakovi. Stresanje barv je navadno moč popraviti; oglejte si razdelek <ref id="GSCOLOR" name="Barvno tiskanje v ghostscriptu"> in si preberite dokumentacijo za vaš tiskalnik. </itemize> <p> Nekatere od teh težav bi morali biti sposobni popraviti tako, da uglasite ghostscript; glej razdelek <ref id="ghostscript" name="Ghostscript"> za več informacij o tem, kako to storiti. Igranje z izbirami za ghostscript je dosti lažje, če jih deklarirate kot izbire v svojem čakalniškem sistemu. <p> Če vemo to, je očitna rešitev za zdaj, da za tiskanje fotografij uporabljamo programje, ki ni ghostscript, in take reči so res na voljo. Poglavitna sestavina je tiskalniški vstavek za Gimp, ki podpira tiskanje piko-po-piko na tiskalnikih serije Epson Stylus in postscriptnih tiskalnikih (z osnovno podporo PPD). Ta del tiskalnika za Epson Stylus je na voljo tudi v ghostscriptu kot gonilnik <tt>stp</tt>. Za ta namen so uporabni tudi določeni zunanji programi pnm-v-foo, za tiskanje na tiskalnike, kot so poceni Lexmarki; ti skušajo tiskati bitne slike piko-po-piko. <p> Najboljša rešitev je, seveda, nakup postscriptnega tiskalnika; taki tiskalniki se navadno lahko popolnoma krmilijo z dostopnim prostim programjem in bodo tiskali do skrajnih zmogljivosti tiskalnika. <sect1>Papir <p> Pri barvnih brizgalnikih je kakovost izpisa zelo odvisna od papirja. Drag, bleščeč trdi papir <!-- ??? glossy coated --> za brizgalnike vam bo omogočil izdelati skoraj fotografski izhod, medtem ko bo navaden papir <!-- uncoated --> pogosto dal motne barve in zmešane podrobnosti. Nonglossy coated <!-- ??? --> papirji za brizgalnike bodo dali nekakšen vmesni rezultat in so verjetno najboljši tudi za končne natise besedila. Stiffer glossy coated <!-- ??? --> ,,foto`` papir bo dal podoben izhod kakor lahek glossy <!-- ??? --> papir, a se bo zdel kot navadna fotografija. <sect1>Nastavitve tiskalnika <p> Za fotografski izhod na večini barvnih brizgalnikov bi morali nastaviti najbolj prepleteni (in najpočasnejši) način tiskanja; sicer imajo enobarvna področja trakove ali šibke barve. Na splošno je z ghostscriptom to tisto, kar se bo zgodilo, ko boste izbrali najvišjo ločljivost. S postscriptnimi tiskalniki boste morda morali dodati košček kode v prolog, glede na nastavitve, določene v datoteki PPD. Podpora PPD v Gimpu ne zajema (za tiskalnik specifičnih) nastavitev kakovosti tiskanja, a za svojo rabo sem to dodal na grd način; vprašajte me, ali bi radi to. Če uporabljate PDQ ali CUPS, lahko zlahka nadzorujete vse nastavitve tiskalnika, ki jih potrebujete. Te izbire lahko postscriptnim tiskalnikom dodasta tudi <tt>libppd</tt> podjetja VA Linux in vmesnik GPR. <sect1>Vzdržljivost natisnjenega <p> Barvni izpisi brizgalnikov navadno po nekaj letih zbledijo, še posebej, če so zelo izpostavljeni svetlobi in zraku; to je funkcija črnila. Tiskalniki, ki potrebujejo zgolj črnilo, kot so Epsoni in Canoni, lahko uporabljajo arhivarska črnila, ki so manj dovzetna za ta problem. Novejši tiskalniki pogosto uporabljajo črnila, ki temeljijo na barvilih, ki ne zbledijo tako zelo, kot so starejša črnila, ki temeljijo na vosku. <!-- dye?? --> Za dolgotrajno arhivsko rabo pa ni zares dober noben izhod brizgalnega tiskalnika. Napišite bite na CD-R in raje shranite tega. <sect1>Preskusno in komercialno programje <p> Ma voljo je program, imenovan <htmlurl name="xwtools" url="http://home.t-online.de/home/jj.sarton/startE.htm">, z vsemi poslasticami tiskalnikov Epson, HP in Canon. Žal je bil napisan pod pogodbo, ki preprečuje razkritje izvirne kode. Razen, če ga uporabljate s tiskalnikom Epson Stylus Color 300 v Linuxu x86, stane 15 evrov za osebno rabo; komercialna tarifa ni znana. <p> Paket ESP Print Pro podjetja Easy Software podpira nekatere tiskalnike, ki sicer morda ne bi bili podprti. Ne poročajo, da bi bili ti gonilniki dobro uglašeni za fotografije, vendar delujejo. <sect>Ogled na zaslonu pred tiskanjem <p> Skoraj vse, kar lahko natisnete, si lahko tudi ogledate na zaslonu. <sect1>PostScript <p> Ghostscript ima gonilnik za X11, ki ga najbolje upravlja program za ogled PostScripta <htmlurl name="gv" url="http://www.linuxprinting.org/man/gv.1x.html">. Zadnje različice teh programov bi morale biti sposobne tudi prikazati datoteke PDF. Vedite, da je <tt>gv</tt> nadomestil prejšnji program ,,Ghostview``; uporabniški vmesnik je precej lepši in ponuja več možnosti kakor dobri stari vmesnik Athena v programu <tt>ghostview</tt>. <p> <bf>Slika 14. Gv</bf> <sect1>TeXove dvi <p> Datoteke DVI (<em>DeVice Independent</em> -- od naprave neodvisne datoteke) si lahko ogledate v X11 s programom <htmlurl name="xdvi" url="http://www.linuxprinting.org/man/xdvi.1.html">. Sodobne različice prikazovalnika <tt>xdvi</tt> kličejo <tt>ghostscript</tt> za prikaz vključenih slik v postscriptu. <p> Na voljo je tudi gonilnik za terminal VT100. Imenuje se <tt>dgvt</tt>. <tt>Tmview</tt> deluje z Linuxom in svgalib, če je to vse, kar lahko počnete. <sect1>Adobe PDF <p> Za Linux je na voljo Adobov prikazovalnik Acrobat Reader; vzemite ga z njihove spletne strani <url url="http://www.adobe.com/">. <p> Lahko uporabite tudi <tt>xpdf</tt>, ki je prosto programje. Mislim, da do zdaj tudi <tt>gv</tt> že podpira ogled datotek PDF z <tt>gs</tt> za X11. <sect>Zaporedni tiskalniki pod lpd <p> Zaporedni tiskalniki so v <tt>lpd</tt> bolj zapleteni. <sect1>Postavitev v printcap <p> Strežniku lpd lahko podaste pet atributov, ki jih nastavite v datoteki <tt>/etc/printcap</tt>, in s tem nadzorujete vse nastavitve zaporednih vrat, na katerih je tiskalnik. Preberite stran referenčnega priročnika o <em><htmlurl name="printcap" url="http://www.linuxprinting.org/man/printcap.5.html"></em> in si poglejte pomen atributov <em>br#</em>, <em>fc#</em>, <em>xc#</em>, <em>fs#</em> in <em>xs#</em>. Zadnji štirje od teh atributov so bitne slike, ki pomenijo nastavitve za uporabo vrat. Atribut <em>br#</em> je preprosto hitrost prenosa v baudih, npr. ,<tt>br#9600</tt>`. <p> Zelo lahko je preslikavati iz nastavitev <htmlurl name="stty" url="http://www.linuxprinting.org/man/stty.1.html"> v nastavitev zastavic v printcap. Če morate to storiti, zdaj poglejte stran o <tt>stty</tt> v referenčnem priročniku. <p> Uporabite <tt>stty</tt> za postavitev tiskalniških vrat, tako da lahko izpišete na njih datoteko (s <tt>cat</tt>) in se ta pravilno natisne. Takole je videti ,<em>stty -a</em>` za moja tiskalniška vrata: <tscreen><verb> 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 </verb></tscreen> Edine razlike med tem in načinom, kako se vrata inicializirajo ob zagonu, so <tt>-clocal</tt>, <tt>-crtscts</tt> in <tt>ixon</tt>. Vaša vrata so prav lahko drugačna, odvisno od tega, kako vaš tiskalnik zganja kontrolo toka. <p> Pravzaprav uporabljate <tt>stty</tt> nekam čudno. Ker <tt>stty</tt> deluje na terminalu, priključenem na standardni vhod, ga uporabite za obvladovanje danih zaporednih vrat z uporabo znaka ,<tt><</tt>`, kakor zgoraj. <p> Ko ste enkrat zadeli svoje nastavitve v <tt>stty</tt> tako, da ukaz ,,<tt>cat file > /dev/ttyS2</tt>`` (v mojem primeru) pošlje datoteko na tiskalnik, si oglejte datoteko <tt>/usr/src/linux/include/asm-i386/termbits.h</tt>. Ta vsebuje veliko definicij z <tt>#define</tt> in nekaj struktur <tt>struct</tt> (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: <tscreen><verb> /* c_cflag bit meaning */ #define CBAUD 0000017 </verb></tscreen> Ta razdelek našteva pomen posameznih bitov v <em>fc#</em> in <em>fs#</em>. Opazili boste, da se tamkajšnja imena (po hitrostih prenosa v baudih) ujemajo z eno od vrstic izhoda <tt>stty</tt>. Vam nisem rekel, da bo to lahko? <p> Poglejte, katere nastavitve izhoda stty se začnejo z znakom ,<tt>-</tt>`. Seštejte vse take številke (osmiške so). To predstavlja bite, ki bi jih radi ugasnili, zato je rezultat vaša zmožnost <em>fc#</em>. Seveda, spomnite se, da boste prižgali bite takoj, ko jih boste ugasnili, zato lahko le uporabite ,<tt>fc#0177777</tt>` (jaz storim tako). <p> Zdaj napravite isto za tiste nastavitve (naštete v tem razdelku), ki pred seboj nimajo znaka ,<tt>-</tt>` 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 <em>fs#</em> (,<tt>fs#02275</tt>` v mojem primeru deluje čisto v redu). <p> Napravite isto s prižiganjem in ugašanjem za naslednji razdelek vključne datoteke, ,,<tt>c_lflag bits</tt>``. V mojem primeru mi ni bilo treba nastavljati ničesar, torej uporabim le ,<tt>xc#0157777</tt>` in <tt>xs#0</tt>`. <sect1>Starejši zaporedni tiskalniki, ki izgubljajo znake <p> Jon Luckey opozarja, da nekateri starejši tiskalniki z zaporednimi vmesniki za dva stotina in majhnimi vmesnimi pomnilniki <em>zares</em> mislijo ,,<em>stop</em>``, 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 <tt><htmlurl name="setserial" url="http://www.linuxprinting.org/man/setserial.8.html"></tt> odpravilo težavo izgubljanja znakov (očitno za to le določite tip kot UART 8250). <sect>Kaj manjka? <p> Mnogih delov popolnega tiskalniškega sistema še ni. Potekajo projekti, ki skušajo zapolniti to vrzel, čeprav jih večina še ni izdelala delujoče uporabne kode, standardizacija potrebnih protokolov in klicev API pa je še v povojih. <sect1>Cevovodenje <p> Splošen problem je, da se vsi deli pogovarjajo drug z drugim; še posebej na način, neodvisen od čakalne vrste. Ta težava se najopazneje kaže v patetični podpori aplikacije, da bi nadzirala vse ,,običajne`` lastnosti tiskanja. Preprosto ni načina, da bi pisec aplikacije dobil podatke o tiskalnikih, opravilih itd.; ni standardiziranega načina za oddajo opravil; ni dobrega načina, da dobimo nazaj stanje opravila; ni niti standardiziranega načina, da bi generirali podatke za tiskanje (čeprav večina novih namiznih sistemov ponuja za to orodja, specifična za namizje). <p> Delo za definicijo razumnih API, ki bi jih aplikacije uporabljale za tiskanje, se bo nedvomno zbralo okoli Corelove knjižnice sysAPS, ki ponuja osnovno izvedbo lastnosti za več vrst in podatkov o tiskalnikih. <sect1>Pisave <p> Ravnanje s pisavami v prostih sistemih je bolj čudno. <!-- awkward --> Zaslon, tiskalnik, aplikacija in vse podatkovne datoteke bi idealno morali imeti dostop do istih pisav. Žal to preprosto ne drži. Obstajajo načrti, da bi strežniku X odvzeli upravljanje pisav in s tem poenostavili del težave, vendar je preslikava dobre tiskalniške pisave v aplikacijsko pisavo še vedno problem. Ni videti, da bi se kak projekt zares ukvarjal s tem; trenutno pisci programov preprosto vključijo svoje pisave v natisnjene podatke. <sect1>Metapodatki <p> Uporabni programi in čakalne vrste morajo nekako izvedeti kaj o lastnostih tiskalnika in gonilnika. Trenutna standardizirana shema, izvedena v Windows, Mac in CUPS, je, da uporabljate datoteke PPD z definicijo postscriptnega tiskalnika, za krmiljenje programirljivega vmesnika in uporabniškega vmesnika. Iz očitnih razlogov je to predstavljalo težave za nepostscriptne tiskalnike, zato je tiskalniška delovna skupina pri IEEE imela projekt, ki bi specificiral datoteke s formatom za univerzalni tiskalniški gonilnik (angl. Universal Printer Driver Format, UPDF). Do zdaj so zgradili vzorčno datoteko v obliki XML. Vzorčna datoteka je zelo podobna datoteki PPD, v njej pa manjka vse vrste podatkov, specifičnih za gonilnik ali platformo, tako da UPDF trenutno ni uporaben. IBM ima popolnoma parametrizirano arhitekturo gonilnikov za OS/2, ki je dostopna kot prosto programje; ko bo enkrat izdana, bo zagotovo uporaben vir zamisli ali kode in morda dober sistem, da bi kar uporabljali. Tudi ta sistem pa ne ponuja definiranega mehanizma za sporočanje zanimivih lastnosti iz gonilniškega prostora do uporabnega programa. Na neki točki se bo gotovo pojavil neki format XML in/ali API za dobivanje določenih lastnosti. <sect1>Gonilniki <p> Stanje gonilnikov, ki so prosto programje, je bolj klavrno. Na srečo poteka več projektov, da bi to popravili, in zdaj lahko dobite na tiskalnikih, ki uporabljajo to kodo, impresivne rezultate. Končni cilj je najbrž ponuditi dobre gonilnike in dober okvir za deljenje pogosto podvojene (in težke!) dele kode v gonilniku -- stresanje barv, denimo. <p> Za doseganje tega cilja bo pomembno sodelovanje z izdelovalci tiskalnikov. Ti trenutno ne ponujajo minimalne dokumentacije, ki je potrebna za delovanje njihovih naprav. Na srečanju Printing Summit 2000 so bili navzoči številni izdelovalci in dosežen je bil majhen napredek. Izdelovalce predvsem skrbi, ker bi radi ohranili algoritem za stresanje barv in podobno skriven; ta programska komponenta je tisto, kar naredi tako dober izhod brizgalnika, in izdelovalci seveda tekmujejo med seboj. Izdelovalci, ki so bili navzoči na tem srečanju, bi morali zdaj imeti jasnejšo predstavo o tem, kako deluje prosto programje in kaj zahtevamo od njih. To ni veliko; a omogoča nadaljnji napredek. <sect>Zasluge <p> Posebna hvala Jacobu Langfordu, avtorju <tt>pdq</tt>, ki nam je končno dal nekaj boljšega kakor kovanje skriptov, obsojenih na 20 let star prenapihnjen program za nadzor vrstičnih tiskalnikov. <p> Podatek o <tt>smbprint</tt> je iz članka, ki ga je napisal Marcel Roelofs <<tt>marcel@paragon.nl</tt>>. <p> Podatek o <tt>nprint</tt> pri uporabi tiskalnikov v NetWare je posredoval Michael Smith <<tt>mikes@bioch.ox.ac.uk</tt>>. <p> Razdelek o zaporednih tiskalnikih pod lpd je spisal Andrew Tefft <<tt>teffta@engr.dnet.ge.com</tt>>. <p> Čvek o gama-popravkih barv in podobnem za <tt>gs</tt> je poslal Andreas <<tt>quasi@hub-fue.franken.de</tt>>. <p> Dva odstavka o 30-sekundnem čakanju zaporednega gonilnika je prispeval <<tt>cdj@netcom.com</tt>>. <p> Robert Hart je poslal nekaj izvrstnih odstavkov o postavitvi tiskalniškega strežnika na omreženih HP, ki sem jih uporabil dobesedno. <p> In posebna zahvala ducatom tistih med vami, ki ste v teh letih opozorili na tipkarske napake, slabe URL in napake v spisu. <p> Slovenski prevod z dne 16. februarja 1999 in posodobitvijo 7. julija 2002 je delo Romana Maurerja <<htmlurl url="mailto:roman.maurer@lugos.si" name="roman.maurer@lugos.si">>. Prosim, pošiljajte mi popravke in dopolnitve prevoda. </article>