24, ciekawostki, Linux - Ksiega Eksperta, Linux - ksiega eksperta, Linux - księga eksperta


Rozdział 24.
Ghostscript i Ghostview


Tim Parker

W tym rozdziale:

PostScript to popularny język opisu strony (ang. Page Description Language, PDL), używany przez wiele aplikacji. Jedną z jego podstawowych zalet jest fakt, że plik w formacie postscriptowym może zostać wydrukowany na każdej drukarce obsługującej go, bez względu na system operacyjny czy model drukarki. Pozwala to na stworzenie jednej wersji pliku zamiast tworzenia oddzielnej wersji dla drukarek HP LaserJet, drugiej dla urządzeń Epson itd.

Z punktu widzenia użytkownika Linuxa, głównym problemem jest fakt, że nazwa PostScript została zastrzeżona przez firmę Adobe Systems, Inc. Z tego powodu wersja tego języka dla Linuxa nazywa się Ghostscript. Jak można się domyślić, język ten jest prawie identyczny z językiem PostScript, ale jego dystrybucja nie jest ograniczona prawami autorskimi, związanymi z tym opłatami itd. W zasadzie Ghostscript również jest objęty prawem autorskim jego twórców, ale postanowili oni zezwolić na rozprowadzanie go na warunkach licencji GNU, dzięki czemu jest dostępny dla wszystkich użytkowników.

0x01 graphic

Właścicielem praw autorskich do języka Ghostscript jest firma Aladdin Enterprises. Jeśli interesuje Cię uzyskanie licencji na programy użytkowe, powinieneś się z nią skontaktować; podajemy więc adres:

Aladdin Enterprises, P.O. Box 60264, Palo Alto, CA 94306;
e-mail: ghost@aladdin.com.

Większość aplikacji potrafi generować pliki w formacie Ghostscript. Program o nazwie Ghostview pozwala je oglądać, dzięki czemu możesz ocenić efekty swojej pracy przed ich wydrukowaniem. Ghostscript to w zasadzie cały pakiet programów. W tym rozdziale zajmiemy się tylko interpreterem języka PostScript oraz funkcjami języka C, które mogą zostać dołączone do kodu tworzonego programu wzbogacając go o możliwość generowania plików postscriptowych.

Skąd można wziąć Ghostscript?

Ghostscript jest dostarczany z większością dystrybucji Linuxa. Jest częścią zestawu dysków AP (ang. applications). Jeśli zdecydowałeś się zainstalować ten zestaw (większość użytkowników instaluje go), Ghostscript jest gotowy do użycia w Twoim systemie. Jeśli nie instalowałeś oprogramowania z zestawu AP, możesz zrobić to w każdej chwili, wybierając z oprogramowania zawartego w tym zestawie tylko pakiet Ghostscript.

Jeśli nie wiesz, czy Ghostscript został zainstalowany, musisz poszukać odpowiednich plików wykonywalnych i bibliotek ręcznie, ponieważ różne wersje Linuxa instalują je do różnych katalogów. Najłatwiej poszukać pliku wykonywalnego o nazwie gs za pomocą polecenia find:

find / -name gs -print

Jeśli został on znaleziony (najprawdopodobniej w katalogu /usr/bin), oznacza to, że pakiet Ghostscript najprawdopodobniej został zainstalowany. Liczba plików instalowanych z pakietem Ghostscript różni się w zależności od wersji oprogramowania, ale działająca instalacja powinna na pewno zawierać pliki:

bdftops.ps
decrypt.ps
font2c.ps
gs_dbt_e.ps
gs_dps1.ps
gs_fonts.ps
gs_init.ps
gs_lev2.ps
gs_statd.ps
gs_sym_e.ps
gs_type0.ps
gslp.ps
impath.ps
landscap.ps
level1.ps
prfont.ps
ps2ascii.ps
ps2epsi.ps
ps2image.ps
pstoppm.ps
quit.ps
showpage.ps
type1ops.ps
wrfont.ps
uglyr.ps
Fontmap

Zwykle pliki te przechowywane są w katalogu /usr/lib/ghostscript lub /usr/share/ ghostscript. Czasem również do nazwy katalogu dołączany jest jeszcze numer wersji, co dodatkowo komplikuje problem. Również w tym przypadku najłatwiej odnaleźć potrzebne pliki poleceniem find, np.

find / -name gs_statd.ps -print

W powyższym przykładzie polecenie find będzie próbowało odnaleźć plik gs_statd.ps, który powinien być częścią każdej instalacji Ghostscript. Znajduje się on przeważnie w katalogu /usr/lib/ghostscript, ale w niektórych systemach może być przechowywany w katalogu /usr/share. Oto wynik działania podanego wcześniej polecenia w systemie Caldera OpenLinux:

