wtorek, 25 sierpnia 2015

Jak drukować bez sterowników?

Problem zaczął się od zakupu urządzenia wielofunkcyjnego HP DeskJet 1050. Właściwie, to potrzebowałem tylko skanera (w starym zużyła się lampa i zostawiał smugi), ale okazało się, że taniej jest kupić skaner z drukarką niż sam skaner płaski. No cóż, takie czasy.

Skoro jednak „przy okazji” stałem się posiadaczem całkiem przyzwoitej drukarki (na pewno lepszej od używanego dotąd Lexmarka Z25), to jak na niej drukować z mojego notebooka z Windows 98? Niestety, sterownika dla Windows 98 dla tej drukarki nigdy nie było, nie ma i nie będzie. Więc co: pozostaje zapisywać dokumenty na pendrive, przenosić na komputer stacjonarny (z Windows XP) i tam drukować? Można i tak, ale co, jeśli główny komputer jest akurat zajęty przez kogoś z rodziny? Czekać? Prosić? Przeganiać (i powodować konflikty rodzinne)?

Znacznie lepiej byłoby, gdyby dało się drukować wprost z notebooka za pośrednictwem domowej sieci komputerowej. Tu jednak zaczynają się „schody”: o ile udostępnienie w sieci drukarki podłączonej do komputera stacjonarnego nie nasuwa problemów, podobnie jak instalacja drukarki sieciowej na innym komputerze z Windows XP, to z Windows 98 mamy problem. Podczas instalacji system żąda sterownika, a tego nie ma.

Na szczęście sprawa nie jest beznadziejna. Należy najpierw skonfigurować wirtualną drukarkę postscriptową (proszę się nie przerażać: PostScript to taki standardowy język opisu strony używany w poligrafii) drukującą na fizycznym urządzeniu podłączonym do komputera z Windows XP, a następnie taką drukarkę udostępnić w sieci. Z instalacją drukarki sieciowej w Windows 98 nie będzie już problemu: PostScript jest standardem i jest obsługiwany przez praktycznie każdy system operacyjny.

Konfigurujemy drukarkę wirtualną

Nie będę ukrywał: nie jest to proste, zwłaszcza dla kogoś mniej obeznanego z techniką komputerową w ogóle, a systemem Windows w szczególności. Mam jednak nadzieję, że po przeczytaniu tego artykułu każdy będzie w stanie takie zadanie wykonać. Całość jest opisana w języku angielskim tutaj i tutaj. Poniżej prezentuję pewną kompilację tych rozwiązań, z nieznacznymi modyfikacjami.

Potrzebne będą:
GhostScript – programowy interpreter języka PostScript, kompilacja dla Windows
GSview – przeglądarka plików PostScript
RedMon – umożliwia przekierowanie portu drukarki do programu
cmdow.exe – do zarządzania oknami z poziomu konsoli znakowej (nie jest niezbędny, ale ułatwia życie)

Zaczynamy oczywiście od podłączenia i skonfigurowania drukarki fizycznej na maszynie z Windows XP. Tutaj jedyną „wyrocznią” jest fabryczna instrukcja obsługi. W niektórych przypadkach wymagane jest najpierw podłączenie drukarki, a potem instalacja oprogramowania, w innych – dokładnie na odwrót, a w przypadku HP DeskJet 1050 jakby „w połowie”: trzeba rozpocząć instalację oprogramowania, a drukarkę podłączyć w momencie pojawienia się stosownej informacji na ekranie. Dla zaoszczędzenia kłopotów koniecznie sprawdźmy, czy wszystko jest w porządku, drukując stronę testową.

Następnie przechodzimy do instalacji niezbędnego oprogramowania, w kolejności: GhostScript, GSview, RedMon, cmdow. Katalogi w których instalowane jest oprogramowanie możemy wybrać dowolnie lub pozostawić domyślne, ale ja wybrałem następująco (przyda się dla ustalenia uwagi):

GhostScript – D:\Winprog\gs\gs9.05 (u siebie zainstalowałem GhostScript w wersji 9.05)
GSview – D:\Winprog\gs\gsview
RedMon – D:\Winprog\gs\RedMon
cmdow.exe – C:\Util (program nie wymaga instalacji, po prostu kopiujemy plik)

