LinTerm

forum dyskusyjne użytkowników wyjątkowej polskiej dystrybucji linuksa


#1 2007-01-21 13:57:34

Kamil Pawelak

amarok / incarnatus / Mr.Raggahashish

Skąd: Elbląg
Zarejestrowany: 2007-01-15
Posty: 89
Punktów :   
WWW

drukowanie pod linuksem

Kod:

2. Drukowanie pod Linux-em.
2.1 Historia drukowania na Linux-ie. 
2.2 Drukowanie pliku przy użyciu lpr. 
2.3 Przeglądanie kolejki zadań przy pomocy lpq. 
2.4 Anulowanie zadania przy pomocy lprm. 
2.5 Kontrolowanie programu lpd przy pomocy lpc. 
2.6 "Printtool" z RedHat-a. 

3. Drukowanie plików.
3.1 Drukowanie plików graficznych. 
3.2 Drukowanie plików PostScriptowych. 
3.3 Drukowanie plików PDF. 
3.4 Drukowanie plików w TeX-u. 
3.5 Drukowanie plków sformatowanych troff-em. 
3.6 Drukowanie stron podręcznika systemowego man. 

4. Różności.
4.1 Formatowanie przed drukowaniem. 
4.2 Zmienne Środowiskowe PRINTER.

5. Odpowiedzi na często zadawane pytania.

6. Rozwiązywanie problemów.

7. Odwołania.

2. Drukowanie pod Linux-em.


Sekcja ta omawia jak drukować pliki, sprawdzać kolejkę wydruków, usuwać zadania z kolejki wydruków, formatować pliki przed ich wydrukowaniem i jak skonfigurować środowisko do drukowania.

2.1 Historia drukowania na Linux-ie.


System drukowania na Linux-ie - system lp - jest przeniesionym źródłem kodu napisanego przez regentów Uniwersytetu Californii dla wersji UNIX-a "Berkeley Software Distribution".

2.2 Drukowanie pliku przy użyciu lpr.


Najbardziej prostą metodą na drukowanie w Linux-ie jest wysłanie pliku do wydrukowania do urządzenia drukarki. Jednym ze sposobów na zrobienie tego jest użycie polecenia cat. Jako "root" możesz zrobić coś takiego:

# cat thesis.txt > /dev/lp

W tym wypadku, /dev/lp jest symbolicznym dołączeniem do rzeczywistego urządzenia drukarki - niech to będzie igłówka, laserówka, "typesetter" czy ploter. (Więcej informacji na temat dołączeń symbolicznych znajdziesz na stronie podręcznika systemowego ln(1)).

Z przyczyn bezpieczeństwa, tylko "root" i użytkownicy należący do tej samej grupy co demon drukowania mogą pisać bezpośrednio na drukarkę. Oto dlaczego polecenia takie jak: lpr, lprm, czy lpq muszą być używane, żeby mieć dostęp do drukarki.

Z tego powodu użytkownicy muszą używać lpr, aby wydrukować jakiś plik. Polecenie to troszczy się o wszystko co jest potrzebne do wydrukowania danego pliku, a potem przekazuje kontrolę do innego programu - lpd czyli "line printer daemon". Demon ten informuje drukarkę jak ma wydrukować dany plik.

Kiedy wykonywany jest lpr, najpierw kopiuje on podany plik do konkretnego katalogu (katalogu zadań), gdzie plik ten pozostaje dopóki lpd go nie wydrukuje. Jak lpd się dowie, że jest jakiś plik do wydrukowania, to utworzy kopię siebie (co my programiści nazywamy rozmnożeniem/klonowaniem). Kopia ta wydrukuje nasz plik, podczas gdy oryginał będzie czekał na dalsze zadania. Pozwala to na obsługiwanie wielu zadań na raz.

Składnia polecenia lpr jest bardzo znana:

$ lpr [ opcje ] [ nazwa_pliku ... ]

Jeśli nazwa_pliku nie jest podana, lpr spodziewa się danych ze standardowego wejścia (zwykle klawiatury lub wyjścia innego programu). To pozwala użytkownikowi na przekierowanie wyjścia poleceń do kolejki drukowania. Np:

$ cat thesis.txt | lpr

lub

$ pr -l60 thesis.txt | lpr