[root@linux /root]# find / -name gs_statd.ps -print
/usr/share/ghostscript/3.33/gs_statd.ps

W tym przypadku pliki pakietu Ghostscript znajdują się w katalogu /usr/share/ ghostscript/3.33. Aby sprawdzić, czy wszystkie potrzebne pliki są obecne w systemie, obejrzyj zawartość katalogu, w którym znajduje się plik odnaleziony przez polecenie find. Jeśli Ghostscript jest zainstalowany, powinieneś uzyskać efekt jak na rysunku 24.1

Rysunek 24.1.

Zawartość katalogu pakietu Ghostscript

0x01 graphic

Wraz z pakietem Ghostscript dostarczana jest również spora ilość czcionek. Są one zwykle umieszczane w jednym z podkatalogów głównego katalogu pakietu, na przykład

/usr/share/ghostscript/fonts.

Jeśli Twoja dystrybucja nie zawierała pakietu Ghostscript, możesz go załadować z każdej ze stron WWW i węzłów FTP udostępniających Linuxa. Ich adresy możesz znaleźć m.in. w rozdziale 2. „Rodzaje Linuxa”. Pakiet Ghostscript rozprowadzany jest również przez firmę Aladdin Enterprises.

Pakiet Ghostscript

Głównym programem pakietu Ghostscript jest gs, interpreter języka Ghostscript. Wczytuje on zadane pliki i wyświetla w oknie systemu X efekt ich sformatowania. Uruchamianie programu gs w trybie tekstowym nie ma większego sensu, ponieważ do obejrzenia efektów i tak niezbędne jest okno graficzne.

Aby wyświetlić w oknie X sformatowany plik Ghostscript, wydaj polecenie gs, podając jako parametr nazwę pliku, który chcesz obejrzeć (pliki Ghostscript mają zwykle rozszerzenie .ps):

gs plik1.ps

Możesz podać więcej niż jedną nazwę pliku, wówczas będą one wyświetlane kolejno, jeden po drugim. Po wydaniu takiego polecenia pojawi się informacja Initializing..., po której wyświetlona zostanie spora ilość komunikatów pochodzących od interpretera języka Ghostscript, a następnie otwarte zostanie okno zawierające wynik przetworzenia pliku postscriptowego. Na rysunku 24.2 przedstawione są komunikaty wyświetlane po wydaniu polecenia gs, natomiast na rysunku 24.3 - okno zawierające sformatowany dokument.

Rysunek 24.2.

Po wydaniu polecenia gs wyświetlanych jest kilka informacji o programie

0x01 graphic

Jeśli chcesz zapobiec wyświetlaniu komunikatów przez interpreter języka Ghostscript (jak na rysunku 24.2), możesz użyć opcji -q (ang. quiet) - wówczas wyświetlane będą tylko najważniejsze informacje.

Polecenie gs opisane jest na stronach man, które niestety są napisane w dość nieprzystępny sposób. Możesz również uzyskać odpowiednie informacje, wydając polecenie gs -h lub gs -?. Ponieważ wyświetlana jest dość spora ilość danych, skieruj wyjście tego polecenia do pliku lub użyj programu more, np.:

gs -h | more

Rezultat wydania tego polecenia przedstawiony jest rysunku 24.4. Jeśli chcesz obejrzeć następną stronę, wciśnij spację. Aby opuścić program more, wciśnij q lub Control+C.

Rysunek 24.3.

Ghostscript pozwala na wyświetlenie w oknie X sformatowanego dokumentu postscriptowego

0x01 graphic

Rysunek 24.4.

Do wyświetlenia informacji o programie gs warto wykorzystać polecenie more

0x01 graphic

Konfigurowanie pakietu Ghostscript do współpracy z X

Niektóre (ale niestety nie wszystkie) wersje Linuxa są tak skonfigurowane, że system X potrafi od razu obsługiwać wyświetlanie okien zawierających efekty działania interpretera języka Ghostscript. Ghostscript używa zasobów systemu X zdefiniowanych w pliku .Xdefaults, w klasie Ghostscript. Plik .Xdefaults powinien zawierać co najmniej trzy wpisy dotyczące interpretera Ghostscript:

Ghostscript*geometry: -0+0
Ghostscript*xResolution 72
Ghostscript*yResolution 72

Jeśli ich tam nie ma, użyj edytora tekstu i wprowadź je, po czym zrestartuj serwer X albo przeładuj zasoby systemowe. Można to zrobić (jeśli bieżącym katalogiem jest katalog domowy) wydając polecenie:

