| Siec TCP/IP || Otoczenie Sieciowe || Poczta || Usnet || FTP || Konto Shellowe || Czat || IRC || Serwer PROXY |

Otoczenie sieciowe - Sieć SMB

utworzono: 27/07/2003 :: modyfikacja: 27/02/2007
autor: Marcin Moczkowski :: glappo (at) banita (dot) pl

Drukarka plików PDF w Samba/Unix

Założeniem standardu plików PDF jest to że niezależnie od systemu operacyjnego zawsze wyglądają one tak samo i tak samo są drukowane. Dodatkowo można takie pliki zabezpieczać przed nieautoryzowaną edycją i kopiowaniem zawartości. Niby nic ale w wielu dziedzinach są to bardzo ważne cechy. Dzięki tym zaletom PDFy i dostępności darmowych czytników (np. Adobe Acrobat Reader) w tym standardzie powstaje wiele publikacji szczególnie technicznych ale nie tylko. Poważną wadą PDFów było swego czasu to że programy do tworzenia tych plików były tylko i wyłącznie płatne oraz służące tylko do tych celów. Czyli jeszcze do niedawna nie można było z żadnego popularnego pakietu biurowego zapisać pracy wynikowej w formacie PDF.

Obecnie darmowy pakiet biurowy OpenOffice od wersji 2.0 posiada możliwość zapisu do PDF. Są również bezpłatne programy CutePDF i PDFCreator, które pod Windowsami też tworzą nam drukarkę PDF. Oba programy mają maleńką wadę - jak się jakiś tekst np. z MS Worda zapiszesz jako pdf, a potem skopiujesz fragment pdf i wkleisz do Worda to polskie litery widziane poprawnie w pdf są wklejane do Worda czy do txt z błędnym kodowaniem. PDFCreator jest trochę lepszy - chyba o jedną literkę mniej fałszuje niż CutePDF. Ponadto pozwala połączyć wiele tektstów, obrazków, skanów kolejnych stron w jeden duży pdf - również za darmo.

Ale nie byłoby artykułu jeśli nie można by tego rozwiązać za pomocą drukarki PDFów na serwerze Samba/Unix. Tworzenie pliku PDF będzie polegało na stworzeniu odpowiedniego pliku na naszym komputerze praktycznie w dowolnym programie pozwalającym drukować efekt naszej pracy.

Poniższy artykulik był inspirowany teksem "PDF Service with Samba" którego autorem jest John Bright. Do przeczytania w Linux Gazette #72 ("Linux Gazette...making Linux just a little more fun!").

Drukowanie plików PDF na drukarkę na Archiwum

W naszej sieci na serwerze Archiwum istnieje drukarka o nazwie PDF. Teraz na naszym komputerze podłączonym do sieci należy zainstalować tą drukarkę. W systemach Windows możemy to uczynić poprzez "Dodaj drukarkę", następnie wybieramy drukarkę sieciową i podajemy lokalizacje naszej nowej drukareczki czyli \\archiwum\pdf . Jako sterownik drukarki można wybrać dowolna drukarkę z wbudowana obsługującą PostScriptu, np. HP LaserJet 5P/5MP PostScript, jak pokazano na obrazku poniżej.

Obecnie na serwerze Archiwum drukarka PDF może być automatycznie zainstalowana na twoim komputerze bez potrzeby wskazywania przez ciebie jakichkolwiek sterowników. Po zatwierdzeniu przez ciebie chęci instalacji drukarki, wszystko odbędzie się automagicznie. Opcja ta działa dla systemów Windows 95/98/Me oraz NT/2000/XP.

Gdy mamy już tak dodana drukarkę PDF, można na nią drukować z wielu programów na naszym komputerze. Wydruk w postaci pliku PDF wyląduje na Archiwum w zasobie Upload o nazwie stworzonej na podstawie daty druku czyli np. lip26-225521.pdf. Pliczek PDF teraz można skopiować na nasz komputer i skasować go z Upload na Archiwum.

Utworzenie drukarki plików PDF w Samba/Unix