Polecenie lpr przyjmuje kilka argumentów z linii poleceń, które pozwalają użytkownikowi kontrolować jego działanie. Niektóre z bardziej popularnych argumentów to: -Pdrukarka określa drukarkę, na której ma być dane zadanie wydrukowane, -h nie pozwala wydrukować strony tytułowej (z identyfikatorem itp.), -s tworzy symboliczne dołączenie zamiast kopiować plik do katalogu zadań (przydatne do dużych plików) i -#il określa ilość kopii do wydrukowania. Przykład może wyglądać tak:

$ lpr -#2 -sP dj thesis.txt

Polecenie to stworzy symboliczne dołączenie do pliku thesis.txt w katalogu zadań dla drukarki o nazwie dj, a następnie przekaże zadanie do lpd. Następnie wydrukuje drugą kopię tego pliku.

Wszystkie dostępne opcje znajdziesz w podręczniku systemowym lpr(1).

2.3 Przeglądanie kolejki zadań przy pomocy lpq.


Aby zobaczyć zawartość kolejki do drukowania użyj polecenia lpq. Wydane bez argumentów, zwraca zawartość kolejki dla domyślnej drukarki.

Rezultat polecenia lpq może być przydatny do różnych celów.

$ lpq
lp is ready and printing
Rank   Owner      Job  Files                            Total Size
active mwf        31   thesis.txt                       682048 bytes

2.4 Anulowanie zadania przy pomocy lprm.


Inną przydatną cechą każdego systemu drukowania jest możliwość anulowania zadania, które zostało umieszczone w kolejce. Aby to zrobić użyj lprm.

$ lprm -

Powyższe polecenie anuluje wszystkie zadania, które są własnością użytkownika wydającego to polecenie. Pojedyncze zadanie może być anulowane przez zdobycie numeru tego zadania (z polecenia lpq) i podanie go do lprm:

$ lprm 31

Spowodowałoby skasowanie zadania nr 31 - thesis.txt na drukarce domyślnej.

2.5 Kontrolowanie programu lpd przy pomocy lpc.


Program lpc(8) używany jest do kontrolowania drukarek, które obsługuje lpd. Możesz włączyć lub wyłączyć drukarkę albo jej kolejkę, zmienić kolejność w kolejce zadań oraz otrzymać raport na temat drukarek i ich kolejek. Lpc jest używany głównie w sytuacjach kiedy do komputera podłączonych jest kilka drukarek.

$ lpc

Powyższe polecenie wystartuje program lpc. Domyślnie, uruchamia się interaktywny tryb i możesz zacząć wydawać polecenia. Inną opcją jest wprowadzenie polecenia lpc z linii argumentów.

$ lpc status all

Lista dostępnych poleceń jest w podręczniku systemowym lpd, a tutaj podaję kilka najważniejszych, których będziesz najczęściej używał. Polecenie oznaczone opcją może być albo nazwą drukarki (lp, print, itp.) albo słowem "all", co oznacza wszystkie drukarki.

disable opcja - nie pozwala na dodawanie nowych zadań,
down opcja - wyłącza drukowanie,
enable opcja - pozwala na dodawanie nowych zadań,
quit (lub exit) - zakończenie sesji lpc,
restart opcja - startuje ponownie lpd dla podanej drukarki,
status opcja - wyświetla status drukarki,
up opcja - pozwól na wszystko i wystartuj nowego lpd.

2.6 "Printtool" z RedHat-a.


Tylko krótka notatka na temat zadziwiającego programu printtool z dystrybucji RedHat. Wygląda na to, że robi on wszystko to co robiłby filtr magiczny. RedHat instaluje od razu wiele programów filtrujących. Oto jak ustawiłem swoją drukarkę HP LJ 4L podłączoną do portu równoległego na RH 4.0.

Zmień sesję na "root-a" i odpal "printtool". (jeśli stałeś się "root-em" przez polecenie su, to pamiętasz o ustawieniu zmiennej DISPLAY na :0.0 i uruchomieniu programu xhost z parametrem "+", prawda ?)
Kliknij na przycisk "Add" a potem "OK" dla drukarki lokalnej.
Wpisz urządzenie do drukowania (u mnie /dev/lp1)
Wpisz filtr wejściowy - wybierz typ drukarki, rozdzielczość i rozmiar papieru (ljet4, 300x300 i "letter")
Wciśnij "OK" aż do końca i zrestartuj lpd.

