<!doctype linuxdoc system>
<!-- Printing-HOWTO-sl -->
<!-- Prevedel: Roman Maurer -->
<!-- Datum prevoda: 12. februar 1999 -->
<!-- Zadnja posodobitev: 7. julij 2002 -->
<article>
<title>Tiskanje v Linuxu, HOWTO

<author>Grant Taylor <tt>&lt;gtaylor+pht@picante.com&gt;</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>&lt;B.A.McCauley@bham.ac.uk&gt;</tt>; skupaj sva bila soavtorja
  novo nastalega PHT nekako dve leti.  Na določeni točki sva vključila
  delo Karla Auerja <tt>&lt;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 &copy; 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 &lt;=2.1.32)
<p>
Jedro sistema Linux (&lt;=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 &gt= 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 &gt; /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 -&gt; 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 &percnt; 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=&dollar;MODE -r360x360 \     # izbire gs iz zbirke podatkov
       -q -dNOPAUSE -dBATCH -dSAFER \ # "navadne" izbire ghostscripta
       -sOutputFile=&dollar;OUTPUT &dollar;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 (&dollar;in, &dollar;out) = (&dollar;ENV{'INPUT'}, &dollar;ENV{'OUTPUT'});
     open INPUT, "&dollar;in";
     open OUTPUT, "&gt;&dollar;out";
     while(&lt;INPUT&gt;) {
        chomp;
        print OUTPUT, "&dollar;_\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=&dollar;MODE -r360x360 \     # izbire gs iz zbirke podatkov
         -q -dNOPAUSE -dBATCH -dSAFER \ # "navadne" izbire ghostscripta
         -sOutputFile=&dollar;OUTPUT &dollar;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 (&dollar;in, &dollar;out) = (&dollar;ENV{'INPUT'}, &dollar;ENV{'OUTPUT'});
       open INPUT, "&dollar;in";
       open OUTPUT, "&gt;&dollar;out";
       while(&lt;INPUT&gt;) {
          chomp;
          print OUTPUT, "&dollar;_\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 &dollar;GS_RES \
          -q -dNOPAUSE -dBATCH -dSAFER \
          -sOutputFile=&dollar;OUTPUT &dollar;INPUT
    }
  }

  # Na koncu zavijemo opravilo v ukaze PJL:
  filter_exec {
    # zahteva echo z možnostjo pošiljanja ubežnih kod...
    echo -ne '\33&percnt;-12345X' &gt; &dollar;OUTPUT

    echo "@PJL SET DUPLEX=&dollar;DUPLEX_MODE"    &gt;&gt; &dollar;OUTPUT
    # Dodaste lahko dodatne ukaze @PJL kakor v zgornji vrstici.
    # Zagotovo pa vedno pripenjajte (&gt;&gt;) na izhodno datoteko!

    cat &dollar;INPUT &gt;&gt; &dollar;OUTPUT
    echo -ne '\33&percnt;-12345X' &gt;&gt; &dollar;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 &dollar;_; print "&dollar;_\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:  "&lt;&lt; /DeviceRenderingInfo ...
*PrintQuality Normal/Normal: "&lt;&lt; /DeviceRenderingInfo &lt;&lt; /...
*PrintQuality Pres/Presentation: "&lt;&lt; /DeviceRenderingInfo ...
*PrintQuality Image/1200 Image Quality: "&lt;&lt; /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>
&percnt; 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 &lt;izbire&gt; -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<---
&percnt;!
&percnt;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 &percnt;p
&percnt;s ; rm &percnt;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>
&lt;VarListEntry&gt;
 &lt;Term&gt;SGML&lt;/Term&gt;
 &lt;ListItem&gt;
  &lt;Para&gt;
   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.
  &lt;/Para&gt;
 &lt;/ListItem&gt;
&lt;/VarListEntry&gt;
</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&num;</em>, <em>fc&num;</em>,
<em>xc&num;</em>, <em>fs&num;</em> in <em>xs&num;</em>.  Zadnji štirje
od teh atributov so bitne slike, ki pomenijo nastavitve za uporabo
vrat. Atribut <em>br&num;</em> je preprosto hitrost prenosa v baudih,
npr. ,<tt>br&num;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 &lt; /dev/ttyS2
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = &lt;undef&gt;;
eol2 = &lt;undef&gt;; 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>&lt;</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>&num;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&num;</em> in
<em>fs&num;</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&num;</em>. Seveda, spomnite se, da boste prižgali
bite takoj, ko jih boste ugasnili, zato lahko le uporabite
,<tt>fc&num;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&num;</em>
(,<tt>fs&num;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&num;0157777</tt>` in <tt>xs&num;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 &lt;<tt>marcel@paragon.nl</tt>&gt;.
<p>
Podatek o <tt>nprint</tt> pri uporabi tiskalnikov v NetWare je
posredoval Michael Smith &lt;<tt>mikes@bioch.ox.ac.uk</tt>&gt;.
<p>
Razdelek o zaporednih tiskalnikih pod lpd je spisal Andrew Tefft
&lt;<tt>teffta@engr.dnet.ge.com</tt>&gt;.
<p>
Čvek o gama-popravkih barv in podobnem za <tt>gs</tt> je poslal Andreas
&lt;<tt>quasi@hub-fue.franken.de</tt>&gt;.
<p>
Dva odstavka o 30-sekundnem čakanju zaporednega gonilnika je prispeval
&lt;<tt>cdj@netcom.com</tt>&gt;.
<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 &lt;<htmlurl
url="mailto:roman.maurer@lugos.si" name="roman.maurer@lugos.si">&gt;.
Prosim, pošiljajte mi popravke in dopolnitve prevoda.
</article>