Opis ten jest dla tych co chcą "stworzyć" podobna drukarkę u siebie w sieci na serwerze opartym o Samba/Unix. Do tego cacka będziesz potrzebował jakiegoś systemu Unix np. Linux, pakietu GhostScrpt (www.ghostscript.com), a konkretnie zawartego w nim ps2pdf oraz oczywiście pakietu Samba. Poniżej opis tworzenia tego "cudeńka" w trzech krokach ;-).

  • utwórz plik printpdf w katalogu /usr/local/bin/ o zawartości jak poniżej, pamiętaj że prawa wykonywania musza mieć wszyscy ale prawa zapisu co najwyżej tylko root .
    #!/bin/sh
    #
    # by John Bright, 2001, jbright@winfordeng.com
    DATE=`date +%b%d-%H%M%S`
    TARGETDIR=/ścieżka_do_katalogu/Upload
    ps2pdf $1 $TARGETDIR/$DATE.tmp
    mv $TARGETDIR/$DATE.tmp $TARGETDIR/$DATE.pdf
    rm $1

  • w pliku konfiguracyjnym Samby czyli zazwyczaj /etc/samba/smb.conf, należy utworzyć drukarkę pdf, poprzez następujący wpis poniżej. Kolorem czerwonym pokazano opcje które koniecznie muszą być jeśli drukarka PDF ma działać na Samba 3.0. Szczególnie dotyczy to wpisu "printing = bsd", który najlepiej umieścić na początku przed opcją "print command". W Sambie 2.2 wystarczą tylko wpisy oznaczone kolorem czarnym. Całe to zamieszanie wynika z inaczej zdefiniowanych domyślnych opcji systemu wydruku miedzy wersjami Samby 2.2 a 3.0.
    [pdf]
    printing = bsd
    path = /tmp
    printable = yes
    guest ok = yes
    print command = /usr/local/bin/printpdf %s
    lpq command =
    lprm command =

  • Teraz musisz ewentualnie utworzyć katalog gdzie będą lądowały wydruki i udostępnić go poprzez Sambe. W naszej sieci jest to udział \\archiwum\Upload umiejscowiony na serwerze w /ścieżka_do_katalogu/Upload. Czyli w /etc/samba/smb.conf, wpisz takie coś:
    [Upload]
    path = /ścieżka_do_katalogu/Upload
    volume = upload
    comment = Strefa Zrzutu
    guest ok = yes
    write ok = yes

Oczywiście nie jesteś inteligentnym stworzeniem i wiesz że tekst "ścieżka_do_katalogu", należy zastąpić prawdziwa ścieżką. Tyle bazgrania, miłego drukowania ;-).

Udział print$ czyli automatyczne instalowanie sterowników

Jeśli chcesz sobie i użytkownikom uprościć życie powinieneś się zainteresować możliwościami jakie oferuje ukryty udział print$. Główna idea tego udziału wiąże się z udostępnianiem sterowników do udostępnionych drukarek na danym komputerze i automatycznej ich instalacji podczas instalowania udostępnionej drukarki u klientów. Czyli o sterowniki do drukarki nie martwi się klient a tylko musi się o nie zatroszczyć administrator dodając odpowiednie sterowniki dla różnych odmian Windows.

  • Wpierw musisz nadać konkretnej osobie lub grupie prawa do administrowania drukarek udostępnionych przez Sambe. Robisz to jedna opcja w sekcji global pliku smb.conf:
    [global]
    printer admin =
    adminek

  • Następnie tworzysz ukryty udział print$ w którym będą składowane sterowniki do udostępnionych drukarek:
    [print$]
    path = /var/printers
    guest ok = yes
    browseable = yes
    writable = yes
    write list = adminek
    admin users = adminek

    Jak widać możliwość zapisu w tym udziale ma ta sama osoba co wymieniona wcześniej w opcji printer admin. Dodatkowym wymaganiem jest to żeby administrator drukarki dodający sterowniki posiadał UID 0 w systemie na którym działa Samba. Taki UID posiada standardowo konto root lub inne działające z jego prawami dlatego nasz adminek został dodany do opcji admin users, dzięki której będzie posiadał uprawnienia superużytkownika w tym udziale. Należy być zawsze ostrożnym z dopisywaniem kont do opcji admin users.

  • Pozostało ci w katalogu na jaki wskazuje print$, czyli u nas /var/printers, stworzyć odpowiednie podkatalogi przechowujące sterowniki dla różnych wersji systemów Windows. Poniżej masz wymienione te katalogi wraz z wyjaśnieniem jakie sterowniki się tam znajdą.
    [print$]--+
                     |--W32X86         # sterowniki dla Windows NT/2000/XP x86
                     |--WIN40            # sterowniki dla Windows 95/98/Me
                     |--W32ALPHA     # sterowniki dla Windows NT Alpha_AXP
                     |--W32MIPS        # sterowniki dla Windows NT R4000
                     |--W32PPC          # sterowniki dla Windows NT PowerPC

    Oczywiście dla większości najważniejsze są dwa pierwsze katalogi W32X86 i WIN40, ze względu na to że obejmują one najpopularniejsze rodzaje systemu Windows.

Dodawanie sterowników do udziału print$