Na jedno zawołanie możesz mieć definicje dla różnych drukarek w /etc/printcap. Dla różnych rozmiarów papieru, rozdzielczości, itd.

3. Drukowanie plików.


Ta sekcja omawia drukowanie plików z jakimi się spotkasz na Linux-ie.

3.1 Drukowanie plików graficznych.


Drukowanie takich plików na drukarce zwykle zależy od rodzaju grafiki i drukarki. Igłówki z reguły nie wchodzą w grę z powodu różnic w sposobach obsługi plików graficznych. Najlepszym wyborem byłoby tu sprawdzenie czy twoja drukarka jest kompatybilna z Epson-em albo IBM ProPrinter, a następnie konwersja do PostScriptu i użycie ghostscriptu do wydrukowania (zobacz następną sekcję).

Jeśli masz drukarkę laserową, to sytuacja jest trochę łatwiejsza ponieważ większość jest kompatybilna z PCL. To daje ci kilka opcji do wyboru. Niektóre programy umieją wysyłać bezpośrednio w PCL. Jeśli nie, to programy takie jak NetPBM potrafią konwertować na PCL. Ostatnią opcją jest użycie ghostscriptu (zobacz następcją sekcję).

Najepszą opcją do wyboru jest instalacja pakietów takich jak NetPBM i ghostscriptu, a potem instalacja magicznego filtra do automagicznej obróbki grafiki.

3.2 Drukowanie plików PostScriptowych.


Drukowanie takich plików na drukarce, która potrafi interpretować ten język jest proste; po prostu użyj lpr a drukarka zajmię się resztą. Dla tych z nas, którzy nie mają takich drukarek pozostają inne środki. Na szczęście są dostępne programy, które potafią robić użytek z PostScriptu i tłumaczyć go na język zrozumiały dla większości drukarek. Najbardziej znanym programem z tego rodzaju jest GhostScript.

Jest on odpowiedzialny za konwersję wszystkich opisów w PostScripcie na język zrozumiały dla danej druarki. Aby wydrukować plik w PostScripcie za pomocą ghostscriptu możesz zrobić coś takiego:

$ gs -dSAFER -dNOPAUSE -sDEVICE=deskjet -sOutputFile=\|lpr thesis.ps

Zauważ w powyższym przykładzie, że właściwie przesyłamy wynik z programu ghostscript do lpr używając opcji -sOutputFile.

Ghostview jest interfejsem graficznym pod XWindows dla ghostscriptu. Pozwala on na podgląd pliku w PostScripcie przed wydrukowaniem. Ghostview i ghostscript - oba można otrzymać z ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/apps/graphics/viewers/X.

3.3 Drukowanie plików PDF.


Adobe wypuścił czytarkę Acrobat dla Linux-a i jest ona dostępna na stronie domowej WWW tej firmy. Poprzednia wersja - xpdf - jest także dostępna.

3.4 Drukowanie plików w TeX-u.


Jednym z najprostszych sposobów na drukowanie takich plików jest konwersja ich na PostScript i drukowanie za pomocą ghostscriptu. Aby to zrobić musisz najpierw przkonwertować je z TeX-a na format znany jako DVI (co jest skrótem od DeVice Independent - czyli niezależne od urządzenia). Można to zrobić polecenem tex(1). potem musisz zmienić plik DVI na PostScript przy pomocy dvips. Wszystko wygląda mniej więcej tak:

$ tex thesis.tex
$ dvips thesis.dvi

Teraz możesz wynikowy plik w PostScripcie wydrukować w sposób podany wyżej,

3.5 Drukowanie plków sformatowanych troff-em.


$ groff -Tascii thesis.tr | lpr

albo jeśli wolisz

$ groff thesis.tr > thesis.ps

a potem wydrukuj plik w PostScripcie jak wyżej.

3.6 Drukowanie stron podręcznika systemowego man.


$ man man | col -b | lpr

Strony te zawierają preformatowane dane troff-a tak więc musimy wyrzucić wszelkie podświetlenia, podkreślenia itp. Program col robi to całkiem miło, a ponieważ używamy strumieni program man nie użyje polecenia more.

4. Różności.


W sekcji tej znajdują się tematy, których nie można zaliczyć do wcześniejszych.

4.1 Formatowanie przed drukowaniem.