xrdb -merge ./.Xdefaults

Ghostscript może używać jeszcze wielu innych zasobów zdefiniowanych w pliku .Xdefaults, ale definiowanie ich nie jest konieczne, ponieważ wartości domyślne sprawują się całkiem dobrze. Zebrano je w tabeli 24.1.

Tabela 24.1. Zasoby systemu X używane przez Ghostscript

Nazwa zasobu

Klasa

Domyślna wartość

background

Background

white

foreground

Foreground

black

borderColor

BorderColor

black

borderWidth

BorderWidth

1

geometry

Geometry

NULL

xResolution

Resolution

calculated

yResolution

Resolution

calculated

useExternalFonts

UseExternalFonts

true

useScalableFonts

UseScalableFonts

true

logExternalFont

LogExternalFont

false

externalFontTolerance

ExternalFontTolerance

10.0

palette

Palette

Color

maxGrayRamp

MaxGrayRamp

128

maxRGBRamp

maxRGBRamp

5

useBackingPixmap

UseBackingPixmap

true

useXPutImage

UseXPutImage

true

useXSetTile

UseXSetTile

true

regularFonts

RegularFonts

none

symbolFonts

SymbolFonts

none

dingbatFonts

DingbatFonts

none

Przekierowanie wyjścia programu Ghostscript

Ghostscript jest bardzo elastyczny, jeśli chodzi o przekierowanie wyjścia do innych urządzeń. Używając argumentów wywołania, można skierować dane do urządzenia takiego jak drukarka za pomocą opcji -sDEVICE. Przykładowo, jeśli w Twoim systemie zainstalowane jest urządzenie o nazwie HPLaser, możesz skierować do niego dane wyjściowe poleceniem:

gs -sDEVICE=HPLaser plik.ps

W takim przypadku nie zobaczysz efektów działania interpretera w oknie graficznym. Możesz oczywiście wydrukować jednocześnie kilka plików, np.:

gs -sDEVICE=HPLaser plik.ps plik1.ps plik2.ps

Przekierowanie obowiązuje do momentu zakończenia działania programu gs. Jeśli urządzenie, do którego próbujesz skierować dane, nie istnieje, gs zakończy działanie z komunikatem unknown device. Listę dostępnych urządzeń możesz obejrzeć, wydając polecenie

gs -h

Jak widać na rysunku 24.4, Ghostscript potrafi obsłużyć dość dużo typów urządzeń.

Kolejność parametrów ma znaczenie dla programu gs; przykładowo, polecenie

gs plik.ps plik1.ps -sDEVICE=HPLaser plik2.ps

powoduje wydrukowanie tylko pliku plik2.ps, wyświetlając pliki o nazwach plik.ps oraz plik1.ps na ekranie.

Możesz również wysyłać różne pliki do różnych urządzeń, na przykład tak:

gs -sDEVICE=CanonBJet plik.ps plik1.ps -sDEVICE=HPLaser plik2.ps

Powyższe polecenie spowoduje wydrukowanie pliku plik.ps na drukarce o nazwie CanonBJet, natomiast plik plik2.ps zostanie wydrukowany na drukarce HPLaser. W większości przypadków łatwiej jest jednak wydać dwa osobne polecenia, co pozwala również uniknąć pomyłek.

Ghostscript umożliwia modyfikowanie efektów swojego działania. Jeśli posiadasz jedną ze starszych drukarek igłowych pozwalających określać rozdzielczość drukowanego dokumentu (na przykład dla wydruków próbnych i końcowych), możesz za pomocą odpowiednich opcji wybrać jedną z rozdzielczości. Aby wydrukować dokument na 24-igłowej drukarce Epson, używając najwyższej możliwej rozdzielczości, wydaj polecenie:

gs -sDEVICE=Epson -r360x180

Jeśli z jakiegoś powodu chcesz odłożyć drukowanie dokumentu na później, możesz efekty działania interpretera zapisać do pliku:

gs -sOutputFile out1.ps plik1.ps plik2.ps

Choć w systemie Linux można zamiast podanych wyżej opcji użyć przekierowania wejścia i wyjścia, zostały one wprowadzone z myślą o systemach, które nie mają takich możliwości.

Zmiana rozmiaru papieru

Domyślnie Ghostscript używa rozmiarów papieru podanych w pliku gs_statd.ps. W pliku tym zdefiniowanych jest kilkadziesiąt różnych formatów, zgodnych z normami europejskimi i amerykańskimi. Aby użyć rozmiaru innego niż domyślny, należy podać opcję -sPAPERSIZE, np. aby użyć formatu A4, wydaj polecenie:

