PostScript

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Postscript-code

PostScript is een paginabeschrijvingstaal (page description language of PDL), oftewel een programmeertaal om tekst en afbeeldingen op een apparaatonafhankelijke manier te beschrijven. Zo zou een PostScript-bestand in principe door iedere laserprinter hetzelfde geprint moeten worden.

PostScript-bestanden hebben meestal de extensie ps. Met programma's als Ghostview kan men deze bestanden bekijken. PostScript-bestanden zijn vaak aanzienlijk groter dan bijvoorbeeld PDF-bestanden, aangezien deze vooral afbeeldingen beter kunnen comprimeren. Aan de andere kant is PostScript een volwaardige programmeertaal, waarin het mogelijk is om een herhaling te specificeren, bijvoorbeeld 'teken 1000 keer dit plaatje', terwijl PDF dat niet kan, en daadwerkelijk 1000 keer dat plaatje zal moeten opnemen.

Ook bestaan er gratis tooltjes waarmee PostScript-bestanden omgezet kunnen worden naar PDF. Met een gratis 'PostScript-driver' is het mogelijk om vanuit ieder programma naar een PostScript-bestand te "printen".

De taal[bewerken]

PostScript is, net als Forth een stack-georiënteerde taal, dat wil zeggen dat alle argumenten van een operand stack komen en alle resultaten weer op dezelfde operand-stack terug worden geplaatst. De taal gebruikt postfixnotatie, bijvoorbeeld, om 5 - 4 uit te rekenen doet men 5 4 sub, dat wil zeggen, men zet 5 op de stack, dan 4, en trekt deze dan af, het resultaat (1) wordt dan teruggeplaatst op de stack.

Dit gebruik van de stack heeft als voordeel dat de interpreter zeer eenvoudig (en dus snel) kan zijn. Er bestaan printers die een ingebouwde PostScript-module hebben en zelf programma's kunnen uitvoeren en het resultaat afdrukken.

Voor wie er niet aan gewend is kan het lastig zijn om op deze manier te programmeren. Dit komt voornamelijk omdat de plaatsing van operanden niet erg intuïtief is en er geen enkele vorm van controle mogelijk is voor wat betreft procedure-aanroepen.

Variabelen worden opgeslagen in een dictionary of kortweg dict, wat in feite niet veel meer is dan een associatief array, waarin literals (letterlijk op te vatten woorden) de keys vormen. Deze dicts zijn ook weer georganiseerd in een stack, de dictstack, die van boven naar onder worden doorzocht. Deze indeling maakt PostScript erg flexibel en erg snel (voor een geïnterpreteerde taal).

De uitvoering van PostScript komt voor rekening van de RIP, de Raster Image Processor, meestal een vast onderdeel van de printer, hoewel ook RIP's bestaan die als programma op een afzonderlijke computer draaien (zoals Ghostview).

PostScript-versies[bewerken]

De functionaliteit van PostScript is tweemaal uitgebreid. De nieuwe versies zijn op een enkele uitzondering na compatibel met de oudere.

Level 1[bewerken]

De eerste versie PostScript verscheen in 1984.

Level 2[bewerken]

PostScript Level 2 verscheen in 1991. Het is een volledig compatibele uitbreiding van de specificatie, die sneller en betrouwbaarder werkt dan Level 1. Toegevoegd werd bijvoorbeeld ondersteuning voor ingebedde JPEG-afbeeldingen. Enkele functies werden toegevoegd met het oog op interactief gebruik met Display PostScript, met name de zogenaamde „Insideness Testing“, waarmee nagegaan kan worden of bijvoorbeeld een punt ("muisklik") binnen een "pad" ligt.

PostScript 3[bewerken]

Deze versie kwam uit in 1997. Adobe gebruikte niet meer de titel „Level“ maar een eenvoudigere: PostScript 3. De nadruk bij deze uitbreiding lag op een nieuw kleurenmodel, DeviceN, dat moet garanderen dat kleuren met de hoogst mogelijke nauwkeurigheid op alle apparatuur worden weergegeven. Verder zijn Hexachrome- en Duplex-ondersteuning toegevoegd voor de In-RIP-Separation. PostScript 3 is compatibel met Level 1 en 2 met uitzondering van de operator "copypage".