Ponieważ większość plików ASCII nie jest sformatowana do drukowania użyteczne jest sformatowanie ich w jakiś sposób przed wydrukowaniem. Może zawierać to umieszczenie tytułu i numeru na każdej stronie, ustawienie marginesu, podwójne przerwy między wyrazami, wcięcia albo drukowanie pliku w większej ilości kolumn. Popularnym sposobem na osiągnięcie tego jest użycie np. programu pr.

$ pr +4 -d -h"Ph.D. Thesis, 2nd Draft" -l60 thesis.txt | lpr

W powyższym przykładzie, pr przeskoczyłby pierwsze 3 strony (+4), ustawił długość strony na 60 lini (-l60), podwoił spacje (-d) i dodał napis "Ph.D. Thesis, 2nd Draft" na początku każdej strony (-h). Lpr umieściłby rezultat tego polecenia w kolejce. Zajrzyj do podręcznika systemowego pr(1) jeśli chcesz znać więcej informacji.

4.2 Zmienne Środowiskowe PRINTER.


Wszystkie polecenia w systemie drukowania Linux-a akceptują opcję -P. Opcja ta pozwala użytkownikowi na podanie, która drukarka ma być użyta. Jeśli użytkownik tego nie poda, to wybrana zostanie drukarka domyślna.

Zamiast każdorazowego podawania nazwy drukarki, możesz podać ją w zmiennej środowiskowej "PRINTER". W zależności od twojej powłoki, może to być zrobione w różny sposób. Dla bash-a będzie to:

$ PRINTER="nazwa_drukarki"; export PRINTER

Dla csh będzie to:

% setenv PRINTER "nazwa_drukarki"

Polecenia te mogą być umieszczone w skryptach startowych (.profile dla bash-a i .cshrc dla csh) albo wydane z linii poleceń. Więcej na temat zmiennych środowiskowych znajdziesz na stronach podręcznika systemowego bash(1) i csh(1).
UWAGA - Ostrzegam żebyś przypadkowo z tego podniecenia nie zaczął drukować tych stron ) - mają one odpowiednio 4.000 i 5.500 linii.

5. Odpowiedzi na często zadawane pytania.


P1. Jak mam zapobiec efektowi schodków ?

O1. Efekt ten jest powodem tego, że niektóre drukarki spodziewają się znaków CR/LF na końcu linii, a w Unix-ach koniec linii to tylko LF (czyli przejście do nstępnej linii bez powrotu do jej początku). Najprostszym sposobem na poprawienie tego jest sprawdzenie czy twoją drukarkę można jakoś przełączyć na druki sposób - albo przy pomocy przełącznika albo wysyłając sekwencję znaków na początku każdego wydruku. Do drugiego rozwiązania potrzebujesz filtra. (Zobacz pytanie 2.)

Szybkim sposobem jest użycie filtru z wiersza poleceń. Przykładem może być:

$ cat thesis.txt | todos | lpr

P2. Co to jest filtr.

A2. Jest to program, który czyta ze standardowego wejścia (stdin), robi coś z wczytanymi danymi i zapisuje je do standardowego wyjścia (stdout). Filtry są używane do wielu rzeczy, włączając w to przeróbkę tekstu.

P3. Co to jest filtr magiczny ?

A3. Jest to filtr, który robi coś w zależności od typu pliku wejściowego. Np. jeśli plik jest czystym plikiem tekstowym, to po prostu wydrukowałby go używając standardowej metody. Jeśli plik jest w PostScripcie czy innym formacie, to wydrukowałby go używając innej metody (np. ghostscriptu). Dwoma przykładami tego są "magicfilter" i "APSfilter". Jedyną wadą tych filtrów jest to, że odpowiednie programy muszą być zainstalowane przed instalacją filtra.

Powodem tego jest to, że jeśli "magicfilter" zostaje zainstalowany, to pyta on twój system o konkretne programy (takie jak ghostscript - jeśli go znajdzie, to wie, że może obsługiwać dane typu PostScript), potem tworzy siebie na podstawie tego co znalazł. Aby obsługiwać wszystkie pliki do drukowania, musisz mieć zainstalowane przynajmniej takie programy:

GhostScript
TeX
NetPBM
jpeg utilities
gzip

P4. Co z Systemem Drukowania z Windows ? Czy Linux będzie z tym działał ?

