Za večino namestitev lahko verjetno ta razdelek v celoti ignorirate -- namesto tega lahko skočite kar na razdelek 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.
Č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.
Uporabljate lahko tudi vmesnike za tiskalniški sistem s spletnega mesta Linux Printing, 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.
PDQ lahko prikroji bodisi naduporabnik bodisi uporabnik Janez.
Spremembe, ki jih naredi root
, se zapišejo v
/etc/printrc
in prizadenejo vsakogar, medtem ko Janezove
spremembe spremenijo le njegovo osebno datoteko .printrc
.
Vse se nanaša na obe vrste nastavitev.
Če v vaši distribuciji ni vnaprej pakiranega PDQ, morate dobiti
izvirno kodo s
spletne strani 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 gcc
, make
in morda še nekaj
drugih razvojnih reči.
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.
Vmesnik za PDQ pove vse o tem, kako pošiljati podatke tiskalniku.
Najpogostejši vmesniki, ki so že definirani v vzorčni datoteki
printrc
v distribuciji PDQ, so:
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 local-port
nanašal le na en sistem. V teh primerih
lahko definirate surovo nefiltrirano vrsto za lpd
na vratih
in tiskate na sistemski strežnik lpd
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 /dev/lp0
.
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.
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.
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.
Če nobena od vključenih specifikacij gonilnika ne ustreza vašemu tiskalniku, si preberite spodnji razdelek o tem, kako napisati svojo.
Za definiranje tiskalnika v PDQ:
printrc
ustrezne deklaracije gonilnika in vmesnika./etc/printrc
(za vse
uporabnike), se prijavite kot root
.xpdq
in izberite Printer -> Add
printer. Ta ,,čarovnik`` vas bo sprehodil po izbiri gonilnika
in vmesnika.To pa je tudi vse, kar je; večina dela je v iskanju ali ustvarjanju ustreznih specifikacij gonilnika, če ne najdete že narejene.
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:
Na več mest lahko pogledate za podatke, potrebne, da napišete svoj lastni gonilnik za PDQ:
Č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 gtaylor+pht@picante.com
in zagotovil
bom, da ga bodo našli naslednji uporabniki PDQ za vašo vrsto
tiskalnika.
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.
Najprej pogledamo vnos v zbirki podatkov 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:
Zapiski v človeško berljivem formatu bodo pogosto vsebovali koristne informacije. Za nekatere tiskalnike je na voljo tudi povezava More Info, ki se navadno nanaša na spletno stran z več podatki, ki jo vzdržuje kak uporabnik tega tiskalnika, ali na spletno stran gonilnika.
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.
Specifikacija gonilnika PDQ ima dve logični funkciji: uporabniško interakcijo in obdelavo tiskalniškega opravila. V datoteki sta zastopani na treh mestih:
Te določajo, katere izbire lahko uporabnik nastavlja, in deklarirajo spremenljivke PDQ za rabo v poznejših delih gonilnika.
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.
Ta končni filter poveže tiskalniške podatke ne glede na vrsto vhoda; pogosto so tu nastavljene izbire tiskanja.
Oglejmo si vsako od teh za Canon BJC-210:
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.
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 ,,MODE
``:
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" } }
Z zgornjimi deklaracijami bo uporabnik v pogovornem oknu gonilnika, ko
bo tiskal v xpdq
, videl izbiro med načinoma ,,Color`` in
,,BW``. V orodju pdq
lahko v ukazni vrstici določi
-oBW
ali -oColor
. Privzeto vrednost lahko nastavite
v xpdq
ali, kot smo jo zgoraj, s ključno besedo
default_choice
.
PDQ navadno prepozna svoj vhod z ukazom file(1)
. Za vsako
vrsto datoteke, ki jo vrne file
, ki bi jo radi obdelovali,
ponudite stavek language_driver
. Stavek je sestavljen predvsem iz
skripta, ki obdeluje tiskalniški jezik v kateremkoli (!) skriptnem
jeziku, ki ga želite (privzeta je navadna Bournova lupina).
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).
# Uporabi se prvi language_driver v datoteki, ki ustreza temu, # kar pravi file(1). language_driver ps { # file(1) vrne "PostScript document text conforming at..." filetype_regx = "postscript" convert_exec = { gs -sDEVICE=$MODE -r360x360 \ # izbire gs iz zbirke podatkov -q -dNOPAUSE -dBATCH -dSAFER \ # "navadne" izbire ghostscripta -sOutputFile=$OUTPUT $INPUT # predelaj INPUT v datoteko OUTPUT # Ti dve zadnji vrstici bosta pogosto isti za vse tiskalnike, # podprte z gs. Vrstica gs... pa bo drugačna za vsak tiskalnik. } } # Vrsto text deklariramo po vrsti postscript, ker bo ukaz "file" # pogosto opisal postscriptno datoteko kot besedilno (kar tudi je). language_driver text { # Brez filetype_regx; iščemo ime gonilnika: "text" convert_exec = {#!/usr/bin/perl # program v perlu, le zato, ker to lahko storimo! my ($in, $out) = ($ENV{'INPUT'}, $ENV{'OUTPUT'}); open INPUT, "$in"; open OUTPUT, ">$out"; while(<INPUT>) { chomp; print OUTPUT, "$_\r\n"; } } }
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 driver
:
driver canon-bjc210-0.1 { option { var = "MODE" desc = "Način tiskanja" # default_choice "Color" # odkomentirajte, da bo privzeto barvno choice "BW" { # Del z vrednostjo (value) dodeli spremenljivki MODE, karkoli # pač želite. Tu bomo dodelili besedilo, ki se spreminja med # dvema naboroma izbir za dva načina v ghostscriptu. value = "bj200" help = "Hitro črno tiskanje s črno kartušo." desc = "Le-črno" } choice "Color" { value = "bjc600" help = "Barvno tiskanje." desc = "Barvno" } } # Uporabi se prvi language_driver v datoteki, ki ustreza temu, # kar pravi file(1). language_driver ps { # file(1) vrne "PostScript document text conforming at..." filetype_regx = "postscript" convert_exec = { gs -sDEVICE=$MODE -r360x360 \ # izbire gs iz zbirke podatkov -q -dNOPAUSE -dBATCH -dSAFER \ # "navadne" izbire ghostscripta -sOutputFile=$OUTPUT $INPUT # predelaj INPUT v datoteko OUTPUT # Ti dve zadnji vrstici bosta pogosto enaki za vse tiskalnike, # podprte z gs. Vrstica gs... pa bo drugačna za vsak tiskalnik. } } # Vrsto text deklariramo po vrsti postscript, ker bo ukaz "file" # pogosto opisal postscriptno datoteko kot besedilno (kar tudi je). language_driver text { # Brez filetype_regx; iščemo ime gonilnika: "text" convert_exec = {#!/usr/bin/perl # program v perlu, le zato, ker to lahko storimo! my ($in, $out) = ($ENV{'INPUT'}, $ENV{'OUTPUT'}); open INPUT, "$in"; open OUTPUT, ">$out"; while(<INPUT>) { chomp; print OUTPUT, "$_\r\n"; } } } }
Č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 filter_exec
. 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:
driver generic-ljet4-with-duplex-0.1 { # Najprej, dva stavka z izbirami za stvari, ki jih lahko # izbere uporabnik: option { var = "DUPLEX_MODE" desc = "Način dupleksiranja" default_choice = "SIMPLEX" choice "SIMPLEX" { value = "OFF" desc = "Enostranski natisi" } choice "DUPLEX" { value = "ON" desc = "Dvostranski natisi" } } option { var = "GS_RES" desc = "Ločljivost" default_choice = "DPI600" choice "DPI300" { value = "-r300x300" desc = "300 dpi" } choice "DPI600" { value = "-r600x600" desc = "600 dpi" } } # Zdaj lahko obdelamo postscriptni vhod z gonilnikom ljet4 # za ghostscript: language_driver ps { filetype_regx = "postscript" convert_exec = { gs -sDEVICE=ljet4 $GS_RES \ -q -dNOPAUSE -dBATCH -dSAFER \ -sOutputFile=$OUTPUT $INPUT } } # Na koncu zavijemo opravilo v ukaze PJL: filter_exec { # zahteva echo z možnostjo pošiljanja ubežnih kod... echo -ne '\33%-12345X' > $OUTPUT echo "@PJL SET DUPLEX=$DUPLEX_MODE" >> $OUTPUT # Dodaste lahko dodatne ukaze @PJL kakor v zgornji vrstici. # Zagotovo pa vedno pripenjajte (>>) na izhodno datoteko! cat $INPUT >> $OUTPUT echo -ne '\33%-12345X' >> $OUTPUT } }
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.
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.
Če želite dodati tiskalniško čakalno vrsto v lpd, morate dodati vnos v
datoteko /etc/printcap
in narediti nov čakalni imenik pod
/var/spool/lpd
.
Vnos v /etc/printcap
je videti podobno:
To definira čakalno vrsto, imenovano lp, dj ali deskjet, ki čaka v imeniku# LOKALNI djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :sh:
/var/spool/lpd/dj
, brez
omejitev velikosti za posamezno opravilo, ki tiska na napravo
/dev/lp0
in nima naslovne strani (z imenom tistega, ki
tiska ipd.) dodane pred tiskalniško opravilo.
Zdaj z ukazom man printcap
preberite stran v referenčnem
priročniku za
printcap
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 deskjet, bo ta dobesedno razumel znake za novo vrstico in dobili bomo:
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.To je prva vrstica. To je druga vrstica. To je tretja vrstica.
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. spool
attributes) if
in of
. No, if ali
vhodni filter je natanko to, kar tu potrebujemo.
Če napišemo majhen ukazni skript, imenovan filter
, ki doda
znake za pomik na začetek vrste (angl. carriage return, CR) pred znake
za konec vrstice, bomo s tem odpravili stopničavost besedila. Torej
moramo v naš vnos v printcap dodati vrstico z if
:
Preprost filtrirni skriptlp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :if=/var/spool/lpd/dj/filter:\ :sh:
filter
bi lahko bil:
Č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.)#!perl # Zgornja vrstica mora v resnici vsebovati polno pot do # tolmača perl. # Ta skript mora biti izvedljiv: chmod 755 filter while(<STDIN>){chomp $_; print "$_\r\n";}; # Morda boste želeli končati z znakom za izmet strani: # print "\f";
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.
Tak filter se imenuje magični 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:
Ldpomatic 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.
Pripomoček 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.
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
printtool
. Druge distribucije, tudi Debian, zdaj
prilagajo kombinacijo rhs-printfilters/printtool kot tiskalno
možnost. Torej je ta sistem nedvomno največkrat nameščen.
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.
Pripomoček printtool
postavi datoteko, imenovano
postscript.cfg
, 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 printtool
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.
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 LPD za postscriptne tiskalnike.
Pri teh filtrih je še en kavelj: starejše različice lpd
za
oddaljene tiskalnike ne poganjajo filtrov if, 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.
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.
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:
-o
. Če, denimo,
tiskate na prosojnice, lahko določite -o
MediaType:Transparency
. Alternativno lahko za določitev izbir v
pogovornem oknu uporabite uporabniški vmesnik
GPR; posnetke zaslona z GPR
lahko vidite v
razdelku o GPRppdfilt
, da doda
te izbire podatkov za natis.Pakete RPM ali arhive z izvirno kodo dobite s
spletnega mesta projekta na SourceForge. Podrobnosti o namestitvi
najdete na
namestitveni micro-HOWTO tega
projekta. V bistvu morate v celoti odmestiti Red Hatove različice
paketov printtool
, lpd
in rhs-printfilters
,
nato pa namestiti različice podjetja VA, plus ppdfilt
,
gpr
in še nekaj drugih pripomočkov.
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 datoteke PPD za mnogo tiskalnikov.
Trenutno je precej tega težko namestiti. Vendar bodo prihodnja
namestitvena orodja zgrajena nad knjižnico za namestitev tiskalnika,
imenovano libprinterconf
, ki omogoča samodejno zaznavanje in
nastavitev rhs-printfilter
za omrežne in krajevne tiskalnike.
Opomba: 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 lpr
.
Ko enkrat vzpostavite postscriptni sistem LPD podjetja VA, lahko tiskalniške izbire nadzorujete na dva načina:
Če želite uporabljati GPR, najprej preverite, ali ste podali
pravilno datoteko PPD. Potem bodo tiskalniške izbire dostopne na
pultu ,Advanced`. Osnovne izbire za ppdfilt
bodo dostopne na
pultu ,Common`.
Ta lpr
podpira izbiro -o
. Katerikoli par
izbira/vrednost iz vaše datoteke PPD lahko podaste z izbiro
-o
. Oglejte si, na primer, ta stavek iz datoteke PPD:
*OpenUI *PrintQuality/Print Quality: PickOne *DefaultPrintQuality: None *OrderDependency: 150 AnySetup *PrintQuality *PrintQuality None/Printer Setting: "" *PrintQuality Quick/QuickPrint: "<< /DeviceRenderingInfo ... *PrintQuality Normal/Normal: "<< /DeviceRenderingInfo << /... *PrintQuality Pres/Presentation: "<< /DeviceRenderingInfo ... *PrintQuality Image/1200 Image Quality: "<< /DeviceRenderi... *CloseUI: *PrintQuality
Za izbiro PrintQuality
so možne vrednosti Quick
,
Normal
, Pres
ali Image
. Podali bi lahko
ukaz kod:
% lpr -o PrintQuality:Image file.ps
Obstajajo številne izbire, skupne vsem tiskalnikom, ki bodo delale poleg tistih iz vaše datoteke PPD. Te vključujejo:
page-ranges
Določite lahko obseg strani, ki naj se natisnejo. Na primer,
page-ranges:2-3
.
page-set
Tiskate lahko le na lihe ali le na sode strani. Na primer,
page-set:odd
za lihe strani.
number-up
Na vsaki strani papirja lahko tiskate več strani. Na primer,
number-up:2
.
Druge izbire so podrobno razložene na strani referenčnega priročnika za
ppdfilt
.
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 lpd
, ste v godlji.)
-r-sr-sr-x 1 root lp /usr/bin/lpr* -r-sr-sr-x 1 root lp /usr/bin/lprm* -rwxr--r-- 1 root root /usr/sbin/lpd* -r-xr-sr-x 1 root lp /usr/sbin/lpc* drwxrwxr-x 4 root lp /var/spool/lpd/ drwxr-xr-x 2 root lp /var/spool/lpd/lp/
Lpd se mora trenutno poganjati kot root, da se lahko povezuje z
nizko oštevilčenimi vrati opravila lp. Verjetno mora po povezovanju
postati UID lp.lp
ali nekaj takega, a mislim, da ne postane.
To je še en razlog, da se izogibate izvirnega LPD iz BSD.
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
lpd_cancel
, lpd_print
in lpd_status
; 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.
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 printcap
. To rešuje
Cisco Enterprise Print System 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.
printcap
,
tako da imate eno samo datoteko printcap
, ki jo uporabljate
povsod. CEPS ponuja to tako, da na vrhu zgradi majhno distribuirano
zbirko podatkov namesto tradicionalnih datotek printcap
.floor2_nw
) ali zmožnosti
(color_transparency
). Čez tri leta, ko se bo tiskalnik
pokvaril, ga boste lahko zamenjali z drugim tiskalnikom, ne da bi
povzročili težave.npadmin
(glej razdelek
Npadmin).Običajni LPD vam ne ponudi prav dosti pomoči pri obračunavanju
(angl. accounting). Določite lahko ime obračunske datoteke v atributu
af
datoteke printcap
, a to se le prenese kot
argument vašem filtru if
. Sami morate poskrbeti za to, da
vaš filter if
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 lpdomatic
, boste morali
narediti spremembe, saj je odvisen od tega, da dobi podano
nastavitveno datoteko kot ,,obračunsko`` ime datoteke.
ghostscript ponuja operator PageCount
, 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
unix-lpr.sh
v distribuciji izvirne kode ghostscripta.
Vedite, da izvedba obračunavanja v unix-lpr
piše v datoteko
iz tolmača ghostscript in torej ni združljiva s priporočeno izbiro
-dSAFER
. 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.
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.
Če imate omrežni tiskalnik, ki podpira SNMP, lahko uporabljate program
npadmin
, da po vsakem opravilu povprašate po številu strani.
To bi moralo delovati pravilno za vsa tiskalniška opravila. Glej
razdelek
Npadmin za več podatkov o orodju
npadmin
.