Pora na skonfigurowanie wirtualnej drukarki. Klikamy „Start” → „Drukarki i faksy” (dla Windows XP Home Edition: „Start” → „Panel sterowania” → „Drukarki”) i otwieramy kreatora nowej drukarki („Dodaj drukarkę”). Wybieramy opcję „Drukarka lokalna podłączona do tego komputera”.

W oknie wyboru portu drukarki zaznaczamy „Utwórz nowy port” i z rozwijanej listy wybieramy typ portu: „Redirected Port”. Jeśli prawidłowo zainstalowaliśmy RedMon, taka opcja będzie dostępna. Jeśli dodajemy pierwszy przekierowywany port drukarki, zaproponowaną nazwą będzie „RPT1:”. Nie zmieniajmy tego.

Teraz wybieramy jakiś dostępny w systemie sterownik drukarki postscriptowej. Dobrym wyborem będzie HP Color LaserJer 4500 PS.


Jako nazwę drukarki podajemy coś prostego, np. „GS PS Printer” (bo to nie jest w rzeczywistości HP Color LaserJet, niech więc się poprawnie kojarzy), nie włączamy (na razie) udostępniania drukarki i nie drukujemy strony testowej (nie wydrukuje się).

Zanim wykonamy konfigurację portu drukarki przygotujmy prosty plik wsadowy. U mnie nazywa się on gsprt.bat i jest zapisany w katalogu C:\Bat. Oto jego zawartość:

c:\util\cmdow @ /HID
D:\Winprog\gs\gsview\gsview\gsprint.exe -printer "HP Deskjet 1050 J410 series" -color -


Proszę zwrócić uwagę na następujące szczegóły:
  1. poprawną ścieżkę do pliku gsprint.exe – znajduje się on w katalogu, w którym zainstalowaliśmy GSview; jeśli jest to inny katalog niż u mnie, trzeba ją zmodyfikować
  2. poprawną nazwę drukarki fizycznej – musi być dokładnie taka, jak w systemie, liczy się wszystko: wielkie i małe litery, odstępy itp.
  3. znak „-” na końcu, poprzedzony odstępem – jest konieczny.
Teraz przystępujemy do konfiguracji portu. Klikamy prawym klawiszem myszy nazwę naszej nowej drukarki (w oknie „Drukarki i faksy”), wybieramy „Właściwości”, klikamy zakładkę „Porty” i mając zaznaczony port „RPT1:” klikamy przycisk „Konfiguruj port”. W oknie właściwości wprowadzamy ścieżkę do naszego pliku wsadowego, jak na poniższej ilustracji. W celu uniknięcia pomyłki warto posłużyć się przyciskiem „Browse” i wskazać właściwy plik. Klikamy „OK” i zamykamy okno właściwości drukarki.


Dopiero teraz możemy spróbować wydrukować stronę testową (prawy klawisz myszy na nazwie drukarki, „Właściwości” → „Drukuj stronę testową”). Jeśli drukarka nie działa, to najprawdopodobniej zrobiliśmy gdzieś błąd w ścieżce dostępu do pliku gsprint.exe w gsprt.bat, a jeśli podczas drukowania pojawia się okno dialogowe wyboru drukarki – prawdopodobnie zrobiliśmy błąd w nazwie drukarki podanej w tym samym pliku.

Gdy wszystko działa dobrze, udostępniamy drukarkę w sieci (prawy klawisz myszy na nazwie drukarki, „Udostępnianie”). Wybierzmy jakąś krótką ale kojarzącą się z funkcjonalnością nazwę drukarki sieciowej, ja nazwałem ją GSPrinter.


Dygresja 1

Tak skonfigurowana wirtualna drukarka może się przydać nie tylko do udostępniania w sieci, ale również w systemie lokalnym, jeśli potrzebujemy jakichś specjalnych opcji wydruku. Spróbujcie na przykład wydrukować coś w odbiciu lustrzanym. Mogę się założyć, że jeśli tylko wasza drukarka nie jest jakimś super-hiper wypasionym profesjonalnym (i odpowiednio drogim) modelem – sterownik nie ma takiej funkcji. Na naszej drukarce postscriptowej da się to zrobić zawsze, niezależnie od tego, jakim fizycznym urządzeniem dysponujemy.
 

Dygresja 2

