Printing HOWTO pl


Drukowanie w Linux-ie Autor: Grant Taylor, gtaylor+pht@picante.com 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 , b) podrzucić mi informację co powinno tu być, a nie ma tego. Strona domowa tego HOWTO 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 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 . 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 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 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 . 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(){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 . 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 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: toby@eskimo.com (Toby Reed) Maintained-by: toby@eskimo.com (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 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 -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 . 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 . 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 . 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 <>, 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 () { print S; } sleep 3; do dokill(); } else { while() { 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 -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 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 . 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 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 . 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 = ; eol2 = ; 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 . Informacje na temat _n_p_r_i_n_t i używania drukarek NetWare zostały dostarczone przez Michaela Smitha . Sekcja na temat drukarek szeregowych pod lpd została napisana przez Andrew Teffta . Te wszystkie gammy i inne takie dla "gs" zostały dostarczone przez Andreasa . Dwa paragrafy na temat 30 sekundowego "closing_wait" przy sterownikach szeregowych zostały dostarczone przez Chrisa Johnsona . 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: B.Maruszewski@jtz.org.pl 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. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@jtz.org.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

Wyszukiwarka

Podobne podstrony:
printing howto pl 5
printing howto pl 4
printing howto pl 6
printing howto pl 12
printing howto pl 10
printing howto pl 8
printing howto pl 9
printing howto pl 14
printing howto pl 3
printing howto pl
printing howto pl 1
printing howto pl 15
printing howto pl 13
Printing HOWTO pl (2)
printing howto pl 7
printing howto pl 2
printing howto pl 16
printing howto pl 11
printing usage howto pl 5

więcej podobnych podstron