Att fixa till felaktiga PS-filer

Konstigt nog tycker inte alla att PS är roligt, men man behöver ändå fixa till lite saker i en PS-fil. Det kan t.ex. vara så att ett ritprogram producerar PS-filer med fel skala eller fel läge för bilden. I dessa fall är det ofta mycket enkelt att fixa till utskriften så att den blir bra. Det är i första hand följande kommandon som är användbara för detta:
 
xval yval scale %För att skala om bilden i x- och y-led.
xtrans ytrans translate %För att flytta bilden i x- och y-led.
vinkel rotate %För att rotera bilden med vinkeln "vinkel" grader moturs.
statusdict begin a3tray end %För att styra om till utskrift på A3-papper.
statusdict /manualfeed true put %För att manuellt mata in papper i skrivaren, t.ex. kuvert.

Allmänt

PS bygger upp texten och bilderna i ett koordinatsystem med origo längst nere till vänster på sidan, man kan uttrycka det matematiskt som att man arbetar i första kvadranten. Alla avstånd räknas i punkter. En punkt är så stor att det får plats 72 punkter på en tum, dvs 72 dpi (dots per inch). Det betyder att det går ungefär 2.8346 punkter på en millimeter (72 / 25.4), eller 0.3528 mm per punkt (25.4 / 72).

De kommandon som beskrivs i detta avsnitt kan skrivas in med valfri texteditor i början av PS-filen, men inte först. Först i PS-filen finns nämligen alltid en textsträng (en rad) som anger att det är en PS-fil. Strängen ser ut så här:
 
%!PS-Adobe

Strängen innehåller ofta mer text som inte är nödvändig.

Vissa ritprogram kan lägga in egenhändigt konstruerade "headers" och "trailers" i början respektive slutet av en utskriftfil. Detta är för att anpassa utskrifterna till egna förhållanden. Om man lägger till en "header" till en PS-fil är det oftast nödvändigt att även lägga till %!PS-Adobe längst upp. Det spelar ingen roll att den gamla startsträngen ligger kvar på sin ursprungliga plats. En typisk PS-fil med "header" inlagd kan då se ut så här i början:
 
%!PS-Adobe
90 rotate
594 0 translate
%!PS-Adobe
......

De olika kommandona som presenteras här kan anges i vilken inbördes ordning som helst. Om man skall ändra en hel sida är det emellertid enklast att börja med att rotera, sedan skala om bilden och till sist flytta den till rätt plats på sidan.

PS använder "omvänd polsk notation", vilket betyder att man alltid skriver in argumenten först, och sedan operatorn. Argument är de tal som skall användas, och operator är det kommando som beskriver vad som skall göras.

Koordinatsystem


För förståelsen av PostScript är en viss insikt i hur koordinatsystem fungerar, helt nödvändigt. PS har i princip två koordinatsystem, papperets och ditt eget som du själv styr över. Båda koordinatsystemen är kartesiska, vilket betyder att det är koordinatsystem som ser ut som de flesta tycker att koordinatsystem skall se ut. De är dessutom tvådimensionella, de har en x-axel och en y-axel.

Det som går att ändra vid utkriften är bildens plats och vinkel på papperet. Papperets plats ges ju av skrivaren, och går inte att göra så mycket åt. I figuren till höger visas papperet med grönt, papperets koordinatsystem med blått, och användarens koordinatsystem med rött. Det enda du kan ändra på är det röda koordinatsystemet, allt annat ligger fast för gott. De röda koordinatsystemet kan du å andra sidan göra nästan vad som helst med, t.ex. flytta, skala om och rotera.

Siffrorna som angivits i figuren avser de fyra kvadranterna. Det går inte att visa något utanför första kvadranten i papperets koordinatsystem, men i ditt eget koordinatsystem kan alla kvadranter visas. I figuren har till exempel fjärde kvadranten i ditt koordinatsystem kommit in lite i papperets första kvadrant.

Om du klickar på figuren kan du hämta hem PS-filen som ligger till grund för bilden på koordinatsystemet. Där kan man se att jag har valt bildens origo som origo även för mitt koordinatsystem. När bilden ritats färdigt har jag flyttat in den så att mitt origo ligger en bit in på papperet.

Rotering

Bilden kan roteras på papperet med kommandot:
 
vinkel rotate

"vinkel" skall bytas ut mot ett tal som anger vinkeln. Vinkeln anges på matematiskt korrekt sätt, dvs moturs vridning av ditt koordinatsystem fås genom ett positivt värde på vinkeln. Däremot (som tur är) anges vinkeln i grader, vilket kan anses som matematiskt tveksamt. Normalt anges ju vinklar i radianer.

Skalning

Man kan skala om en bild med kommandot:
 
xval yval scale

xval och yval byts ut till tal som anger hur objektet skall skalas i respektive riktning. Man kan alltså skala objektet olika i X och Y-led. "Objektet" är den del som skall förändras i storlek, det kan vara en hel sida eller en del av sidan. Om "xval" och "yval" är större än 1, blir resultatet en förstoring, skalfaktorer mindre än 1 ger förminskning.

Om man skall skala om från A4 till A3 ser det ut så här:
 
1.414 1.414 scale

Ett A3-papper har ju dubbelt så stor yta som ett A4-papper, men sidorna är bara cirka 1.414 gånger längre (kvadratroten ur 2 är ungefär 1.414).
 

Förflyttning

Bilden kan förflyttas i godtycklig riktning med kommandot:
 
xtrans ytrans translate

xtrans och ytrans är tal som anger hur mycket ditt koordinatsystem skall flyttas i x- respektive y-led i förhållande till papperets kordinatsystem. Med kommandot:
 
283 142 translate

flyttar man bilden 10 cm (283 punkter) åt höger, och 5 cm (142 punkter) uppåt på papperet. Papperet ligger still och bilden förflyttas.

Om man vill slippa ange alla mått i punkter, kan man skriva följande definition i början av PS-filen:
 
/mm { 2.83 mul } def

eller mer exakt:
 
/mm { 72 mul 25.4 div } def

Man har då definierat "mm" att multiplicera talet till vänster med 2.83. Då kan förflyttningen skrivas på följande sätt:
 
100 mm 50 mm translate

Problemlösning

För det första, använd alltid ett program för att kunna se resultatet på bildskärmen inan du skriver ut det. På det viset kan man spara papper samtidigt som man slipper springa till printern flera gånger för att hämta blad som fått fel utskrift. Lämpligt program för detta är GhostView.

Ta alltid en sak i taget när du skriver PS. Börja med att skriva minimalt med rader och kolla att det funkar, fyll sedan på med mera.

Ibland när bilden har roterats kan den försvina så att den inte syns på sidan. En vanlig orsak till detta är att bilden inte ligger i första kvadranten på papperet. Prova då att rotera lite mindre, t.ex. bara 30 grader.

Om man får felutskrifter i GhostView är det ofta mycket svårt att tyda dem. Man kan då sätta in ett %-tecken först på alla rader som kan vara fel. Om felet försvinner vet man var felet finns någonstans.

Hem