gs -sPAPERSIZE=a4 -sDEVICE=HPLaser plik1.ps

Jeśli rozmiar papieru, którego chcesz użyć, nie jest zdefiniowany w pliku gs_stats.ps, musisz zmodyfikować któryś z istniejących w nim wpisów lub utworzyć nowy.

0x01 graphic

Czasem zmiana rozmiaru papieru przez podanie opcji -sPAPERSIZE nie daje rezultatu, ponieważ język PostScript (a więc i Ghostscript) umożliwia osadzenie polecenia określającego rozmiar papieru w dokumencie. Polecenie takie ma pierwszeństwo przed parametrem podanym w wierszu poleceń. Jedynym sposobem rozwiązania problemu jest wówczas modyfikacja pliku postscriptowego.

Zmienne środowiskowe programu Ghostscript

Do modyfikowania zachowania programu Ghostscript można również wykorzystać zmienne środowiskowe. Zmienne używane przez ten interpreter wraz z opisem ich funkcji zebrano w tabeli 24.2.

Tabela 24.2. Zmienne używane przez Ghostscript

Zmienna

Znaczenie

GS_DEVICE

Domyślne urządzenie wyjściowe

GS_FONTPATH

Lista katalogów, w których należy szukać czcionek

GS_LIB

Ścieżka przeszukiwania dla plików inicjalizacyjnych i czcionek; poszczególne katalogi oddzielane są dwukropkami

GS_OPTIONS

Lista argumentów, która będzie przetwarzana przed argumentami podanymi w wierszu poleceń przy wywołaniu programu

TEMP

Katalog, w którym przechowywane będą pliki tymczasowe

Zmienna GS_OPTIONS może zostać użyta do modyfikacji działania interpretera Ghostscript. Można na przykład w jej definicji zawrzeć opcję GS_DEVICE z nazwą drukarki, dzięki czemu wyniki działania interpretera będą domyślnie kierowane na drukarkę. Zmienna GS_OPTIONS może zawierać zarówno argumenty, jak i opcje.

Zmienna TEMP wskazuje zwykle na katalog /tmp, ale można to oczywiście zmienić. Pliki tymczasowe tworzone przez Ghostscript mają nazwy rozpoczynające się od gs_. Niestety, pliki te nie zawsze są prawidłowo usuwane, więc powinieneś co jakiś czas usuwać je ręcznie, szczególnie jeśli intensywnie używasz programu gs.

Ghostview

Ghostview to program służący do wyświetlania plików postscriptowych na ekranie. Napisany został przez Tima Theisena i jest dostępny za darmo w Internecie i na płytach CD-ROM. Do opracowania danych używa interpretera Ghostscript, ale nie wymaga, by był on wcześniej zainstalowany w systemie.

Ghostview jest bardzo łatwy w obsłudze. Aby wyświetlić zawartość pliku rozdz1.ps, wydaj polecenie

ghostview rozdz1.ps

Większość użytkowników zmienia nazwę tego programu (albo tworzy odpowiedni alias) na gv, co jest o wiele wygodniejsze do wpisania niż jego pełna nazwa. Jeśli na przykład używasz powłoki tcsh, możesz wydać polecenie:

alias gv ghostview

które spowoduje utworzenie aliasu o nazwie gv, wskazującego na program ghostview.

Przykładowa zawartość okna głównego programu gv przedstawiona jest na rysunku 24.5.

Rysunek 24.5.

Okno główne programu ghostview

0x01 graphic

Obsługa programu ghostview

Jak widać na rysunku 24.5, sformatowana zawartość pliku postscriptowego wyświetlana jest w taki sam sposób, jak miało to miejsce przy zastosowaniu interpretera Ghostscript (ponieważ program Ghostview wywołuje program Ghostscript, aby opracować dane zawarte w pliku wejściowym). Pasek po prawej pozwala na przesuwanie oglądanego dokumentu, można również kliknąć na odpowiednim numerze, by przejść do wybranej strony.

W oknie programu znajduje się również kilka przycisków. Oto funkcje niektórych z nich.

ghostview jest programem łatwym i przyjemnym w obsłudze. W górnej części okna wyświetlana jest informacja o tytule dokumentu (jeśli został on zdefiniowany) lub o nazwie wyświetlanego pliku, informacja o wersji programu oraz data utworzenia dokumentu. Data określana jest na podstawie danych zapisanych w samym dokumencie lub na podstawie daty ostatniej modyfikacji wyświetlanego pliku.

0x01 graphic