O4. Może. Drukarki, które akceptują tylko polecenia WPS (Windows Printing System) nie będą działać z Linux-em. Natomiast te, które akceptują polecenia WPS i inne (jak np. Canon BJC 610) będą działać dopóki są ustawione na coś innego niż WPS. Inne drukarki takie jak HP DeskJet 820Cxi/Cse nie będą działać z Linux-em. Właściwie Linux może służyć jako serwer wydruków dla Win95 ponieważ Win95 ma sterowniki do tych drukarek.

P5. Co to za system ? Nie mogę wydrukować więcej niż 6 stron bo dostaję "file too large".

O5. Jedna z opcji w /etc/printcap dotyczy maksymalnego rozmiaru wydruku. Domyślną wartością jest 1000 bloków dysku (ok. 500KB). Dla PostScript-u itp. da ci to około 6-8 stron z grafiką i to koniec. Upewnij się, że dodałeś następującą linię do pozycji danej drukarki w /etc/printcap:

mx=0

Podstawowym powodem tego limitu jest dotrzymanie warunku, żeby nie zapełnić partycji na wydruki. Jest inny spośob na zrobienie tego; można kazać lpr utworzyć dołączenie symboliczne do pliku do wydrukowania. Musisz wtedy pamiętać, żeby dodać opcję -s do każdego wywołania programu lpr.

6. Rozwiązywanie problemów.


W sekcji tej znajdują się częste problemy z jakimi się możesz spotkać przy drukowaniu.

Jeśli twoja drukarka nie działa:
Czy inne wydruki działają ? (problem z aplikacją ?)
Czy lpd jest uruchomiony ? (sprawdź używając lpc) (kontroler wydruków ?)
Czy "root" może wysłać coś bezpośrednio na urządzenie drukarki ? (serwisy drukowania ?)
Czy możesz drukować z DOS-a ? (problemy z kablami/drukarką ?)

Odpowiedź na te pytania pomoże znaleźć rozwiązanie.

Inne sugestie do tej sekcji wysyłaj na adres < markk@auratek.com>.

7. Odwołania.


Sekcja ta zawiera odnośniki dla systemu drukowania na Linux-ie. Próbowałem utrzymać tę sekcję jak najbardziej zwięzłą. Jeśli czujesz, że zapomniałem czegoś, to nie wahaj się pisać do mnie.

Zanim wyślesz pytanie na grupę dyskusyjną, zastanów się:

Czy drukarka akceptuje zadania ? (Użyj lpc(8))
Czy odpowiedź na twoje pytanie znajduje się w tym HOWTO lub HOWTO Granta Taylora "Drukowanie w Linux-ie" ?

Jeśli któreś z powyższych jest prawdą, to pomyśl dwa razy zanim wyślesz pytanie. A jeśli już się zdecydujesz wysłać, to postaraj się zawrzeć jak najdokładniejsze informacje. Spróbuj napisać coś więcej niż "Mam problemy z lpr. Pomóżcie !" Tego typu listy zostaną przez większość zignorowane. Podaj także wersję jądra jaką używasz, jak/kiedy pojawił się błąd i ewentualnie komunikaty jakie się pojawiły.

Strony podręcznika systemowego:

cat(1) konkatenacja i drukowanie plików
dvips(1) konwersja pliku TeX-a DVI na PostScript
ghostview(1) podgląd dokumentów PostScriptowych przy pomocy ghostscriptu
groff(1) interfejs dla systemu formatowania dokumentów - groff
gs(1) Interpreter/przeglądarka ghostscript
lpc(8) program kontrolny do drukarki
lpd(8) demon do drukarki
lpq(1) program do sprawdzania kolejki
lpr(1) program do drukowania dla użytkowników
lprm(1) usuwanie zadań z kolejki
pr(1) konwersja plików tesktowych do drukowania
tex(1) formatowanie tekstu
Grupy dyskusyjne (USENET; NEWS)

comp.os.linux.* wszystko o Linux-ie (i jeszcze więcej)
comp.unix.* dyskusje dotyczące systemu operacyjnego UNIX


źródło: http://www.jtz.org.pl/Html/Printing-Usage-HOWTO.pl.html


http://images4.fotosik.pl/295/baea2c131b6b27f5.png

Offline

 

Stopka forum

RSS
Powered by PunBB 1.2.23
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.lechisci.pun.pl www.shamanan58.pun.pl www.worldofbleach.pun.pl www.1stpad.pun.pl www.nsh.pun.pl