Rozdział 24.Ghostscript i Ghostview
Tim Parker
W tym rozdziale:
* Skąd można wziąć Ghostscript?
* Pakiet Ghostscript
* 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.
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
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
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
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.
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
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.
* Obsługa plików (File)
pozwala na odczytanie pliku, przeładowanie pliku
z dysku, zakończenie działania programu i wyświetlenie informacji o prawach
autorskich.
* Opcje strony (Page)
w menu rozwijanym po naciśnięciu tego przycisku
znajdują się polecenia służące do poruszania się w obrębie dokumentu,
odświeżania zawartości ekranu, zaznaczenia lub usunięcia zaznaczenia bieżącej
strony itp.
* Skala (1.000)
po naciśnięciu tego przycisku można wybrać topień
powiększenia wyświetlanego dokumentu.
* Orientacja (Portrait)
pozwala zmienić orientację wyświetlanego dokumentu
(Portrait
pionowa, Landscape
pozioma).
* Rozmiar papieru (BBox)
pozwala zmienić wielkość strony.
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.
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".
Wyszukiwarka
Podobne podstrony:
wykład 13 24 1 13III CZP 24 1313 24 Styczeń 2000 Jak na wiejskiej strzelnicypoematy m1 komory 13 24pytania 13 2413 (24)KNR 13 242010 05 07 13;50;24dictionary 13 2424 kijekUAS 13 zaowięcej podobnych podstron