Jedną z cech programu ghostview, która może Cię nieco zdziwić, jest sposób, w jaki strony są wyświetlane po pomniejszeniu lub powiększeniu okna. Po zminimalizowaniu, ghostview przechowuje wszystkie dane w pamięci, ale przy ponownym powiększeniu okna najpierw sprawdza, czy plik nie został zmieniony. Może to wprowadzić pewne opóźnienie, szczególnie w przypadku dużych plików. Jest to wbrew pozorom efekt zamierzony (za wyjątkiem opóźnienia), ponieważ pozwala na wyświetlanie zawsze aktualnej wersji pliku.

Oprócz przycisków dostępnych w oknie programu ghostview, dostępnych jest również mnóstwo opcji podawanych w wierszu poleceń. Służą one głównie do zmiany konfiguracji zasobów systemu X Window lub modyfikacji zmiennych konfiguracyjnych i są omówione dokładniej w dokumentacji programu Ghostview.

Czcionki Ghostview

Wraz z programem Ghostview rozprowadzane są czcionki PostScript typu 1 i 3, które powinny wystarczyć do wyświetlenia i wydrukowania każdego dokumentu, z którym się zetkniesz. Można również dodać inne czcionki, wzbogacając w ten sposób możliwości programu. Powinny one zostać umieszczone w katalogu, w którym znajdują się pozostałe czcionki, czyli np.

/usr/share/ghostscript/3.33/fonts.

Aby czcionki były prawidłowo rozpoznawane, należy również zmodyfikować zawartość pliku Fontmap. Format wpisów w tym pliku jest prosty, wymaga tylko podania nazwy czcionki i pliku, w którym można znaleźć jej definicję, np.:

smiesznaczcionka (fun_fnt.pfb);

Zasoby X używane przez Ghostview

Zasoby używane przez Ghostview różnią się od tych używanych przez Ghostscript. Zebrano je w tabeli 24.3.

Tabela 24.3. Zasoby systemu X używane przez ghostview

Nazwa zasobu i opis

Klasa

Domyślna wartość

showTitle - wyświetlanie tytułu

Labels

true

showDate - wyświetlanie daty

Labels

true

showLocator - wyświetlanie informacji o lokalizacji

Labels

true

autoCenter - centrowanie strony w oknie
za każdym razem, gdy zmienia się rozmiar okna

AutoCenter

true

horizontalMargin - ile punktów przeznaczyć
na margines poziomy

Margin

20

verticalMargin - ile punktów przeznaczyć
na margines pionowy

Margin

44

minimumMagstep - najmniejsze dostępne powiększenie

Magstep

-5

maximumMagstep - największe dostępne powiększenie

Magstep

5

magstep - powiększenie domyślne

Magstep

0

orientation - domyślna orientacja strony

Orientation

Portrait

page - numer strony, którą należy domyślnie wyświetlić

Page

pageMedia - domyślny rodzaj papieru

PageMedia

Letter

forceOrientation - wymuszenie orientacji dokumentu

Force

false

forcePageMedia - wymuszenie rodzaju papieru

Force

false

Tabela 24.3. cd. Zasoby systemu X używane przez ghostview

Nazwa zasobu i opis

Klasa

Domyślna wartość

swapLandscape - zamiana znaczenia parametrów Landscape i Seascape

SwapLandscape

false

printCommand - polecenie używane do drukowania

PrintCommand

printerVariable - nazwa zmiennej zawierającej
informacje o drukarce

PrinterVariable

PRINTER

busyCursor - kursor pokazywany
podczas odświeżania okna

Cursor

cursor - domyślna postać kursora

Cursor

cross hair

safer - czy uruchamiać program
w „bezpieczniejszym” trybie

Safer

true

Podsumowanie

W tym rozdziale zapoznaliśmy się z programami Ghostscript i Ghostview, narzędziami przeznaczonymi do obsługi plików postscriptowych. Możliwość obejrzenia zawartości pliku postscriptowego bez konieczności jego drukowania jest w praktyce bardzo przydatna, dlatego Ghostview jest jednym z częściej używanych programów w systemach UNIX-owych (czyli również w systemie Linux).

Proces konfigurowania drukarki w systemie linuxowym opisany jest w rozdziale 20. „Drukowanie”.

O programowaniu w systemie Linux mówi część piąta, począwszy od rozdziału 25. „gawk”.

Konfigurowanie różnych urządzeń, w tym drukarek, opisane jest w rozdziale 33. „Urządzenia”.

406 Część IV Graficzne interfejsy użytkownika

406 E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\24.DOC

E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\24.DOC 405

Rozdział 24. Ghostscript i Ghostview 405



Wyszukiwarka