Jeśli ktoś przestudiował wskazane na początku dokumenty źródłowe mógł zauważyć, że podany tam sposób konfigurowania portu drukarki wirtualnej jest nieco inny, w szczególności nie jest używany żaden plik wsadowy. W takim jednak przypadku podczas drukowania program gsprint.exe (lub gswin32c.exe) wyświetla swoje okno. Jeśli komputer udostępniający drukarkę służy jedynie jako serwer wydruku, w niczym to nie przeszkadza. Rzecz ma się jednak inaczej, gdy jest wykorzystywany do normalnej pracy. Moja modyfikacja powoduje, że okno pojawia się tylko na ułamek sekundy, po czym jest ukrywane. Odpowiada za to pierwszy wiersz pliku wsadowego.


Drukujemy w sieci

Powróćmy teraz do systemu Windows 98, aby podłączyć się do drukarki sieciowej. Powinno to być proste: „Start” → „Ustawienia” → „Drukarki” → „Dodaj drukarkę” → „Dalej” → zaznaczamy „Drukarka sieciowa” → „Dalej” → przy wyborze ścieżki sieciowej lub nazwy kolejki klikamy przycisk „Przeglądaj” → rozwijamy listę zasobów udostępnianych przez nasz stacjonarny komputer → zaznaczamy udostępnioną drukarkę → „OK”.


Prawidłowa ścieżka sieciowa zostanie wprowadzona w okno dialogowe. Klikamy „Dalej” i pojawia się okno wyboru sterownika drukarki.


Teraz wybieramy jakąś drukarkę postscriptową dostępną w systemie. Ja uzyskuję dobre wyniki pod Windows 98 ze sterownikiem HP Color LaserJet PS. Klikamy „Dalej” i zmieniamy nazwę drukarki na nazwę modelu urządzenia rzeczywistego (można też fantazjować, ale po co?). Klikamy „Dalej”, pozostawiamy zaznaczenie przy „Drukuj stronę testową” i klikamy „OK”.

Jeśli wszystko poszło dobrze, na drukarce powinniśmy otrzymać mniej więcej to:


Czasem jednak Windows 98 bywa kapryśny i podczas próby wyszukania drukarki sieciowej możemy otrzymać komunikat, że przeglądanie sieci nie jest możliwe, albo na liście wyświetlonych komputerów brakuje akurat tego, który udostępnia drukarkę.

W takim przypadku, nie wdając się na razie w przyczyny tego stanu rzeczy, spróbujmy innej drogi. Klikamy prawym klawiszem myszy ikonę „Otoczenie sieciowe” na pulpicie i wybieramy „Znajdź komputer...”. W wyświetlonym oknie dialogowym wpisujemy nazwę komputera udostępniającego drukarkę (u mnie nazywa się on Mc1) i klikamy przycisk „Znajdź”. Jeśli tylko sieć działa prawidłowo, nazwa odnalezionego komputera pojawi się na liście wyników.


Klikamy dwukrotnie na ikonie komputera i otwiera się okno z udostępnianymi przez niego zasobami.


Teraz klikamy dwukrotnie ikonę wybranej drukarki, następnie „Tak” (no przecież wiemy, że drukarkę należy zainstalować przed użyciem), potem „Dalej” i już jesteśmy w znanym oknie wyboru sterownika.

Windows Vista/7/8/8.1

Czy zakupiliście już laptopa (a może komputer stacjonarny) z jednym z najnowszych systemów Microsoftu? Czy wyrzuciliście już swoją jeszcze nie tak starą i całkowicie sprawną drukarkę, bo nie ma do niej sterownika dla nowych „okienek”? Jeśli jeszcze nie, to proszę się zastanowić: w analogiczny do powyżej opisanego sposób możemy udostępnić w domowej sieci starszą drukarkę dla nowej wersji Windows.

3 komentarze:

  1. wow, jestem pod sporym wrażeniem i na pewno skorzystam z tych metod w momencie gdy zaistnieje taka sytuacja

    OdpowiedzUsuń
  2. Zaprezentowane tutaj techniki można wykorzystać do udostępnienia drukarki "windowsowej" dla systemu Linux. W grę wchodzą również drukarki GDI, których Linux "sam z siebie" nie obsługuje. Jeśli jest ktoś zainteresowany, mogę dopisać stosowne uzupełnienie.

    OdpowiedzUsuń