PostScript (PS), GhostView (GV), TeX, Printimine ja GhostScript (GS)

teejuht
 
1.
Sissejuhatus
2.
PostScript (PS)
3.
GhostView (GV)
4.
TeX
5.
Printimine ja GhostScript (GS)
6.
Windows'i masinatest üle samba linuxi printerile trükkimine
 

1. Sissejuhatus

Kui inimene midagi arvutiga teeb, siis on suur tõenäosus, et mingi osa tema pingutustest leiab tee paberile. Vähemalt ta soovib seda. Praktiliselt võetakse nt. StarOffice lahti ja kirjutatakse midagi ja siis prinditakse ning kujutis on paberil olemas. Puudutame põgusalt probleeme mida Linux'i alt printimisel kohtab.
 

2. PostScript - PS

Mõnikord tõuseb õigustatud küsimus, et ma tegin kodus faili valmis (nt. Gimp'iga) ja soovin seda kuskil mujal trükkida; seal trükkimise kohal ei pruugi aga Gimp'i olla. Ma ei taha teha hiljem kohapeal (st. printeri juures) korrektsioone.

Mida siis teha?

Sellisel juhul tuleb kodus loodud fail salvestada erilisse formaati - nn. PostScripti (PS; tavaliselt on see File -> Print all). PS on info hoidmise standard ja põhimõtteliselt peaksid kõik PS printerid või PS'i emuleerima pandud printerid andma paberile sama tulemuse.
Kui näiteks keegi on kirjutanud raamatu, siis oleks loomulik, kui ta levitab seda ja kasutab PS formaati. Standard on seda parem mida vähem neid on. Ma ei saa aru miks tehti PDF (Portable Document Format) kui PS juba olemas on.
Toome siinkohal ühe näite selle kohta milline kood vastab PostScript failis ristkülikule:
 

Hea, et PS pole täitsa ära krüpteeritud :)

Ja enamus linux'i rakendusi võimaldavad printida faili kasutades PS fomraati. Märgime, et kui suvalisest formaadist PS-i tegeijaid programme on palju ei ole sugugi nii lihtne nt PS failist teha tagasi seda mis ta esialgselt oli.

3. GhostView - GV

PS faile reeglina küll ei redigeerita (va. nt. kiledele trükkimisel mirror'damine, landscape ja portrait'i vahtamine, paaris ja paaritute lehtede vaheldumisi trükkimine, 10 % võrra laiuse kokku muljumine).

Küll aga on mõeldud välja tarkvara, millega saab PS faile enne trükkimist vaadata - GV. Tavaliselt töötavad GV asjad X-i all.
 GhostView-isid on olemas erinevatele ploatvormidele ja linuxile on neid omakorda mitu:

GNU GV
Alladin GV

mõlemad saab kätte: www.cs.wisc.edu/~ghost

4. TeX, LaTeX

Need on sarnased programmid on mõeldud teksti loomiseks(nagu teksti programmeerimine umbes). Ja TeX-i vahendid annavad produktiks PS formaadis faili.

Katke LaTeX-i koodist:
 

5. Printimine ja GhostScript (GS)

Printimise eesmärgiks on saada mingi kujutis paberile. See võib olla kas tekst, pilt, joonis; mustvalge või värviline. Printerid jagunevad tehnoloogiliselt kolme klassi:

maatriks-,
laser-,
tindi-

printerid.

Loogiliselt võiks nad jagada kahte klassi:

- mittePostScript (nt. PCL)
- PostScipt

printerid

Kindasti võib neid ka klassifitseerida kui mustvalgeid ja värvilisi, sellejärgi kas ümmardatud hind on paaris või paaritu arv jne.

UNIX'i maailmas on õige printer PostScript. See tähendab seda, et printer mõistab PostScript (PS)keelt. Teatavasti liigub info arvuti paralleelpordist printerisse kui järgnevus elektrisignaale. PS on üks võimalikest (PLC on Windowsi maailmas levinud) signaali kodeeringutest.

PS keeli on ka mitut varianti, kuid nad on vähem-rohkem omavahel kompatiiblid.

Oletame, et teil on Helwett-Packard Laser Jet 5L printer ja linuxi masin ja .ps fail ning soovite seda trükkida. Selleks on vaja läbi viia järgmised sammud:

Tavalise ascii trükkimine:

Esialgu vaadake, kas saate tavalist ascii-d trükkida:

1. installeerige A seeriast bsdlpr.tgz package. Tehke seda pkgtools'i abil. Ei ole hea mõte juba töötavale ja konfitud arvutile A seeriat uuesti selga installeerida, kuigi see on praktiliselt võimalik. Äkki on see juba installitud: kas on olemas käsk lpr, lpq ?

A

kopka:~# cat > /dev/lp1
tere imre
^L
^D
bash #

^L on vajalik, et printer liigutama hakkaks :)
 

2. Looge selline fail:

/etc/printcap

ja sellise sisuga:

1. lp:\
2.         :lp=/dev/lp1:\
3.         :sd=/var/spool/lp1:\
4.         :mx#0:\
5.         :if=/var/spool/lp1/hpjlp:\
6.         :lf=/var/spool/lp1/hp-log:sh

Selgitus:

1. resursi nimi mida lpr käsk võtmena kasutab
2. device'i nimi kus printer füüsiliselt taga on (veenduge, et see oleks olemas /dev kataloogis, lp - line printer)
3. spool directory (sd) - veenduge, et see on olemas, vajadusel looge, arvestage ka õigusi
4. ütleb, et trükitav fail võib olla kui tahes suur
5. see on nn. filter fail (vt. all pärast) - sisaldab printerile olulisi korraldusi a la 'lase tühi leht enne välja
6. sinna faili saadetakse logging (nt. veateated), see fail tekitage aga täitmise eest hoolitseb süsteem ise

fail /var/spool/lp1/hpjlp

#!/bin/sh
# if: filter for HP to switch LF to CR,LF
# The "echo -ne" assumes that /bin/sh is really bash
echo -ne \\033\&k2G
cat
echo -ne \\f
#echo -ne \\033\&k0G
# end of hpjlp

Kui need failid on loodud, siis katsetage trükkida:

bash # lpr -Plp /etc/fstab
bash #

Kui ta nii töötab, siis vähemalt tekstirezhim töötab Täpilisi tähti nii ei saa, vist.
 

PostScripti trükkimine

Et teha postscripti peate te lisaks installeerima GhostScript'i package, nt:  www.cs.wisc.edu/~ghost

1. Ilmselt peate te ta ka ise ära kompilleerima ja uurima README ja INSTALL ja mis seal parasjagu on faile, kas teie konkreetse printeri jaoks on toetus olemas. Selle kavala programmi mõte on see, et ta hakkaks tema sisendisse antud PS-i muutma teie printerile arusaadavas keeles baidijadaks (nt. PCL keel). LJ 5L -i jaoks sobib ka gs-i 4L'i driver.

Kui olete ara installeerinud siis peaks teil tekkima juurde käsk gs ('man gs' sealhulgas). Kontrollige.
Ja kasutamine on selline (gs tuleb kaasa ka vist kümmekond näite .ps (st. PostScript pilti, proovige neid):

2. Proovige nüüd trükkida trükkida:

gs -dSAFER -dNOPAUSE -sDEVICE=ljet4 -sOutputFile=/dev/lp1 tiger.ps

te saate ette pärast GV> prompti kust saab ära 'quit'-iga

3. Kui soovite trükkida ka programmide seest, siis peate lisama oma /etc/printcap'i järgmise lõigu (ehk veel nii, et see jääb esimeseks):

ps:\
        :lp=/dev/lp1:\
        :sd=/var/spool/lp1:\
        :mx#0:\
        :if=/var/spool/lp1/hpjps:\
        :lf=/var/spool/lp1/hp-log:sh

kusjuures fail hpjps on selline:

#!/bin/sh
# if: filter for .ps on HP laserjet w/o postscript
# Adjust -sDEVICE to your printer type
# 'gs -?' will show available sDEVICE drivers
gs -q -dSAFER -dNOPAUSE -sDEVICE=ljet4 -sOutputFile=- -
# end of hpjps

proovige nüüd trükkida nii:

bash # lpr -Pps tiger.ps

4. Muud olulised käsud:

lpq - näitab mida parasjagu trükite
lprm - eelmise käsu nimekirja job'i kustutamine
 

5. Trükkimine Netscape'ist:

seadke File -> Print -> Print Command'i kasti:

lpr -Pps

6. Trükkimine StarOffice'st:

seadke failis xp3/Xpdefaults

sektsioonid

[devices]
Generic PostScript Printer=GENERIC PostScript,default_queue

[ports]
default_queue=lpr -Pps

[windows]
device=Generic PostScript Printer,GENERIC PostScript,default_queue

vaadake ka muud üle.
 

6. Windows'i masinatest üle samba linuxi printerile trükkimine

1. Konfigureerige samba printerit jagama (tehke/kommenteerige väja selline share).
2. Vaadake, et Windows näeb võrku ja samba't ja siis installeerige Windows'ile Add Printer'iga vastava (LJ) printeri soft (olles talitanud nagu üleval, siis valige Windowsi printeriks lp, see on nö. toores).
3. Tulemusena käivitage mõni Windowsi programm ja valides tolle seest õige printeri trükkige sinna peale mida iganes. Kõik peaks töötama!

Idee seisneb selles, et kui olete samba  ja Windowsi õieti konfinud, siis Windows ei peaks samba olemasolust midagi aimama, tema trükib lihtsalt ühele võrgu printerile ja kõik.

vastav sektsioon smb.conf failis

 [printers]
   comment = All Printers
   path = /tmp
   browseable = no
# Set public = yes to allow user 'guest account' to print
   guest ok = yes
   writable = no
   printable = yes
   public = yes
 

hhh