Żeby cała powyższa zabawa z udziałem print$ miała sens należy dodać do niego sterowniki dla interesujących nas systemów. Musisz oczywiście posiadać konto admintrstora drukarek na Sambie czyli w naszym przykładzie adminek, na które łączysz się z udziałami Samby. Dodanie sterowników drukarki odbywa się poprzez Kreator Dodawania Drukarki (Add Printer Wizard) z poziomu Windows lub za pomocą komendy rpcclient wraz z podkomendami typu adddriver oraz setdriver z poziomu systemów Unix. Z poziomu Windows wystarczy wybrać dodanie drukarki sieciowej przez Kreator Dodawania Drukarki i po jej zainstalowaniu wyświetlić "Właściwości" tej drukarki. teraz mając prawa administratora drukarki (bo jesteśmy zalogowani na Sambie jako adminek), należy przejść do zakładki "Zaawansowane", wybrać "Nowy sterownik" a następnie typ drukarki żeby sterowniki zostały załadowane na serwer Samby. Można tez we "Właściwości" drukarki, przejść do zakładki "Udostępnianie", wybrać "Dodatkowe sterowniki" i w nowym oknie zaznaczyć dodatkowo "Środowisko Intel Windows 95, 98 i Me", żeby załadować na serwer samby sterowniki także dla tych systemów, mając już "Środowisko Intel Windows 2000 lub XP". Oczywiście instalując sterowniki będziesz musiał wskazać czasem ich lokalizacje ale z tym nie powinno być problemu gdyż sterowniki drukarek dla różnych wersji Windows możesz pobrać ze strony WWW producenta tutaj HP.

Po tych karkołomnych operacjach masz już drukarkę PDF na twojej Sambie wraz z udziałem print$ do automatycznego instalowania sterników przez klientów Windows. Teraz wystarczy że dany użytkownik kliknie na drukarkę PDF na serwerze Samby i po zatwierdzeniu zapytania o instalacje drukarki zostanie ona automatycznie zainstalowana na jego komputerze bez jakiegokolwiek poszukiwania sterowników przez użytkownika.

Dostrajanie drukarki PDF

Powyżej pokazana konfiguracji drukarki PDF jest tylko jednym z przykładów. Główną wadą przedstawionego wyżej sterownika drukarki  HP LaserJet 5P/5MP PostScript jest druk czarno-biały i słaba jakość wydruku plików PDF. Aby uzyskać lepsza jakość wydruku należy dobrać odpowiedni sterownik którejś z drukarek postscriptowych. Jedną z takich drukarek jest drukarka Apple Color LW 12/660 PS, która obsługuje m.in. druk w kolorze. Dodatkowo warto dostroić jakość plików wynikowych PDF z tej drukarki. Uzyskuje się to poprzez zmianę samego konwertera postscriptu do pdf oraz dobraniu odpowiednich opcji. Pakiet Ghostscript zawiera różne rodzaje konwerterów postscriptu do pdf jak ps2pdf, ps2pdf12, ps2pdf13, ps2pdf14, itp. Poniżej przestawiono zawartość pliku printpdf dla owej drukarki.

#!/bin/sh
NAME=`date +%b%d-%H%M%S`
TARGETDIR=/ścieżka_do_katalogu/Upload
ps2pdf14 -dEncodeColorImages=true -dAutoFilterColorImages=false \
-sColorImageFilter=FlateEncode $1 $TARGETDIR/$NAME.pdf
rm -f $1

Dodatkowo czasem warto nazywać plik wynikowy PDF jego własną nazwą zamiast jak w owych przykładach datą wydruku. W tym celu należy wpierw zmodyfikować sam udział drukarki dodając w nim zmienną %J odpowiedzialną za przekazanie nazwy drukowanego dokumentu

[pdf]
...
print command = /usr/local/bin/printpdf %s "%J" ...
Następnie zostało lekko zmienić plik printpdf dla owej drukarki.
a potem:
DATA=`date +%d.%B-%H.%M.%S`
NAME="$2"" [wersja z $DATA]"
TARGETDIR=/ścieżka_do_katalogu/Upload
ps2pdf14 -dEncodeColorImages=true -dAutoFilterColorImages=false \
-sColorImageFilter=FlateEncode $1 $TARGETDIR/"$NAME".pdf
rm -f $1

Tyle magii o drukarce PDF której rzeczywiście nie zawala ci biurka i w sumie nic nie kosztuje ;-).

Uwagi na koniec

Jeśli używasz dystrybucji Linuksa wspierającą SELinux, np. Fedora Core, sprawdź czy ustawienia polityki bezpieczeństwa pozwolą korzystać z drukarki PDF. Możesz o tym poczytać w dziale SELinux na stronie Firewall czyli ściana ogniowa - opis dla Linux.


Drukuj Dokument