E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\24.DOC 405
Rozdzia³ 24. ¨ Ghostscript i Ghostview 405
Tim Parker
W tym rozdziale:
u Skąd można wziąć Ghostscript?
u Pakiet Ghostscript
u Ghostview
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.
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.
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.psdecrypt.psfont2c.psgs_dbt_e.psgs_dps1.psgs_fonts.psgs_init.psgs_lev2.psgs_statd.psgs_sym_e.psgs_type0.psgslp.psimpath.pslandscap.pslevel1.psprfont.psps2ascii.psps2epsi.psps2image.pspstoppm.psquit.psshowpage.pstype1ops.pswrfont.psuglyr.psFontmap
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
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.
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
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
Rysunek 24.4.
Do wyświetlenia informacji o programie gs warto wykorzystać polecenie more
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+0Ghostscript*xResolution 72Ghostscript*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
borderWidth
BorderWidth
1
geometry
Geometry
NULL
xResolution
Resolution
calculated
yResolution
useExternalFonts
UseExternalFonts
true
useScalableFonts
UseScalableFonts
logExternalFont
LogExternalFont
false
externalFontTolerance
ExternalFontTolerance
10.0
palette
Palette
Color
maxGrayRamp
MaxGrayRamp
128
maxRGBRamp
5
useBackingPixmap
UseBackingPixmap
useXPutImage
UseXPutImage
useXSetTile
UseXSetTile
regularFonts
RegularFonts
none
symbolFonts
SymbolFonts
dingbatFonts
...
osyrius