Afbeeldingen (EPS)[bewerken]

In plaats van hele pagina's of documenten kan PostScript ook gebruikt worden als afbeeldingsformaat (net als bijvoorbeeld JPEG of PNG). We spreken dan van Encapsulated PostScript (bestandsextensie eps).

Document Structure Conventions[bewerken]

De Document Structuring Conventions (DSC) is een standaard voor PostScript die de structuur van een bestand beschrijven in commentaarregels. Commentaar begint met "%" en DSC begint met "%%".

Er is geen betrouwbare manier om van tevoren te bepalen hoeveel pagina's een document bevat, of hoe groot een bepaalde pagina is, of hoe je naar een bepaalde pagina moet springen. Dit wordt veroorzaakt doordat PostScript een Turing-volledige programmeertaal is. De toevoeging van structuur en het toegankelijk maken daarvan met DSC-commentaarregels helpt andere programma's of printers om de pagina's in een andere volgorde te zetten, of uit te vinden hoe groot een pagina is (bijvoorbeeld voor het gebruiken van een PostScript-bestand als illustratie in een ander document). Programma's die dergelijke dingen doen worden "document manager" genoemd.

Enkele DSC-beschrijvingen hebben een tweede functie, nl. het aangeven aan "document managers" dat een lettertype of andere PostScript-programmatuur ("resources" genoemd) moet worden toegevoegd.

DSC is de basis van "encapsulated PostScript" (EPS), waarvoor, naast het vereist zijn van DSC, nog meer restricties gelden.

Een voorbeeld van een PostScript-programma[bewerken]

%!
/Courier findfont    % Lettertype selecteren,
20 scalefont         % lettergrootte instellen op 20 punten
setfont              % en instellen als het te gebruiken lettertype
50 50 moveto         % (50, 50) instellen als startpositie op de pagina voor het afdrukken van tekst
(Hallo Wereld!) show % en daar de tekst neerzetten
showpage             % en de pagina afdrukken / weergeven

Dit programma schrijft „Hallo Wereld!“ in de linkeronderhoek van een pagina.

Een voorbeeld van DSC[bewerken]

Een document met DSC-structuur kan zo beginnen (dit voorbeeld komt uit dvips):

%!PS-Adobe-2.0
%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
%%Title: texput.dvi
%%Pages: 1
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentPaperSizes: Letter
%%EndComments

De betekenis is:

  • %!PS-Adobe-2.0 - (op de eerste regel) geeft aan dat het document voldoet aan versie 2 van de DSC-conventies
  • %%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software - geeft de naam van het programma dat de PostScript-code heeft gegenereerd (in dit geval "dvips 5.95a")
  • %%Title: texput.dvi - geeft de naam van het document
  • %%Pages: 1 - geeft aan dat het document 1 pagina bevat
  • %%PageOrder: Ascend - geeft aan dat de pagina's onafhankelijk zijn (m.a.w. niet in een bepaalde volgorde hoeven staan) en in oplopende volgorde in het document staan. In dit voorbeeld met slechts één pagina is dat niet van belang, maar als extra bladzijden moeten worden toegevoegd door een "document manager" wordt het weer wel belangrijk
  • %%BoundingBox: 0 0 612 792 - geeft de coördinaten (in PostScript-punten) van de omhullende rechthoek ("bounding box") van alle pagina's; 0 0 612 792 is correct voor een pagina van het Amerikaanse formaat "letter".
  • %%DocumentPaperSizes: Letter - geeft aan wat voor papiermaten in het document worden gebruikt. In dit voorbeeld is dat alleen US Letter.
  • %%EndComments - geeft het einde van de "proloog" aan

Zie ook[bewerken]

  • PCL - een Page Description Language (PDL)

Externe links[bewerken]

Literatuur[bewerken]