Next
Previous
Contents
Pri tiskanju lahko naletimo na razlicne situacije:
- Tiskalnik neposredno podpira ISO Latin 2
- Tiskalnik podpira enega od ostalih osembitnih naborov z nasimi
znaki (npr. kodno stran 852), ali pa sedembitni nabor JUS I.B1.002
- Tiskalnik razume PostScript
- Tiskalnik ne podpira nicesar drugega razen ASCII
Zadnja moznost ni predmet obravnave tega spisa.
Nekaj novejsih tiskalnikov ze neposredno podpira kodni razpored
ISO Latin 2. Med njimi so
- Hewlett-Packard LaserJet 4 Plus in 4M Plus
- Hewlett-Packard LaserJet 5L
- Epson FX-2170 (NLSP)
- Epson LQ-870 (NLSP)
- Epson LQ-2070 (NLSP)
- Epson LQ-2170 (NLSP)
- Epson DLQ-3000 (NLSP; letnik 1996 in novejsi)
- Fujitsu DL700
- Fujitsu DL1150/1250
- Fujitsu DL3700/3800
- Fujitsu DL6400/6600
Vse, kar morate storiti, je izbrati pravilno kodno stran v
tiskalniku. Ubezna sekvenca za tiskalnike Hewlett-Packard (PCL) in
Epson (ESC/P2) so naslednje
- PCL
Tole menda deluje:
\033(2N\033(s0p12h0s0b4099T
- ESC/P2
Z ukazom ESC ( t prepisemo kodno tabelo ISO 8859-2 v drugo
tabelo tiskalnika; zatem z ukazom ESC t izberemo drugo tabelo
tiskalnika (strani C-73 in C-77 v ,,Epson ESC/P Reference Manual``,
december 1997):
\033(t\003\000\002\177\002\033t\002
Oznaka \033 je osmiska koda znaka Escape.
Eden od nacinov, kako z /etc/printcap prilagodimo okolje
za tiskanje na tak tiskalnik, je podrobneje opisan v razdelku
Tiskalniki, ki podpirajo kak drug nabor z nasimi znaki.
Ce tiskalnik podpira kak drug nabor z nasimi znaki (ne dolgo nazaj
je bila ustaljena praksa, da je bil ROM v tiskalnikih zamenjan z
EPROM, v njem pa svedski znaki zamenjani z znaki po JUS I.B1.002),
lahko s primerno nastavitvijo v /etc/printcap se vedno
tiskamo spise, kodirane po ISO Latin 2.
Primerno moramo dopolniti datoteko /etc/printcap. Za zgled
si oglejmo tiskalnik Epson, ki ima znake po JUS I.B1.002 na mestu
svedskega nabora.
lp|ascii|epson|Epson LQ-850:\
:lp=/dev/lp1:\
:sd=/usr/spool/lpd/epson:\
:lf=/usr/spool/lpd/ERRORLOG:\
:mx#0:\
:sh:
jus|Epson LQ-850 z znaki JUS I.B1.002:\
:lp=/dev/null:\
:sd=/usr/spool/lpd/jus:\
:if=/usr/spool/lpd/jus_filter:\
:lf=/usr/spool/lpd/ERRORLOG:\
:mx#0:\
:sh:
latin2|text|Epson LQ-850 z znaki ISO Latin 2:\
:lp=/dev/null:\
:sd=/usr/spool/lpd/latin2:\
:if=/usr/spool/lpd/latin2_filter:\
:lf=/usr/spool/lpd/ERRORLOG:\
:mx#0:\
:sh:
Zgled ima tri tiskalniske vrste.
Prva je dejanski tiskalnik z ameriskim (ASCII) naborom znakov.
Druga uporablja filter /usr/spool/lpd/jus_filter :
#!/bin/sh
/usr/spool/lpd/jus_epson | lpr -Pascii
Datoteko torej precedimo skozi filter /usr/spool/lpd/jus_epson
in jo postavimo v prvo tiskalnisko vrsto.
Filter jus_epson ne napravi drugega, kot da
na zacetku doda kodo za preklop v svedski nabor, prepise datoteko
z vhoda na izhod, in na koncu doda kodo za preklop nazaj
v ameriski nabor. To je tudi edini del programja, ki je odvisen
od vrste tiskalnika:
#!/bin/sh
# Tiskanje besedil kodiranih po JUS I.B1.002 na tiskalnik Epson LQ
#
# Izberemo slovenski (svedski) nabor
/bin/echo -ne "\033R\005\c"
# Izpisemo dokument
cat
# Izberemo ameriski nabor
/bin/echo -ne "\033R\000\c"
Tretja vrsta uporablja podoben filter kot druga, le da ta najprej
pretvori besedilo iz Latin 2 v JUS, zatem uporabi ze opisani
filter za to, da doda na zacetku in na koncu potrebno kodo za
tiskalnik, in koncno táko datoteko postavi v prvo vrsto.
#!/bin/sh
/usr/local/bin/recode --force latin2:yu | \
/usr/spool/lpd/jus_epson | lpr -Pascii
Zgled predpostavlja, da je pot do programa recode
/usr/local/bin/recode. Izbiro --force moramo
uporabiti, ker je preslikava neobrnljiva -- v Latin 2 imamo tako
sumnike kot zavite oklepaje, v JUS pa samo se prve.
Za ta zgled smo morali v imeniku /usr/spool/lpd
ustvariti tri podimenike: /usr/spool/lpd/epson,
/usr/spool/lpd/jus in /usr/spool/lpd/latin2.
Tiskanje gre zdaj tako:
- Brez eksplicitne izbire vrste, ali pa z izbiro
-Pepson ali -Pascii se datoteka odtisne kot
ASCII:
lpr datoteka
- Z izbiro
-Pjus se datoteka odtisne kot besedilo,
kodirano po JUS I.B1.002:
lpr -Pjus datoteka
- Z izbiro
-Platin2 ali -Ptext se datoteka
odtisne kot besedilo, kodirano po ISO Latin 2:
lpr -Platin2 datoteka
(Matjaz Terpin <
matjaz.terpin@comcom.si>, Message-id:
<Pine.LNX.3.96.980709095750.24607B-400000@guru.comcom.si> )
Matjaz Terpin <
matjaz.terpin@comcom.si> je predlagal imenitno izboljsavo
pravkar opisanega postopka, pri katerem lahko tiskamo nase znake
in oglate in zavite oklepaje. Srz njegovega predloga je
filter, ki pred vsakim nasim znakom preklopi v svedski nabor, takoj za
njim pa spet nazaj v ASCII.
Datoteka /etc/printcap je v tem primeru taksna:
# /etc/printcap
lp|raw|yu:\
:lp=/dev/lp1:\
:sd=/var/spool/lpd/lp:\
:lf=/var/spool/lpd/ERRORLOG:\
:mx#0:\
:sh:
lat2:\
:lp=/dev/null:\
:if=/etc/lp/lat2.filter:\
:sd=/var/spool/lpd/lat2:\
:lf=/var/spool/lpd/ERRORLOG:\
:mx#0:\
:sh:
Filter /etc/lp/lat2.filter precedi besedilo skozi naslednje
sito, /etc/lp/lat2.switch, in ga postavi v vrsto
lp :
#!/bin/sh
# /etc/lp/lat2.filter
/etc/lp/lat2.switch | lpr -Plp
,,Meso`` postopka je v datoteki /etc/lp/lat2.switch:
#!/bin/sh
#/etc/lp/lat2.switch
echo -ne "\033R0"
sed -e "s/c/`echo -ne "\033R5\~\033R0"`/g" \
-e "s/C/`echo -ne "\033R5\^\033R0"`/g" \
-e "s/s/`echo -ne "\033R5\{\033R0"`/g" \
-e "s/S/`echo -ne "\033R5\[\033R0"`/g" \
-e "s/z/`echo -ne "\033R5\140\033R0"`/g" \
-e "s/Z/`echo -ne "\033R5\@\033R0"`/g" \
-e "s/c/`echo -ne "\033R5\}\033R0"`/g" \
-e "s/C/`echo -ne "\033R5\]\033R0"`/g" \
-e "s/d/`echo -ne "\033R5\|\033R0"`/g" \
-e "s/D/`echo -ne "\033R5\\\\033R0"`/g"
echo -ne "\033R5"
Matjaz pravi se: sed slabo prebavi ``echo -ne "\000"'', zato
uporabljam kar znak 0 (niclo), saj je tiskalnik (NEC pinwriter P7)
zadovoljen tudi s tem.
``Naravni'' kodni nabor v PostScriptu je Adobe Standard
Encoding. Nasih crk ne pozna. Pa ne le nasih, tudi mnogih drugih crk
ne pozna, in pravzaprav sploh nima tovrstnih ambicij. Namesto tega je
ASCII razsirjen z gradniki sestavljenih znakov: stresica, ostrivec,
diereza, sedij itd. -- vsi so tam. Jezik PostScript pa omogoca
definiranje sestavljenih znakov. Vse skupaj je cakalo samo se nekoga,
ki bo definiral sestavljene znake za kodni nabor ISO Latin 2. Ta nekdo
je bil Juliusz Chroboczek, ki je napisal paket
ogonkify.
Filtra a2ps in GNU enscript sta bila napisana z
namenom, da resita za nase kraje neobicajno zagato: kako odtisniti
cisto obicajno besedilo na tiskalnik, ki razume edino PostScript. Eden
in drugi postavita stran v PostScriptu z danim besedilom in jo
posljeta na tiskalnik. Fleksibilnost PostScripta omogoca tudi
transformacije (npr. pomanjsave) ali poudarjanje sintakse pri tiskanju
programskih izpisov. Oba podpirata nabor ISO Latin 2.
http://www.dcs.ed.ac.uk/home/jec/programs/ogonkify/
http://www-inf.enst.fr/~demaille/a2ps/
http://www.iki.fi/~mtr/genscript/
ftp://ftp.arnes.si/gnu/enscript/enscript-1.6.1.tar.gz
ogonkify
Ogonkify je filter za izpise v PostScriptu, in omogoca pravilen odtis
crk tudi v jezikih, ki ne uporabljajo nabora ISO Latin 1. Ker je
filter, je ravno korak prepozen, da bi lahko pocel to elegantno, ampak
mora prezveciti kakrsnokoli grdobijo pac izpljune program korak pred
njim in iz dobljenega izdelati lep odtis. Programi pa izdelujejo
datoteke PostScript vsak malo drugace, kar filtru ``ogonkify'' otezi
delo. Zaenkrat podprti formati izpisa PostScript so: NCSA Mosaic,
Netscape Navigator, StarOffice, Applixware in XFig.
Ogonkify za delovanje potrebuje Perl. Ko je namescen,
ogonkify uporabimo takole za odtis spletnega sestavka,
shranjenega iz Navigatorja:
ogonkify -AT -N netscape.ps | lpr
GNU enscript
Ce
GNU enscript se ni namescen, ga namestimo po navodilih,
ki so prilozena programu. Poleg njega potrebujemo se vsaj eno
pisavo z vsemi nasimi znaki, zapisan v obliki Type 1. Primeren je
npr. IBM Courier, ki je prosto dostopen in se distribuira z X
Window System, programom ghostscript ipd. Ce nismo
prepricani, ali ga imamo ze namescenega, pozenemo:
find / -name cour.pf[ab]
V osebno (~/.enscriptrc) ali skupno konfiguracijsko
datoteko (navadno /usr/local/etc/enscript.cfg ali
/usr/local/etc/enscriptsite.cfg) dodamo pravilno pot do
datotek s pisavami. Poleg tega potrebuje GNU enscript v vsakem
imeniku s pisavami se datoteko z imenom font.map, ki
vsebuje preslikavo med imeni pisav in datotekami, kjer so shranjene.
Ustvarimo jo z ukazom mkafmmap .
Primer konfiguracijske datoteke:
...
# Kje hranimo pisave PostScript?
AFMPath: /usr/lib/X11/fonts/Type1:/usr/local/lib/ghostscript/fonts
...
# Privzeti nacin kodiranja:
DefaultEncoding: latin2
...
# Privzeti format papirja:
DefaultMedia: A4
...
# lpd izbira tiskalniske vrste z -P...
QueueParam: -P
...
# Za tiskanje uporabljamo ukaz lpr, ne lp
Spooler: lpr
Ko je vse potrebno nastavljeno, odtisnemo besedilo enostavno z
ukazom
enscript datoteka
a2ps
Z izdajo 4.7.21 je Akim Demaille v a2ps vgradil mehanizem za
sestavljene znake, ki ga je Juliusz Chroboczek uporabil v filtru
ogonkify.
Nasim krajem prilagodimo a2ps z majckeno spremembo
nastavitvene datoteke. Sistemsko nastavitveno datoteko najdemo navadno
kot /usr/etc/a2ps.cfg,
/usr/local/etc/a2ps.cfg ali kaj podobnega; osebna se
imenuje ~/.a2psrc.
...
# Default encoding
Options: --encoding=latin2
# Default media
Options: --media=A4
...
Next
Previous
Contents
|