Drukowanie w Linux-ie
Autor: Grant Taylor,
[email protected]
v3.14, 23 Wrze�nia 1997
WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll
v1.3, 12 Lutego 1998
Jest to dokument zawieraj�cy informacje na takie tematy jak: gen�
erowanie wydruku, podgl�dni�cie go przed drukowaniem, wydrukowanie go
oraz przefaxowanie czego� pod Linux-em (i innymi Unix-ami w
og�lno�ci). Dokument ten zosta� napisany w standardzie ISO-8859-2.
Orygina� mo�na znale�� pod adresem ftp.icm.edu.pl w katalogu
/pub/Linux/sunsite/docs/HOWTO.
______________________________________________________________________
Table of Contents:
1. Wprowadzenie.
1.1. Historia
1.2. Prawa autorskie.
2. Jak drukowa�.
3. Urz�dzenia dotycz�ce drukarki w j�drze.
3.1. Urz�dzenie lp.
3.2. Urz�dzenie parport (j�dra >= 2.1.33)
3.3. Urz�dzenia szeregowe.
4. Obs�ugiwane drukarki.
5. Jakie oprogramowanie do kolejkowania ?
6. Jak to dzia�a - podstawy.
7. Jak poustawia� to wszystko - podstawy.
7.1. Tradycyjna konfiguracja lpd.
7.2. Prawa dost�pu do plik�w.
8. Zdobywanie oprogramowania do drukowania.
8.1. Magicfilter.
8.2. Filtr APS.
8.3. EZ-Magic.
9. Rozwi�zania sprzedawc�w.
9.1. RedHat.
9.2. Inne dystrybucje.
10. Ghostscript.
10.1. Wywo�ywanie Ghosscript-u.
10.2. Dostrajanie wynik�w w Ghostscripcie.
10.2.1. Umiejscowienie i rozmiar wyniku.
10.2.2. Gamma, rozmiar pikseli itp.
11. Jak drukowa� poprzez sie�.
11.1. Na ho�cie unix/lpd.
11.1.1. Przy pomocy lpd.
11.1.2. Przy pomocy rlpr.
11.2. Na Win95, WinNT, LanManager lub Sambie.
11.3. Na drukarce NetWare.
11.4. Na drukarce EtherTalk (Apple).
11.5. Na drukarce HP i innych ethernetowych drukarkach.
11.5.1. Na starszych drukarkach HP.
11.6. Uruchamianie
11.7. Z Windows.
11.8. Z Apple.
11.9. Z Netware.
12. Jak drukowa� na fax-ie.
12.1. U�ywanie faxmodemu.
12.2. U�ywanie Zdalnego Serwisu Drukowania.
13. Jak wygenerowa� co� wartego drukowania.
13.1. J�zyki "Markup".
13.2. WYSIWYG.
14. Podgl�d przed wydrukiem.
14.1. PostScript.
14.2. TeX dvi.
15. Drukarki szeregowe pod lpd.
15.1. Ustawianie w printcap-ie.
15.2. Starsze drukarki szeregowe, kt�re gubi� znaki.
16. Wyrazy uznania.
16.1. Od t�umacza.
______________________________________________________________________
11.. WWpprroowwaaddzzeenniiee..
Printing HOWTO powinno zawiera� wszystko co powiniene� wiedzie�, aby
ustawi� drukark� na swoim Linux-ie. Jest to troch� bardziej
skomplikowane ni� w �wiecie poka�-i-kliknij Microsoft-u i Apple'a, ale
za to bardziej elastyczne i z pewno�ci� prostsze je�li chodzi o
administrowanie w du�ych sieciach lokalnych.
Dokument ten jest tak u�o�ony, �e wi�kszo�� b�dzie musia�a przeczyta�
tylko pierwsz� po�ow� czy co� ko�o tego. Wi�kszo�� nieciekawych
informacji i takich, kt�re s� zale�ne od sytuacji znajduje si� w
drugiej po�owie i �atwo je znale�� w spisie tre�ci, podczas gdy
informacje zawarte w sekcjach 9 i 10 b�d� potrzebne wi�kszo�ci.
Wi�kszo�� informacji z poprzedniej wersji zosta�o usuni�tych, poniewa�
zdecydowa�em si� na napisanie tego dokumentu ca�kowicie od nowa.
Zrobi�em tak, bo poprzednie wersje by�y takie wielkie - oko�o 60 stron
A4, i narracja by�a do kitu. Je�li nie znalaz�e� tutaj odpowiedzi to
powiniene� a) przeszuka� poprzedni� wersj� na stronie domowej tego
HOWTO <
http://www.picante.com/~gtaylor/pht/>, b) podrzuci� mi
informacj� co powinno tu by�, a nie ma tego.
Strona domowa tego HOWTO <
http://www.picante.com/~gtaylor/pht/> jest
dobrym miejscem na szukanie nowszych wersji tego dokumentu; jest ona
oczywi�cie tak�e dystrybuowana przez Projekt Dokumentacji Linux-a;
archiwum zawieraj�ce dokumenty HOWTO mo�esz znale�� w Polsce pod
adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO.
11..11.. HHiissttoorriiaa
To jest trzecia generacja, a szczerze m�wi�c, to trzecia edycja
zrobiona od nowa, dokumentu Printing-HOWTO. Historia PHT mo�e w uj�ciu
chronologicznym wygl�da� tak:
1. Napisa�em Printing-HOWTO w 1992 w odpowiedzi na wiele pyta�
pojawiaj�cych si� na grupie comp.os.linux dotycz�cych drukowania
napisa�em PHT i wys�a�em go tam. Dokument ten wyprzedzi� Projekt
Dokumentacji Linux-a o kilka miesi�cy i by� pierwszym dokumentem
a'la FAQ zwanym HOWTO. Edycja ta by�a w czystym ASCII.
2. Po do��czeniu do PDL, PHT zosta�o wcielone do tego� projektu przez
Briana McCauley _<_B_._A_._M_c_C_a_u_l_e_y_@_b_h_a_m_._a_c_._u_k_>; przez kolejne dwa lata
wsp�tworzyli�my PHT. Po jakim� czasie do��czyli�my prac� Karla
Auera_<_K_a_r_l_._A_u_e_r_@_a_n_u_._e_d_u_._a_u_>. Ta generacja PHT by�a w TeXinfo oraz
tak�e w PS, HTML, ASCII i Info.
3. Po tym jak pozwolili�my PHT �eby troch� "podgni�o" przez rok i po
nieskutecznych poszukiwaniach jakiej� osoby, kt�ra zaj�aby si�
PHT, mia�o miejsce powstanie tej wersji. Ta generacja PHT jest w
Linuxdoc-SGML.
11..22.. PPrraawwaa aauuttoorrsskkiiee..
Prawa autorskie nale�� do Granta Taylora (c) 1997. Prosz� kopiowa� i
dystrybuowa� ten dokument do woli, ale nie modyfikoewa� ani nie
zapomnie� mojego nazwiska.
22.. JJaakk ddrruukkoowwaa��..
Je�li masz ju� zainstalowany program lpd i jest on ustawiony dla
twojej drukarki przez kogokolwiek, to wszystko czego potrzebujesz, to
nauczy� si� pos�ugiwa� poleceniem _l_p_r. Dokument Printing-Usage-HOWTO
<
http://www.jtz.org.pl/~bart/Tlumaczenie/Html/Printing-Usage-
HOWTO.pl.html> zawiera opis tego polecenia i kilku innych u�ywanych do
manipulowania kolejk� wydruku.
Jednak je�li masz nowy system albo now� drukark�, to b�dziesz musia�
ustawi� serwis drukowania w ten lub inny spos�b zanim b�dziesz m�g�
drukowa�. Czytaj dalej!
33.. UUrrzz��ddzzeenniiaa ddoottyycczz��ccee ddrruukkaarrkkii ww jj��ddrrzzee..
33..11.. UUrrzz��ddzzeenniiee llpp..
J�dro Linux-a (<=2.1.32), zak�adaj�c, �e wkompilowa�e� lub za�adowa�e�
urz�dzenie _l_p (polecenie cat /proc/devices powinno pokaza� urz�dzenie
_l_p), dostarcza jedno lub wi�cej urz�dze� _/_d_e_v_/_l_p_0, _/_d_e_v_/_l_p_1 i
_/_d_e_v_/_l_p_2. NNiiee ss�� one kojarzone dynamicznie, ale s� one na sta�e
przypisane konkretnym adresom I/O. Oznacza to, �e twoja pierwsza
drukarka mo�e by� na _l_p_0, albo _l_p_1 w zale�no�ci od sprz�tu. Spr�buj
obu. ;)
Kilku u�ytkownik�w zg�osi�o, �e ich dwukierunkowe porty lp nie zostaj�
wykryte je�li u�ywaj� starszego, jednokierunkowego kabla. Sprawd� czy
masz przyzwoity kabel.
Na danym porcie nie mo�na mie� na raz sterownik�w _p_l_i_p oraz _l_p. Ale
mo�na za�adowa� jeden albo drugi sterownik w ka�dej chwili; r�cznie
albo przez _k_e_r_n_e_l_d przy j�drze w wersji 2.x.x (lub p�niejsze 1.3.x).
Je�li dok�adnie ustawisz przerwania itp., to mo�esz przypuszczalnie
mie� _p_l_i_p na jednym porcie, a _l_p na drugim. Jedna osoba zrobi�a tak,
przez edycj� sterownik�w; z niecierpliwo�ci� oczekuj� osoby, kt�ra
zrobi�aby to tylko przy u�yciu argument�w z linii polece�.
Jest takie narz�dzie zwane _t_u_n_e_l_p
_<_h_t_t_p_:_/_/_w_w_w_._p_i_c_a_n_t_e_._c_o_m_/_~_g_t_a_y_l_o_r_/_p_h_t_/_m_a_n_/_t_u_n_e_l_p_._h_t_m_l>, przy pomocy
kt�rego "root" mo�e ustawia� przerwania i inne opcje na urz�dzeniu _l_p.
Je�li urz�dzenie _l_p jest wbudowane w j�dro w wersji 1.3.x lub wy�szej,
to mo�esz przekaza� parametr lp= do j�dra, w kt�rym mo�esz ustawi�
przerwanie, adres itp.
Je�li sterownik lp jest wbudowany w j�dro, to mo�esz u�y� parametru
LILO/LOADLIN, aby ustawi� adres portu i przerwanie, kt�rych sterownik
b�dzie u�ywa�.
Sk�adnia: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]
Na przyk�ad: lp=0x378,0 lub lp=0x278,5,0x378,7 **
Zauwa�, �e je�li u�ywasz tego parametru, to musisz poda� *wszystkie*
porty, kt�rych b�dziesz u�ywa� - nie ma warto�ci domy�lnych. Mo�esz
wy��czy� wbudowany sterownik parametrem lp=0.
Je�li �adujesz sterownik drukarki jako modu� w wersji j�dra 2.x.x lub
p�nej 1.3.x, to mo�esz poda� przerwanie i port jako parametr w linii
polece� przy _i_n_s_m_o_d (albo w pliku /etc/conf.modules, �eby dzia�a�o
tak�e dla kerneld). Parametry to: _i_o_=_p_o_r_t_0_,_p_o_r_t_1_,_p_o_r_t_2 i
_i_r_q_=_i_r_q_0_,_i_r_q_1_,_i_r_q_2. Wi�cej informacji znajdziesz w podr�czniku
systemowym _m_a_n na stronie dotycz�cej _i_n_s_m_o_d.
**Dla tych, kt�rzy (jak ja) nigdy nie mog� znale�� standardowego portu
kiedy go potrzeba, to s� one takie jak w podanym wy�ej drugim
przyk�adzie. Drugi port (_l_p_0) jest pod adresem 0x3bc. Nie mam poj�cia
jakiego przerwania zwykle u�ywa.
Kod �r�d�owy linux-owego sterownika portu r�wnoleg�ego jest w pliku
/usr/src/linux/drivers/char/lp.c
33..22.. UUrrzz��ddzzeenniiee ppaarrppoorrtt ((jj��ddrraa >>== 22..11..3333))
Pocz�wszy od j�dra w wersji 2.1.33 (dost�pne tak�e jako �ata dla j�dra
2.0.30), urz�dzenie lp jest po prostu klientem nowego urz�dzenia
parport. Dodanie urz�dzenia parport naprawia pewn� ilo�� b��d�w, kt�re
dr�czy�y poprzedni sterownik urz�dzenia lp - mo�e ono wp�dzieli� port
z innym urz�dzeniem, przypisuje dynamicznie dost�pne porty r�wnoleg�e
numerom urz�dze� zamiast wymusza� z g�ry narzucon� komunikacj�
pomi�dzy adresami I/O a numerami port�w i tak dalej.
Wi�cej szczeg��w na temat parport podam kiedy sam znajd� si� w
sytuacji kiedy b�d� tego u�ywa�. A w mi�dzyczasie mo�esz przeczyta�
plik Documentation/parport.txt w drzewie ze �r�d�ami j�dra albo
zajrzyj na stron� parport
<
http://www.cyberelk.demon.co.uk/parport.html>.
33..33.. UUrrzz��ddzzeenniiaa sszzeerreeggoowwee..
Urz�dzenia szeregowe pod Linux-em zwykle nazywaj� si� /dev/ttyS1 lub
podobnie. Narz�dzie _s_t_t_y
_<_h_t_t_p_:_/_/_w_w_w_._p_i_c_a_n_t_e_._c_o_m_/_~_g_t_a_y_l_o_r_/_p_h_t_/_m_a_n_/_s_t_t_y_._h_t_m_l> pozwala na
interaktywne przegl�danie lub okre�lanie ustawie� dla portu
szeregowego; _s_e_t_s_e_r_i_a_l
_<_h_t_t_p_:_/_/_w_w_w_._p_i_c_a_n_t_e_._c_o_m_/_~_g_t_a_y_l_o_r_/_p_h_t_/_m_a_n_/_s_e_t_s_e_r_i_a_l_._h_t_m_l> pozwoli ci na
kontrolowanie kilku rozszerzonych w�a�ciwo�ci oraz na skonfigurowanie
IRQ i adres�w I/O dla niestandardowych port�w. Wi�cej na temat port�w
szeregowych znajdziesz w Serial-HOWTO
<
http://www.jtz.org.pl/Html/Serial-HOWTO.pl.html> dost�pnym tak�e w
j�zyku polskim.
Je�li u�ywasz wolnej drukarki szeregowej z kontrol� przep�ywu (flow
control), mo�e si� okaza�, �e niekt�re z twoich wydruk�w s� obcinane.
Mo�e by� to spowodowane zachowaniem portu szeregowego, kt�ry wyrzuca
wszystkie znaki ze swojego bufora po 30 sekundach od momentu
zamkni�cia portu. W buforze mo�e si� znajdowa� do 4096 znak�w a je�li
twoja drukarka u�ywa kontroli przep�ywu i jest wystarczaj�co wolna,
tak �e nie mo�e przyj�� wszystkich 4096 znak�w z portu w ci�gu 30
sekund, po tym jak oprogramowanie drukuj�ce zakmn�o port, to ko�cowa
zawarto�� bufora zostanie utracona. Je�li w wyniku polecenia _c_a_t _p_l_i_k
_> _/_d_e_v_/_t_t_y_S_2 pojawia si� ca�y wydruk dla kr�tkich plik�w, a d�u�sze s�
obcinane, to to mo�e by� tw�j problem.
Okres 30 sekund mo�e zosta� zmieniony poprzez opcj� "closing_wait"
programu setserial (wersja 2.12 i p�niejsze). Porty szeregowe maszyny
s� z regu�y inicjowane poprzez odwo�anie do setserial w pliku
startowym rc.serial. Odwo�anie do portu szeregowego drukarki mo�e by�
zmodyfikowane, tak aby ustawi� closing_wait w tym samym czasie kiedy
ustawia inne parametry tego portu.
44.. OObbss��uuggiiwwaannee ddrruukkaarrkkii..
J�dro Linux-a obs�uguje raczej ka�d� drukark�, kt�r� mo�esz pod��czy�
do szeregowego albo r�wnoleg�ego portu, ale s� rzeczy na kt�re trzeba
spojrze� oraz drukarki kt�rych nie b�dziesz w stanie u�y� nawet
pomimo, �e (elektrycznie m�wi�c) mog� one komunikowa� si� z Linux-em.
W grupie tych niekompatybilnych drukarek przewa�aj� te, kt�re polegaj�
na "Windows Printing System". (Cz�sto s� one oznaczone "for Windows".)
Te drukarki _n_i_e wsp�pracuj� z Linux-em. Nie maj� �adnych
inteligentnych cz�ci i polegaj� na procesorze komputera, kt�ry musi
zrobi� wi�kszo�� tego co kiedy� robi�y procesory w drukarce. Niestety
te zadania mog� by� wykonane tylko przez sterowniki dostarczone przez
producenta, kt�re dzia�aj� tylko pod Windows. Wi�c nie kupuj takiej
drukarki do Linux-a.
Je�li chodzi o drukarki, kt�re _d_z_i_a_�_a_j_� z Linux-em, to najlepszym
wyborem jest kupienie drukarki z interpreterem PostScript-u. Prawie
ka�de oprogramowanie pod Unix-a, kt�re tworzy jaki� drukowalny wynik
tworzy go w PostScripcie, wi�c oczywistym jest, �e najlepiej kupi�
drukark� obs�uguj�c� PostScript. Niestety, ale obs�uga tego j�zyka
poza drukarkami laserowymi jest bardzo rzadko spotykana.
Je�li nie uda ci si� wydoby� (raczej wi�kszego) bud�etu potrzebnego na
kupno drukarki PostScript-owej, mo�esz u�y� jakiejkolwiek drukarki
obs�ugiwanej przez Ghostcript, darmowy interpreter PostScript-u
u�ywanego do druku PostScript-owego. Na domowej stronie
Ghostscript-u <
http://www.cs.wisc.edu/~ghost/> znajdziesz obs�ugiwane
drukarki i informacje na temat nowych i ekpserymentalnych sterownik�w.
Pom� prosz� w ulepszaniu Ghostscript-u poprzez zg�aszanie sukces�w
b�d� pora�ek jak o to prosz�.
55.. JJaakkiiee oopprrooggrraammoowwaanniiee ddoo kkoolleejjkkoowwaanniiaa ??
Do niedawna wyb�r dla u�ytkownik�w Linux-a by� prosty - wszyscy
u�ywali tego samego, starego lpd wzi�tego bezpo�rdnio z kodu Net-2
BSD. Nawet dzisiaj wi�kszo�� sprzedawc�w dostarcza ten w�a�nie
program. Ale to si� zaczyna zmienia�. Systemy SVR4 w��czaj�c w to
Solaris Sun-a dostarczaj� ca�kiem inny pakiet do kolejkowania oparty
na _l_p_s_c_h_e_d. Pojawiaj� si� tak�e oznaki, i� niekt�rzy sprzedawcy Linux-
a przejd� na dostarczanie LPRng, o wiele mniej zabytkowej
implementacji, kt�ra jest dost�pna za darmo. LPRng jest o wiele
prostszy w administrowaniu dla wi�kszych instalacji i ma o wiele
przyja�niejsz� baz� danych ani�eli lpd.
Na dzie� dzisiejszym nawet w �wietle nowych opcji, lpd jest
przypuszczalnie dobry dla wi�kszo�ci u�ytkownik�w Linux-a. Raz
ustawiony dzia�a dobrze i jest �atwy w zrozumieniu oraz szeroko
udokumentowany w ksi��kach o Unix-ie.
Je�li chcesz wi�cej informacji na temat LPRng to zobacz LPRng - An
Enhanced Printer Spooler
<
http://ltpwww.gsfc.nasa.gov/ltpcf/about/unix/Depotdoc/LPRng/>.
Przysz�e wersje tego dokumentu b�d� zawiera�y informacje o zwyk�ym lpd
oraz o LPRng.
66.. JJaakk ttoo ddzziiaa��aa -- ppooddssttaawwyy..
�eby drukowanie dzia�a�o, musisz zrozumie� jak dzia�a system lpd.
LPD to skr�t od Line Printer Daemon i odnosi si� w r�nych kontekstach
do demona i do ca�ej kolekcji program�w, kt�re drukuj�. S� to:
llppdd
Demon kolejkowania. Jeden z nich jest uruchomiony, aby
kontrolowa� wszystko na maszynie, I jeden jest uruchamiany dla
drukarki podczas drukowania.
llpprr
Polecenie dla u�ytkownik�w do kolejkowania wydruk�w. Lpr
kontaktuje si� z lpd i umieszcza nowe zadanie w katalogu
kolejkowania.
llppqq
Wy�wietla wydruki umieszczone w kolejce.
llppcc
Polecenie do kontrolowania systemu lpd. Poleceniem tym mo�esz
wystartowa�, zatrzyma�, zmieni� porz�dek w kolejce drukowania.
llpprrmm
Usuwa wydruk z kolejki.
To jak to wszystko dzia�a ? No... kiedy system startuje, uruchamiany
jest lpd. Czyta on plik /etc/printcap, aby si� dowiedzie� dla jakich
drukarek b�dzie obs�ugiwa� kolejki. Za ka�dym razem kiedy kto�
uruchomi _l_p_r, lpr kontaktuje si� z lpd poprzez gniazdko /dev/printer i
podaje mu wydruk oraz kilka informacji o tym kto drukuje i jak ma to
by� wydrukowane. Potem lpd drukuje otrzymany plik na odpowiedniej
drukarce.
System lp powsta� w czasach kiedy wi�kszo�� drukarek by�a drukarkami
liniowymi - tzn. ludzie drukowali w wi�kszo��i teksty w ASCII. Jak si�
okaza�o, nie trzeba du�o pracy, aby lpd dzia�a� dobrze dla
dzisiejszych wydruk�w takich jak PostScript, czy text, czy dvi, czy
...
77.. JJaakk ppoouussttaawwiiaa�� ttoo wwsszzyyssttkkoo -- ppooddssttaawwyy..
77..11.. TTrraaddyyccyyjjnnaa kkoonnffiigguurraaccjjaa llppdd..
Minimalne ustawienia objawiaj� si� tym, �e system mo�e kolejkowa�
pliki i je drukowa�. Nie b�dzie zwraca� uwagi na to, czy twoja
drukarka je zrozumie czy nie i przypuszczalnie nie pozwoli ci na
zrobienie atrakcyjnego wydruku. Jednak jest to pierwszy krok do
zrozumienia, wi�c czytaj dalej !
Og�lnie m�wi�c, �eby doda� kolejk� dla drukarki musisz doda� pozycj�
do /etc/printcap i utworzy� katalog do kolejkowania w /var/spool/lpd/.
Pojedyncza pozycja w /etc/printcap wygl�da tak:
# LOCAL djet500
lp|dj|deskjet:\
:sd=/var/spool/lpd/dj:\
:mx#0:\
:lp=/dev/lp0:\
:sh:
Definiuje ona drukark� o nazwach _l_p, _d_j i _d_e_s_k_j_e_t, z katalogiem
kolejkowania /var/spool/lpd/dj/, bez limitu na ka�dy wydruk, kt�ra
drukuje na urz�dzeniu /dev/lp0 i kt�ra nie ma strony tytu�owej (z
danymi o osobie, kt�ra drukowa�a itp.) na pocz�tku wydruku.
Teraz poczytaj stron� w podr�czniku systemowym na temat _p_r_i_n_t_c_a_p.
Powy�szy przyk�ad wygl�da bardzo prosto, ale jest tam jeden kruczek -
drukarka b�dzie tak d�ugo dobrze drukowa�a, dop�ki b�d� wysy�a� pliki,
kt�re ona rozumie. Na przyk�ad wys�anie na drukark� zwyk�ego unix-
owego pliku tekstowego spowoduje, �e na papierze pojawi si� co�
takiego:
To jest pierwsza linia.
To jest druga linia.
To jest trzecia linia.
Wys�anie na t� drukark� pliku w PostScripcie spowodowa�oby
wydrukowanie pi�knej listy polece� PostScript z dodatkowym efektem
schodk�w :) - be� �adnego po�ytecznego efektu.
Wynika z tego jasno, �e czego� tu jeszcze brakuje - i to jest w�a�nie
celem filtrowania. Ci, kt�rzy czytali stron� podr�cznika systemowego o
pliku "printcap" mogli zuwa�y� atrybuty kolejki - _i_f i _o_f. _i_f - czyli
input filter - to w�a�nie to czego potrzebujemy.
Je�li napiszemy kr�tki skrypt o nazwie "filter", kt�ry doda przed
ko�cem linii znak CR (cariage return - powr�t karetki), to efekt
schod�w mo�e by� wyeliminowany. Tak wi�c musimy doda� do naszej
pozycji w /etc/printcap jeszcze jedn� lini� informuj�c� o istniej�cym
filtrze:
lp|dj|deskjet:\
:sd=/var/spool/lpd/dj:\
:mx#0:\
:lp=/dev/lp0:\
:if=/var/spool/lpd/dj/filter:\
:sh:
Przyk�adem prostego skryptu mo�e by�:
#!perl
# Powy�sza linia tak na prawd� powinna zawiera� pe�n� �cie�k� do perl-a
# Skrypt ten musi by� wykonywalny: chmod 755 filter
while(<STDIN>){chop $_; print "$_\r\n";};
# Mo�esz te� zako�czy� znacznikiem "form feed": print "\f";
Je�li zrobimy powy�sze, to otrzymamy drukark�, na kt�r� b�dziemy mogli
wysy�a� pliki tekstowe z Unix-a i otrzymamy sensowny wydruk. (Tak, s�
4 miliony lepszych sposob�w na napisanie tego skryptu, ale tylko kilka
jest tak bardzo ilustracyjnych. Ty masz to napisa� bardziej wydajnie.)
Jedynym problemem jest to, �e drukowanie plik�w tekstowych nie jest
takie znowu fajne - by�oby o wiele lepiej, je�li moglibysmy drukowa�
pliki PostScriptowe czy graficzne. No... tak, by�oby i jest to �atwe
do zrobienia. Metoda jest rozszerzeniem tego co zrobili�my, �eby si�
pozby� schodk�w. Je�li napiszesz program, kt�ry mo�e przyjmowa� r�ne
formaty i t�umaczy� je na j�zyk zrozumia�y dla drukarki, to masz
naprawd� dobry filtr.
Taki filtr nazywany jest filtrem magicznym. Nie m�cz si� nad pisaniem
w�asnego - o ile nie drukujesz jakichs cud�w - na sieci jest ju� pe�no
filtr�w, kt�re mo�esz �mia�o u�ywa�.
77..22.. PPrraawwaa ddoosstt��ppuu ddoo pplliikk��ww..
Poniewa� otrzyma�em wiele pr�b, za��czam list� plik�w wraz z prawami
dost�pu jakie maj� one w moim systemie. Jest wiele lepszych sposob�w
na zrobienie tego - idealnym sposobem jest u�ywanie program�w tylko z
atrybutami SGID, a nie robienie wszystkiego SUID dla "root-a", ale m�j
system tak ju� mia� i dla mnie to dzia�a.
-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/
W chwili obecnej lpd musi by� uruchamiany z prawami "root-a", poniewa�
u�ywa on numer�w port�w zastrze�onych dla systemu (poni�ej 1024). Po
tym jak ju� si� podczepi pod ten port powinien si� zmieni� na lp.lp,
ale raczej tego nie robi...
88.. ZZddoobbyywwaanniiee oopprrooggrraammoowwaanniiaa ddoo ddrruukkoowwaanniiaa..
Wiele napisanych pakiet�w filtruj�cych (i innych program�w zwi�zanych
z drukowaniem) dost�pnych jest na SunSite Polska
<
ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/printing/>. Mo�na tam
znale�� takie programy jak: psutils, a2ps, mpage, dvitodvi, flpr.
88..11.. MMaaggiiccffiilltteerr..
"Magic filter" jest jednym z najlepszych pakiet�w filtruj�cych;
zaprojektowany jest do instalacji w 10 minut. Powiedziano mi te�, �e
zawiera specjaln� obs�ug� LPRng.
Title: magicfilter
Version: 1.1b
Entered-date: 04APR95
Description: A customizable, extensible automatic printer filter.
Lets you automatically detect and print just about any
data type you can find a conversion utility for. This
filter is written in C and is controlled completely
from an external printer configuration file.
This version adds automagic creation of configuration
files based on the installed software on your system,
courtesy of GNU Autoconf.
This version is a bug fix from 1.1/1.1a; filters for
non-ASCII capable PostScript printers have been added.
Author: H. Peter Anvin <
[email protected]>
Primary-site: sunsite.unc.edu
53000 /pub/Linux/system/printing/magicfilter-1.1b.tar.gz
Copying-policy: GPL
88..22.. FFiillttrr AAPPSS..
Innym z wielu magicznych filtr�w jest APS zrobiony przez Andreasa
Klemma. Linux Software Map wygl�da tak:
Begin3
Title: apsfilter
Version: 4.9.1
Entered-date: Montag, 10. Juli 1995, 21:22:35 Uhr MET DST
Description: magicfilter for lpd with auto filetype detection
Keywords: lpd magicfilter aps apsfilter
Original-site: ftp-i2.informatik.rwth-aachen.de
/pub/Linux/pak/APSfilter/aps-491.tgz
211KB aps-491.tgz
Platforms: C-Compiler, gs Postscript emulator, pbmutils
Copying-policy: GPL
End
Filtr APS instaluje si� jako filtr _i_f dla kolejki drukowania, i
t�umaczy z wielu popularnych typ�w plik�w na polecenia twojej
drukarki.. Rozumie np. tekst, PostScript, dvi, gif i inne.
88..33.. EEZZ--MMaaggiicc..
EZ-Magic to kolejny pakiet filtruj�cy, napisany w bash-u, dostepny na
sunsite.
Title: ez-magic printer filter
Version: 1.0.5
Entered-date: January 26, 1997
Description: ez-magic is a printer filter that supports 8 common file
formats (txt,ps,gif,bmp,pcx,png,jpg,tif) for printing.
It can print over a network (SMB), or to a local printer.
Reads from a file, STDIN, or lpd. Simple to use and
configure. Just one script file, no huge manuals and
multibillion drivers. The only catch is that you need a
few common helper programs like netpbm and ghostscript.
Written in bash. Easy to add formats and code. Still more
bugs than I have appendages, but less than the number of
grams of fat in a hot dog. Pre-configured for HP DeskJet
870Cse over network. Comparable to apsfilter and others.
Keywords: magic filter, print, graphics, samba, network, smb,
ghostscript, postscript, gif, jpg, simple
Author:
[email protected] (Toby Reed)
Maintained-by:
[email protected] (Toby Reed)
Primary-site:
http://www.eskimo.com/~toby/ez-magic-1.0.5.tar.gz
38 kb ez-magic-1.0.5.tar.gz
Alternate-site: sunsite.unc.edu /pub/Linux/system/printing
38 kb ez-magic-1.0.5.tar.gz
Copying-policy: Copyrighted, full manipulation rights, with one or two
restrictions.
99.. RRoozzwwii��zzaanniiaa sspprrzzeeddaawwcc��ww..
[ Sekcja ta, jest z definicji niekompletna. Przysy�aj szczeg�y twojej
ulubionej dystrybucji. ]
99..11.. RReeddHHaatt..
W RedHacie znajduje si� graficzne narz�dzie do admiistracji, przy
pomocy kt�rego mo�na dodawa� drukarki odleg�e oraz lokalne. Pozwala
ono na wyb�r drukarki z obs�ug� "ghostscript" oraz pliku urz�dzenia,
do kt�rego kierowany jest wydruk; potem dana drukarka instalowana jest
w /etc/printcap. Nast�pnie tworzony jest kr�tki filtr magiczny
PostScript-ASCII na podstawie _g_s i _n_e_n_s_c_r_i_p_t. Rozwi�zanie to dzia�a
ca�kiem dobrze i jest �atwe do ustawienia dla popularnych przypadk�w.
99..22.. IInnnnee ddyyssttrryybbuuccjjee..
Prosz� o informacje jakie s� rozwi�zania w innych dystrybucjach.
1100.. GGhhoossttssccrriipptt..
Ghostscript <
http://www.cs.wisc.edu/~ghost/> jest najbardziej
znacz�cym programem do drukowania dla Linux-a. Wi�kszo��
oprogramowania do drukowania pod Unix-a generuje PostScript, kt�ry
jest opcj� dla drukarki wart� ok. $100. Jednak ghostscript jest za
darmo i wygeneruje j�zyk dla twojej drukarki z PostScriptu. Je�li jest
on podczepiony pod filtr wej�ciowy dla lpd, to daje wirtualn� drukark�
PostScriptow� i bardzo u�atwia �ycie.
Ghostscript jest dost�pny w dw�ch postaciach. Komercyjna wersja
Ghostscript-u pod nazw� Alladin Ghostscript mo�e by� u�ywana dla cel�w
osobistych, ale nie mo�e by� rozprowadzana w komercyjnych
dystrybucjach Linux-a. Jest on z regu�y o jaki� rok do przodu wzgl�dem
darmowej wersji; w tym momencie na przyk�ad, obs�uguje on Adobe
Acrobat's Portable Document Format, podczas gdy starsze wersje tego
nie maj�.
Wersja darmowa to GNU Ghostscript i jest starsz� wersj� Aladdina
uprzejmie u�yczon� dla GNU. (Cze�� i chwa�a dla Aladdina za to; wi�cej
sprzedawc�w oprogramowania powinna wspomaga� darmowe oprogramowanie w
ten spos�b)
Cokolwiek robisz w _g_s, upewnij si�, �e uruchomi�e� go z opcj�
wy��czaj�c� dost�p do plik�w (-dSAFER). PostScript jest j�zykiem w
pe�ni funkcjonalnym i z�y program w PostScripcie m�g�by ci� przyprawi�
o b�l g�owy.
M�wi�c o PDF-ie (Adobe's Portable Document Format), w�a�ciwie jest to
troch� bardziej zorganizowany PostScript w skompresowanym pliku.
Ghostscript umie obs�u�y� PDF tak samo jak PostScript, wi�c mo�esz by�
pierwszym w swoim otoczeniu z drukark� umiej�c� wydrukowa� PDF.
1100..11.. WWyywwoo��yywwaanniiee GGhhoossssccrriipptt--uu..
Zwykle ghostscript jest uruchamiany przez filtr, kt�ry za�o�y�e�, ale
w celach �ledzenia b��d� dobrze jest go uruchamia� r�cznie.
gs -help poka�e kr�tk� list� opcji i dot�pnych sterownik�w (lista ta
pokazuje tylko sterowniki wkompilowane, a nie wszystkie dost�pne
sterowniki).
Mo�esz uruchomi� gs w celach testowych np. tak:
gs <opcje> -q -dSAFER -sOutputFile=/dev/lp1 test.ps
1100..22.. DDoossttrraajjaanniiee wwyynniikk��ww ww GGhhoossttssccrriippcciiee..
Jest wiele rzeczy, kt�re mo�na zrobi� je�li wynik powsta�y przy
opracowywaniu tekstu nie jest zadowalaj�cy (w�a�ciwie, to mo�esz
zrobi� co ci si� tylko zamarzy, je�li masz �r�d�a).
1100..22..11.. UUmmiieejjssccoowwiieenniiee ii rroozzmmiiaarr wwyynniikkuu..
Umiejscowienie, rozmiar i wspolczynik ksztaltu obrazu na stronie jest
kontrolowane przez specyficzny dla danej drukarki sterownik w
ghostscripcie. Je�li na przyk�ad zauwa�ysz, �e strony wychodz� za
kr�tkie, albo za d�ugie, albo za du�e o dwa razy, mo�esz zajrze� do
�r�de� twojego sterownika i dopasowa� jakiekolwiek parametry, kt�re ci
nie pasuj�. Niestety, ka�dy sterownik jest inny, tak wi�c nie mog� ci
powiedzie� co tak na prawd� trzeba zmieni�, ale wi�kszo�� z nich jest
dobrze skomentowana.
1100..22..22.. GGaammmmaa,, rroozzmmiiaarr ppiikksseellii iittpp..
Wi�kszo�� nielaserowych drukarek ma t� wad�, �e rozmiar ich punktu
jest raczej du�y. Rezultatem tego s� zbyt ciemne obrazy. Je�li masz
ten problem, to powiniene� u�y� swojej w�asnej funkcji do transferu.
Po prostu stw�rz nast�puj�cy plik w katalogu bibliotecznym
ghostscripta i dodaj jego nazw� do wywo�ania _g_s zaraz przed w�a�ciwym
plikiem. Mo�e b�dziesz musia� zmieni� warto�ci, �eby pasowa�y do
twojej drukarki. Mniejsze warto�ci daj� ja�niejszy obraz. Mniejsze
warto�ci (0.2 - 0.15) s� dobrym pomys�em, szczeg�lnie je�li tw�j
sterownik u�ywa algorytmu Floyda-Steinberga do rasteryzacji kolor�w.
---8<---- gamma.ps ----8<---
%!
%transfer functions for cyan magenta yellow black
{0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer
---8<------------------8<---
Przez dopasowanie tych warto�ci mo�liwe jest te� naprawienie drukarki,
kt�ra ma jak�� wad� zwi�zan� z kolorami. Je�li b�dziesz robi� co�
takiego, to radz� u�y� pliku _c_o_l_o_r_c_i_r_._p_s, kt�ry dostarczany jest wraz
z ghostscriptem (w podkatalogu examples) jako przyk�adowa strona.
1111.. JJaakk ddrruukkoowwaa�� ppoopprrzzeezz ssiiee��..
Jedn� z zalet _l_p_d jest to, �e mo�na przy jego pomocy drukowa� na
drukarkach przy��czonych fizycznie do innych komputer�w. Je�li dobrze
dobierzesz kombinacj� skrypt�w i narz�dzi, to mo�esz drukowa� przy
pomocy _l_p_r na wszelkiego rodzaju sieciach.
1111..11.. NNaa hhoo��cciiee uunniixx//llppdd..
Aby pozwoli� odleg�ym maszynom drukowa� na twojej drukarce, musisz je
umie�ci� w /etc/hosts.equiv lub /etc/hosts.lpd. (Zauwa�, �e
hosts.equiv ma kilka innych efekt�w; upewnij si�, �e wiesz co robisz
je�li umieszczasz tam jak�� maszyn�). U�ywaj�c opcji _r_s mo�esz
pozwoli� tylko wybranym u�ytkownikom na drukowanie; informacje na ten
temat znajdziesz na stronie podr�cznika systemowego na temat _l_p_d.
1111..11..11.. PPrrzzyy ppoommooccyy llppdd..
Aby wydrukowa� co� na innej maszynie, musisz zrobi� pozycj� w
/etc/printcap podobn� do tej:
# REMOTE djet500
lp|dj|deskjet:\
:sd=/var/spool/lpd/dj:\
:rm=jaka�.odleg�a.maszyna.pl:\
:rp=nazwa_drukarki:\
:lp=/dev/null:\
:sh:
Zauwa�, �e lokalnie nadal znajduje si� katalog zada� obs�ugiwany przez
_l_p_d. Je�li odleg�a maszyna jest zaj�t� albo wy��czona, to zadania do
drukowania czekaj� lokalnie a� b�d� mog�y zosta� wys�ane.
1111..11..22.. PPrrzzyy ppoommooccyy rrllpprr..
�eby omin�� konfigurowanie lokalnego lpd, mo�esz u�y� _r_l_p_r, aby wys�a�
co� bezpo�rednio do kolejki na odleg�ej maszynie. Jest to bardzo
u�yteczne je�li drukujesz na r�nych drukarkach tylko okazyjnie. Z
og�oszenia o _r_l_p_r:
Rlpr u�ywa protoko�u TCP/IP, aby wys�a� zadania do drukowania do
serwera lpd gdziekolwiek w sieci.
W przeciwie�stwie do lpr, ten *nie* wymaga, �eby drukarki, na kt�rych
chcesz drukowa� by�y znane dla lokalnej maszyny (np. w /etc/printcap)
i przez to jest bardziej elastyczny i wymaga mniejszego nak�adu pracy
administratora.
rlpr mo�e zosta� u�yty gdziekolwiek, gdzie m�g�by zosta� u�yty zwyk�y
lpr, i jest kompatybilny w d� z tradycyjnym lpr z BSD.
Najwa�niejsz� zalet� _r_l_p_r jest, to �e mo�na drukowa� *sk�dkolwiek
dok�dkolwiek*, niezale�nie od tego jak jest skonfigurowany system, z
kt�rego chcesz drukowa�. Mo�e te� by� u�yty jako serwer, tak �e
klienci uruchomieni na innych maszynach jak np.: netscape, xemacs,
itp. mog� drukowa� na twojej drukarce ma�ym nak�adem wysi�ku.
Rlpr dost�pny jest na SUNSite Polska
<
ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/printing/>.
1111..22.. NNaa WWiinn9955,, WWiinnNNTT,, LLaannMMaannaaggeerr lluubb SSaammbbiiee..
Jest dost�pne mini-HOWTO "Printing to Windows", kt�re zawiera wi�cej
inormacji ni� ta sekcja.
Mo�liwe jest przekierowanie kolejki lpd poprzez program _s_m_b_c_l_i_e_n_t
(cz�� pakietu Samba) do serwisu drukowania Samby opartego na TCP/IP.
Samba zawiera odpowiedni skrypt pod nazw� _s_m_b_p_r_i_n_t. Kr�tko m�wi�c
umieszczasz plik konfiguracyjny dla konkretnej drukarki w katalogu
zada� i instalujesz skrypt _s_m_b_p_r_i_n_t jako _i_f.
Odpowiednia pozycja w /etc/printcap powinna wygl�da� tak:
lp|remote-smbprinter:\
:lp=/dev/null:sh:\
:sd=/var/spool/lpd/lp:\
:if=/usr/local/sbin/smbprint:
Aby uzyska� wi�cej informacji na temat konfigurowania takich
przypadk�w przeczytaj dokumentacj� zawart� w skrypcie _s_m_b_p_r_i_n_t.
Mo�esz tak�e u�y� _s_m_b_c_l_i_e_n_t, aby wys�a� zadanie drukowania
bezpo�rednio do serwisu drukowania SMB bez w��czania w to lpd. Zobacz
informacje w podr�czniku systemowym.
1111..33.. NNaa ddrruukkaarrccee NNeettWWaarree..
Pakiet ncpfs zawiera narz�dzie zwane _n_p_r_i_n_t, kt�re udost�pnia te same
funkcje co _s_m_b_p_r_i_n_t, ale dla NetWare. Pakiet ten mo�na zdoby� z
SunSITE Polska
<
ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/system/filesystems/ncpfs>. Z
informacji LSM dla wersji 0.16:
Przy pomocy pakietu ncpfs mo�esz montowa� wolumeny z serwera
netware pod Linux-em. Mo�esz tak�e drukowa� na drukarkach
pod��czonych pod netware oraz kolejkowa� zadania z netware
dla drukarek pod��czonych do Linux-a. Potrzebujesz j�dra w
wersji 1.2.x lub 1.3.54 i nowsze. ncpfs nie b�dzie dzia�a�
z j�drem w wersji 1.3 poni�ej 1.3.54.
Aby _n_p_r_i_n_t dzia�a� poprzez lpd, musisz napisa� ma�y skrypt, aby
drukowa� "stdin" na drukarkach NetWare i zainstalowa� go jako _i_f dla
kolejki lpd. Otrzymasz co� takiego:
sub2|remote-NWprinter:\
:lp=/dev/null:sh:\
:sd=/var/spool/lpd/sub2:\
:if=/var/spool/lpd/nprint-script:
Skrypt "nprint-script" mo�e wygl�da� tak:
#! /bin/sh
# Powiniene� najpierw sprawdzi� konto guest bez has�a!
/usr/local/bin/nprint -S sie� -U nazwa -P has�o -q nazwa-kolejki -
1111..44.. NNaa ddrruukkaarrccee EEtthheerrTTaallkk ((AAppppllee))..
Pakiet netatalk zawiera co� podobnego do _n_p_r_i_n_t i _s_m_b_c_l_i_e_n_t. Werner
Eugster udokumentowa� procedur� dla drukowania do i z sieci Apple o
wiele lepiej ni� ja kiedykolwiek; zobacz to w Netatalk-HOWTO
<
http://thehamptons.com/anders/netatalk/>.
Netatalk nie dzia�a z kart� SMC Etherpower PCI z chip-em DEC tulip.
1111..55.. NNaa ddrruukkaarrccee HHPP ii iinnnnyycchh eetthheerrnneettoowwyycchh ddrruukkaarrkkaacchh..
Drukarki HP i niekt�re inne maj� ethernetowy interfejs, do kt�rego
mo�esz drukowa� bezpo�rednio u�ywaj�c lpd. Powiniene� post�powa�
zgodnie z instrukcj�, kt�r� dosta�e� do drukarki albo jej sterownika,
ale og�lnie takie drukarki "maj� uruchomionego" lpd i dostarczaj�
jedn� lub wi�cej kolejek, do kt�rych mo�esz drukowa�. HP mo�e pracowa�
np. z takim /etc/printcap:
lj-5|remote-hplj:\
:lp=/dev/null:sh:\
:sd=/var/spool/lpd/lj-5:\
:rm=nazwa.drukarki.pl:rp=raw:
Drukarki HP LaserJet z interfejsami Jet Direct obs�uguj� generalnie
dwie wbudowane kolejki - "surow�" (raw), kt�ra akceptuje PCL (i
mo�liwe, �e PostScript) oraz "tekstow�", kt�ra akceptuje zwyk�e ASCII
i radzi sobie od razu z "efektem schodk�w".
W �rodowisku wielkoskalowym, szczeg�lnie w du�ych �rodowiskach, gdzie
niekt�re drukarki nie obs�uguj� PostScript-u, mo�e by� po�yteczne
ustawienie specjalnego serwera drukowania, do kt�rego drukuj�
wszystkie maszyny i na kt�rym uruchamiane s� wszystkie zadania
ghostscript-a.
Pozwala to twojemu Linux-owi dzia�a� jako serwer wydruk�w dla
drukarki, i u�tykownicy mog� robi� swoje wydruki szybko i zajmowa� si�
swoimi rzeczami zamiast czeka� a� drukarka sko�czy drukowa� prac�
kogo� innego.
Aby to zrobi�, ustaw na swoim Linux-ie kolejk�, kt�ra wskazuje na HP
LJ wyposa�on� w ethernet. Teraz ustaw kolejk� u wszystkich swoich
klient�w na tego Linux-a.
Niekt�re drukarki sieciowe HP wyra�nie nie akceptuj� ustawie� strony
tytu�owej (banner page) wys�anej przez klienta; mo�na wy��czy� ich
wewn�trznie generowan� tak� stron� przez po��czenie si� z drukark�
telnet-em, wci�ni�cie dwa razy <<ENTER>>, wpisanie "banner: 0" i
nast�pnie "quit". S� inne ustawienia, kt�re mo�esz tak�e w taki spos�b
zmieni� - wpisz "?", �eby wy�wietli� ich list�.
1111..55..11.. NNaa ssttaarrsszzyycchh ddrruukkaarrkkaacchh HHPP..
Niekt�re drukarki (oraz "czarne pude�ka" z sieciowym drukowaniem)
obs�uguj� tylko pro�ciutkie nie-protoko�owane czyste po��czenia TCP.
Zauwa�alne w tej kategorii s� wczesne modele kart JetDirect (w�aczaj�c
niekt�re JetDirectEx). Og�lnie, aby drukowa� na takiej drukarce,
musisz otworzy� po��czenie TCP na danym porcie (z regu�y 9100) i
umie�ci� tam swoje zadanie do wydrukowania. Mo�na to zaimplementowa�
m.in. w Perl-u:
#!/usr/bin/perl
# Thanks to Dan McLaughlin for writing the original version of this
# script (And to Jim W. Jones for sitting next to Dan when writing me
# for help ;)
$fileName = @ARGV[0];
open(IN,"$fileName") || die "Can't open file $fileName";
$dpi300 = "\x1B*t300R";
$dosCr = "\x1B&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;
}
1111..66.. UUrruucchhaammiiaanniiee _i_f dla odleg�ych drukarek.
Jedn� wad� _l_p_d jest to, �e _i_f nie s� uruchamiane dla drukarek
odleg�ych. Je�li oka�e si�, �e potrzebujesz _i_f, mo�esz ustawi�
podw�jn� kolejk� i ponownie zkolejkowa� dany wydruk. We� ten _p_r_i_n_t_c_a_p
jako przyk�ad:
lj-5:remote-hplj:\
: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=nazwa.drukarki.pl:\
:rp=raw:sd=/var/spool/lpd/lj-5-raw:
w �wietle tego, skrypt _f_i_l_t_e_r_-_l_j_-_5 to:
#!/bin/sh
gs <opcje> -q -dSAFER -sOutputFile=- - | \
lpr -Plj-5-remote -U$5
Opcja _-_U dla lpr dzia�a tylko wtedy je�li lpr jest uruchomiony jako
demon i ustawia ona poprawnie zleceniodawc� kolejki w ponownie
zainicjowanej kolejce. Powiniene� raczej u�y� bardziej pewnej metody
na zdobycie identyfikatora u�ytkownika, poniewa� niezawsze jest to
argument 5. Zobacz w podr�cznik systemowym na temat _p_r_i_n_t_c_a_p.
1111..77.. ZZ WWiinnddoowwss..
Drukowanie z Windows (czy OS/2) na Linux-ie jest obs�ugiwane poprzez
SMB w pakiecie SAMBA, kt�ry tak�e umo�liwia wsp�dzielenie plik�w dla
Windows.
Samba zawiera ca�kiem poka�n� dokumentacj�. Mo�esz albo skonfigurowa�
magic-filter na Linux-ie i drukowa� tam PostScript, albo zainstalowa�
sterowniki dla konkretnej drukarki na wszystkich komputerach z
Winndows i mie� kolejk� dla nich bez �adnych filtr�w. Poleganie na
tych sterownikach mo�e czasami dawa� lepsze efekty, ale jest to
uci��liwe ze strony administratora je�li jest du�o komputer�w z
Windows. Wi�c spr�buj najpierw PostScript-u.
1111..88.. ZZ AAppppllee..
Netatalk obs�uguje drukowanie z Apple poprzez EtherTalk. Na stronie
Netatalk HOWTO <
http://thehamptons.com/anders/netatalk/> znajdziesz
wi�cej informacji.
1111..99.. ZZ NNeettwwaarree..
Jest jaka� obs�uga drukowania z Netware przez Linux-a oferowana przez
czy z powodu Calder-y, ale nie mam poj�cia czy Linux mo�e oferowa�
drukarki dla klient�w Netware.
1122.. JJaakk ddrruukkoowwaa�� nnaa ffaaxx--iiee..
1122..11.. UU��yywwaanniiee ffaaxxmmooddeemmuu..
Jest wiele program�w, kt�re pozwol� ci na odbieranie i wysy�anie
fax�w. Jednym z bardziej z�o�onych jest program Sama Lefflera pod
nazw� _H_y_l_a_F_a_x. Jest on dost�pny na ftp.sgi.com. Obs�uguje on wiele
rzeczy od wi�kszej ilo�ci modem�w do rozg�aszania (broadcasting).
Dost�pny jest tak�e _e_f_a_x, prosty program wysy�aj�cy fax-y - jest on
lepszym wyborem dla Linux-owc�w. Program _m_g_e_t_t_y mo�e odbiera� faxy (a
nawet wysy�a� poczt� g�osow� na niekt�rych modemach!).
1122..22.. UU��yywwaanniiee ZZddaallnneeggoo SSeerrwwiissuu DDrruukkoowwaanniiaa..
Dost�pny jest eksperymentalny serwis, kt�ry pozwala ci na wys�anie
poczty elektronicznej z do��czonym fragmentem, kt�ry ma by�
wydrukowany na faxie gdzie� indziej. Obs�ugiwane s� takie formaty jak
PostScript, tak wi�c pomimo, i� nie obejmuje swym zasi�giem
wszystkiego, mo�e by� on bardzo przydatnym serwisem. Wi�cej informacji
na temat drukowania poprzez Zdalny Serwis Drukowania znajdziesz na
stronie o zdalnym drukowaniu <
http://www.tpc.int/>.
1133.. JJaakk wwyyggeenneerroowwaa�� ccoo�� wwaarrtteeggoo ddrruukkoowwaanniiaa..
Tutaj wchodzimy w prawdziw� sie� oprogramowania. Og�lnie, Linux mo�e
uruchamia� cztery typy binari�w z r�nym sukcesem: Linux, iBCS,
Win16/Win32s (za pomoc� dosemu i kiedy� Wine) oraz Mac/68k (przy
pomocy Executora). Ja om�wi� tylko czysto-Linux-owe i popularne Unix-
owe oprogramowanie, poza tym WordPerfect dla SCO i przypuszczalnie
inne komercyjne procesory tekstu tak�e dobrze dzia�aj� na Linux-owej
emulacji iBCS.
Dla Linux-a wyb�r jest przewa�nie ograniczony do oprogramowania
dost�pnego og�lnie dla Unix-a.
1133..11.. JJ��zzyykkii ""MMaarrkkuupp""..
Wi�kszo�� j�zyk�w "markup" jest bardziej elastyczna dla wi�kszych albo
powtarzalnych projekt�w, gdzie chcesz, aby komputer kontrolowa� wygl�d
rezultatu/wydruku, aby utworzy� og�lny wz�r. Pr�ba zrobienia jakiego�
�adnego znaczka w j�zyku "markup" przypuszczalnie by "bola�a"...
nnrrooffff
To by� jeden z pierwszych j�zyk�w "markup" dla Unix-a. Strony z
podr�cznika systemowego s� najpopularniejszym przyk�adem tekst�w
sformatowanych przy pomocy makr *roff-a. Wiele ludzi przeklina
ten j�zyk, ale nroff ma, przynajmniej dla mnie, bardziej z�o�on�
sk�adni� ni� to jest konieczne i przypuszczalnie jest z�ym
wyborem dla nowych prac. Jednak warto jest wiedzie�, �e mo�esz
zamieni� napisan� w groff-ie stron� bezpo�rednio na PostScript.
Wi�kszo�� polece� "man" zrobi to za ciebie np. _m_a_n _-_t _c_o_�_| _l_p_r.
TTeeXX
oraz j�zyk makr - LaTeX, s� jednym z najcz�ciej u�ywanych
j�zyk�w "markup" na Unix-ie. Techniczne prace s� cz�sto napisane
w LaTeX-u poniewa� bardzo upraszcza okre�lenie wygl�du tekstu i
jest wwccii���� jednym z niewielu system�w obr�bki tekstu, kt�ry
obs�uguje zapisy matematyczne dok�adnie i dobrze na raz.
Formatem wyj�ciowym TeX-a jest _d_v_i (DeVice Independent - czyli
niezale�ny od urz�dzenia [przyp. t�um.]) i mo�na go zamieni� na
PostScript lub Hewlett Packard PCL przy pomocy _d_v_i_p_s lub _d_v_i_l_j.
[TeX czyta si� "tech" - przyp. t�um.].
_S_G_M_L
Dost�pny jest przynajmniej jeden program do obr�bki tego j�zyka
na Unix-a; formuuje on podstawy systemu dokument�w Linuxdoc-
SGML. Mo�e on tak�e obs�ugiwa� inne DTD.
_H_T_M_L
Kto� zasugerowa�, �e dla prostych projekt�w, wystarczy napisanie
w HTML-u i drukowa� przy pomocy Netscape-a. Ja si� z tym jednak
nie zgadzam.
1133..22.. WWYYSSIIWWYYGG..
[ Jest to skr�t od What You See Is What You Get - czyli to co widzisz
to dostaniesz, a oznacza, i� wydrukowane zostanie DOK�ADNIE to co jest
widoczne na ekranie i DOK�ADNIE w taki sam spos�b - przyp. t�um.]
W tej chwili jest niedob�r oprogramownia do obr�bki tekstu WYSIWYG.
Nie b�j si� napisa� jakiego� i daj mi zna� je�li omin��em co� tutaj.
_L_y_X
Jest to zako�czenie dla LaTeX-a, kt�re wygl�da bardzo
obiecuj�co. Odwied� stron� domow� LyX-a <
http://www-
pu.informatik.uni-tuebingen.de/users/ettrich/> je�li chcesz
wi�cej informacji.
_A_n_d_r_e_w _U_s_e_r _I_n_t_e_r_f_a_c_e _S_y_s_t_e_m
AUIS zawiera _e_z - edytor w stylu WYSIWYG z wi�kszo�ci� cech
podstawowego procesora tekstu, mo�liwo�ciami HTML oraz pe�n�
obs�ug� poczty elektronicznej MIME i grup dyskusyjnych (news-
ow).
_O_f_e_r_t_y _k_o_m_e_r_c_y_j_n_e
Przynajmniej Caldera i Red Hat dostarczaj� pakiety zawieraj�ce
zwyk�e aplikacje biurowe jak edytor w stylu WYSIWYG i arkusz
kalkulacyjny. Powiedzia�bym, �e robi� dobr� robot�, ale nigdy
nie u�ywa�em takich pakiet�w. S�dze, �e Caldera dostarcza tak�e
WABI firmy Sun, tak wi�c m�g�by� przypuszczalnie uruchomi� jaki�
MS Office pod tym je�li musia�by� zintegrowa� si� z plikami
innych.
Jeff Phillips _<_j_e_f_f_@_I___R_A_T_U_S_._o_r_g_> u�ywa WordPerfect-a dla Linux-a
z Caldery (w Slackware r�nego rodzaju) i twierdzi, �e dzia�a mu
to dobrze. Wygl�da na to, �e zawiera on wbudowan� obs�ug�
drukarek, jak to mo�na by si� spodziewa�. Caldera powinna mie�
jakie� informacje na swojej stronie WWW
<
http://www.caldera.com/>.
RedHat dostarcza pakiet o nazwie _A_p_p_l_i_x_w_a_r_e; Ich stron� mo�na
znale�� pod adresem www.redhat.com.
Inni sprzedawcy niech mi dadz� zna� jakie maj� oferty.
1144.. PPooddggll��dd pprrzzeedd wwyyddrruukkiieemm..
Prawie wszystko co mo�esz wydrukowa�, mo�esz te� zobaczy� na ekranie.
1144..11.. PPoossttSSccrriipptt..
Ghostscript posiada sterownik do X11; najlepiej je�li jest on u�yty
pod kontrol� podgl�darki PostScript o nazwie _G_h_o_s_t_v_i_e_w. Najnowsza
wersja tego programu powinna by� tak�e w stanie wy�wietli� pliki PDF.
1144..22.. TTeeXX ddvvii..
Niezale�ne od urz�dzenia (DeVice Independant) pliki TeX-a mog� by�
wy�wietlane w X11 u�ywaj�c _x_d_v_i. Nowsze wersje _x_d_v_i wywo�uj�
ghostscript, aby wykona� polecenia typowo PostScriptowe.
Jest tak�e sterownik na VT100. Nazywa si� _d_g_v_t. _T_m_v_i_e_w dzia�a z Linux-
em i svgalib je�li to wszystko na co ci� sta�.
1155.. DDrruukkaarrkkii sszzeerreeggoowwee ppoodd llppdd..
1155..11.. UUssttaawwiiaanniiee ww pprriinnttccaapp--iiee..
Lpd udostepnia pi�� atrybut�w, kt�re mo�esz ustawi� w pliku
/etc/printcap, aby kontrolowa� wszystkie ustawienia portu szeregowego,
do kt�rego do��czona jest drukarka. Przeczytaj stron� podr�cznika
systemowego na temat _p_r_i_n_t_c_a_p
_<_h_t_t_p_:_/_/_w_w_w_._p_i_c_a_n_t_e_._c_o_m_/_~_g_t_a_y_l_o_r_/_p_h_t_/_m_a_n_/_p_r_i_n_t_c_a_p_._h_t_m_l> i zapami�taj
znaczenia: _b_r_#, _f_c_#, _x_c_#, _f_s_# i _x_s_#. Ostatnie cztery z tych atrybut�w
to mapy bitowe oznaczaj�ce ustawienia portu. Atrybut _b_r_# jest
pr�dko�ci�: np. _b_r_#_9_6_0_0.
T�umaczenie z postaci _s_t_t_y na _p_r_i_n_t_c_a_p jest bardzo proste. Je�li
musisz, to zobacz stron� podr�cznika systemowego na temat _s_t_t_y.
U�yj _s_t_t_y, aby ustawi� port drukarki, tak �eby� m�g� wys�a� plik do
tego portu (poleceniem _c_a_t) i otrzyma� poprawny wydruk. Oto co
wy�wietla polecenie _s_t_t_y _-_a dla mojego portu drukarki:
dina:/usr/users/andy/work/lpd/lpd# stty -a < /dev/ttyS2
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; 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
Jedynymi zmianami mi�dzy tym, i stanem w jakim port jest inicjowany
podczas startu s� -clocal, -crtscts i ixon. Tw�j port mo�e mie� inne
ustawienia w zale�no�ci od tego jak twoja drukarka kontroluje przep�yw
(flow control).
_s_t_t_y u�ywa si� w�a�ciwie w dziwny spos�b. Poniewa� polecenie _s_t_t_y
operuje na terminalu pod��czonym do jego standardowego wej�cia, ty
u�ywasz je, aby manipulowa� danym portem szeregowym przez u�ycie znaku
< jak powy�ej.
Jak ju� masz dobre ustawienia, tak �e _c_a_t _p_l_i_k _> _/_d_e_v_/_t_t_y_S_2 (w moim
przypadku) dzia�a, zajrzyj do pliku
/usr/src/linux/include/linux/termios.h. Zawiera on wiele #define
(definicji) i kilka struktur - mo�esz go sobie wydrukowa� (przecie�
drukarka dzia�a, nie ?) i u�ywa� jako pomocy. Id� do sekcji, kt�ra
zaczyna si� tak:
/* c_cflag bit meaning */
#define CBAUD 0000017
Sekcja ta zawiera znaczenia bit�w _f_c_# i _f_s_#. Zauwa�ysz, �e nazwy (po
ilo�ci bod�w) s� identyczne z tymi z polecenie _s_t_t_y. A nie m�wi�em, �e
to b�dzie proste ?
Zobacz, kt�re z tych ustawie� maj� znak "-" na pocz�tku przy poleceniu
_s_t_t_y. Zsumuj te wszystkie liczby (s� one zapisane w systemie
�semkowym). To b�d� te bity, kt�re b�dziesz chcia� wyzerowa�, tak wi�c
wynik jest tym, co masz wpisa� do _f_c_#. Pami�taj oczywi�cie, �e
b�dziesz ustawia� bity zaraz po tym jak je wyzerujesz, tak wi�c mo�esz
u�y� "_f_c_#_0_1_7_7_7_7_7" (ja tak robi�).
Teraz zr�b to samo dla tych ustawie�, kt�re nie maj� znaku "-" na
pocz�tku w poleceniu _s_t_t_y. W moim przyk�adzie wa�ne s� CS8 (0000060),
HUPCL (0002000) i CREAD (0000200). Zapami�taj te� ustawienie dla
swojej pr�dko�ci (u mnie jest to 0000015). Zsumuj to wszystko - w moim
przyk�adzie b�dzie to 0002275. To b�dzie to, co masz wpisa� do _f_s_#.
("_f_s_#_0_2_2_7_5 dzia�a u mnie.)
Zr�b to samo z ustawieniem i zerowaniem dla nast�pnej sekcji pliku
nag��wkowego. "c_lflag bits". W moim przypadku nie musia�em niczego
ustawia�, tak wi�c u�y�em tylko "_x_c_#_0_1_5_7_7_7_7" i "_x_s_#_0".
1155..22.. SSttaarrsszzee ddrruukkaarrkkii sszzeerreeggoowwee,, kktt��rree gguubbii�� zznnaakkii..
Jon Luckey pisze, �e u niekt�rych starszych szeregowych drukarek z
interfejsem za 10 cent�w i ma�ym buforem, stop w kontroli przep�ywu
oznacza rrzzeecczzyywwiissttee stop dla drukowania. Potem odkry�, �e �eby
naprawi� t� niedogodno�� wystarczy wy��czy� FIFO w uk�adzie 16550
poleceniem _s_e_t_s_e_r_i_a_l (�eby to zrobi� po prostu podajesz typ ukladu
uart jako 8250).
1166.. WWyyrraazzyy uuzznnaanniiaa..
Informacje na temat _s_m_b_p_r_i_n_t zosta�y zaczerpni�te z artyku�u Marcela
Roelofsa <
[email protected]>.
Informacje na temat _n_p_r_i_n_t i u�ywania drukarek NetWare zosta�y
dostarczone przez Michaela Smitha <
[email protected]>.
Sekcja na temat drukarek szeregowych pod lpd zosta�a napisana przez
Andrew Teffta <
[email protected]>.
Te wszystkie gammy i inne takie dla "gs" zosta�y dostarczone przez
Andreasa <
[email protected]>.
Dwa paragrafy na temat 30 sekundowego "closing_wait" przy sterownikach
szeregowych zosta�y dostarczone przez Chrisa Johnsona
<
[email protected]>.
Robert Hart przys�a� kilka doskona�ych paragraf�w na temat ustawiania
serwera drukarek dla po��czonych HP, kt�ych ja u�ywam w niezmienionej
wersji.
I specjalne podzi�kowania dla tuzin�w nad tuzinami tych, kt�rzy
wskazywali liter�wki, z�e adresy i b��dy w tym dokumencie przez lata.
1166..11.. OOdd tt��uummaacczzaa..
Wersja ta jest wersj� ostateczn�. Dodany zosta� odno�nik do w�a�nie
powsta�ego t�umaczenia dokumentu Printing-Usage-HOWTO.
T�umaczenie to jest chronione prawami autorskimi � Bartosza
Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na
prawach takich samych jak dokument oryginalny.
Je�li znalaz�e� jakie� ra��ce b��dy ortograficzne, gramatyczne,
sk�adniowe, techniczne (a mo�e ich tu troch� by�, bo nie znam si� tak
bardzo na poligrafii) to pisz do mnie:
[email protected]
Oficjaln� stron� t�umacze� HOWTO jest
http://www.jtz.org.pl/
Aktualne wersje przet�umaczonych dokument�w znajduj� si� na tej�e
stronie. Dost�pne s� tak�e poprzez anonimowe ftp pod adresem
ftp.jtz.org.pl w katalogu /JTZ.
Przet�umaczone przeze mnie dokumenty znajduj� si� tak�e na mojej
stronie WWW. <
http://www.jtz.org.pl/bartek/tlumaczenie.html> S� tam
te� odwo�ania do Polskiej Strony T�umaczeniowej.
Kontakt z nasz� grup�, grup� t�umaczy mo�esz uzyska� poprzez list�
dyskusyjn�
[email protected]. Je�li chcesz sie na ni� zapisa�, to wy�lij
list o tre�ci subscribe jtz Imi� Nazwisko na adres
[email protected]