Next Previous Contents

7. Tiskanje

Pri tiskanju lahko naletimo na razlicne situacije:

Zadnja moznost ni predmet obravnave tega spisa.

7.1 Tiskalniki, ki podpirajo ISO Latin 2

Nekaj novejsih tiskalnikov ze neposredno podpira kodni razpored ISO Latin 2. Med njimi so

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.

7.2 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:

  1. Brez eksplicitne izbire vrste, ali pa z izbiro -Pepson ali -Pascii se datoteka odtisne kot ASCII:
    lpr datoteka
  2. Z izbiro -Pjus se datoteka odtisne kot besedilo, kodirano po JUS I.B1.002:
    lpr -Pjus datoteka
  3. Z izbiro -Platin2 ali -Ptext se datoteka odtisne kot besedilo, kodirano po ISO Latin 2:
    lpr -Platin2 datoteka

7.3 Tiskalniki, ki podpirajo kak drug nabor z nasimi znaki II

(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=/va