PostScript is een printertaal waarin het feit dat een moderne printer in feite een gespecialiseerde computer is, grondig wordt uitgebuit. De nadruk ligt niet langer op de af te drukken tekst, maar op de manier waarop het afdrukken gebeurt. Een 'klassiek' printbestand bestaat uit de af te drukken tekst en hier en daar een codetje om een stuk tekst een speciaal uiterlijk te geven. Iemand die per se wil, zou dit een programma kunnen noemen: een serie instructies voor een printer waarin gespecificeerd wordt wat waar en hoe moet worden afgedrukt. Een beetje vergezocht is dat wel.
Moderne tekstverwerkers willen veel meer greep hebben op de manier waarop de teksten worden afgedrukt dan in klassieke printertalen mogelijk was. Gaandeweg zijn deze talen dan ook uitgebreid met steeds meer codes voor steeds meer mogelijkheden. We zien dan ook dat de tekstverwerker tegenwoordig een hoeveelheid codes naar de printer stuurt die vaak een veelvoud van de tekst zelf is, een printbestand is steeds meer een echt programma.
De taal PostScript is direct al ontworpen als programmeertaal, vergelijkbaar met Basic, Fortran, Pascal of C. In deze taal kan vrijwel elke denkbare computeropdracht worden weergegeven, in leesbare standaard ASCII-tekens, net als bij andere programmeertalen.
Een Postscriptprinter (die deze taal dus kent) leest het programma en voert het uit. Vanzelfsprekend biedt de taal vooral krachtige voorzieningen voor allerlei afdrukmogelijkheden, maar je kunt de printer ook je financiële administratie laten doen.
Kracht
Het belangrijkste voordeel van een printertaal die als programmeertaal is ontworpen is de kracht. In PostScript kunnen bijvoorbeeld berekeningen worden gemaakt, dingen worden herhaald, keuzen worden gemaakt tussen verschillende wijzen van afdrukken. Een PostScript-programma gegevens die in de printer aanwezig zijn opvragen.
Enkele voorbeelden die in een andere printertaal moeilijk te verwezenlijken zouden zijn:
- een bepaald lettertype gebruiken als de printer het kent en anders een ander lettertype toepassen, maar dan bijv. ook andere marges;
- een aantal ingewikkelde figuren afdrukken en de printer laten bepalen hoeveel tijd dat kost;
- in plaats van één pagina per vel, vier verkleinde pagina's, waarvan sommige op de kop, op elk vel afdrukken (gebruikelijk bij drukkerijen);
- een foto met een bepaald effect afdrukken: rasterpuntjes langwerpig of stervormig, krorreliger of juist niet, eventueel negatief; een lijst van aanwezige lettertypen in een zelf gekozen opmaak afdrukken.
Bij Adobe beweren ze dat je in PostScript vrijwel alles kunt programmeren wat in C mogelijk is.
Uniformiteit
PostScriptdocumenten hebben op elke (PostScript-)printer dezelfde opmaak, slechts de kwaliteit van de afdruk verschilt. Hiervoor is het wel nodig dat de gebruikte lettertypen aanwezig zijn op beide printers. Bij de gebruikelijke 35 standaardlettertypen is dat zelden een probleem. Dit maakt het ons bijvoorbeeld mogelijk een proefafdruk van ons blad Intercom te maken die slechts in de scherpte verschilt van de fotosetterafdruk die u ontvangt.
Lettertypen
Door Adobe (en inmiddels ook door anderen) zijn zeer veel kwalitatief hoogwaardige lettertypen ontwikkeld voor PostScript, de zogenaamde Type 1 fonts. Vele hiervan zijn electronische versies van in de grafische wereld gangbare (loden) lettertypen. Deze fonts zijn schaalbaar op iedere grootte en 'hinted', dat wil zeggen dat het model automatisch wordt aangepast aan de corpsgrootte en de afdrukkwaliteit van de printer. Door namelijk op onverwachte plaatsen een 'dotje' toe te voegen of weg te laten kan de kwaliteit van een klein lettertje op een matige printer er toch nog redelijk uitzien.
De meeste PostScriptprinters bevatten standaard zo'n 35 van deze fonts, maar er zijn er ook met honderden. Desgewenst kan men redelijk eenvoudig ook zelf fonts bijmaken (bijv. voor logo's), deze zijn dan echter niet 'hinted' en worden Type 3 fonts genoemd.
Standaard ASCII
Het zal (nog) niet voor iedereen even belangrijk zijn, maar omdat PostScript gebruikt maakt van de standaard ASCII-tekenset, kan een PostScriptfile gemakkelijk worden overgedragen langs electronische weg (e-mail). Er is dan ook inmiddels een gebruik ontstaan om handleidingen, geheel opgemaakt in PostScript, via de electronische post (of FTP) ter beschikking te stellen. Bij afdrukken levert zo'n bestand een schitterend boek op. Bij printertalen die gebruik maken van niet-ASCII tekens gaat er zonder maatregelen nog wel eens wat verloren onderweg.
Bovendien heeft de ASCII-vorm als voordeel dat een deskundige een PostScript-bestand kan lezen en bij kleine fouten zelfs corrigeren.
Nadelen van PostScript
Snelheid
PostScript wordt vaak traag genoemd. In de praktijk klopt dat wel enigszins, hoewel vele (de meeste?) opmaken in PostScript efficiënter kunnen worden gerealiseerd dan in de meeste andere talen. Voor deze traagheid bestaan de volgende oorzaken:
- De meeste tekstverwerkers besturen de printer niet direct, maar via een soort 'tussentaal' die zo algemeen mogelijk gestructureerd is. De opdrachten uit deze tussentaal worden door de printerdriver vertaald in het uiteindelijke printerbestand (PostScript). Vanzelfsprekend is het niet eenvoudig een tussentaal te maken die al rekening houdt met de specifieke sterke kanten van alle soorten printers. Vaak ontstaat dan ook niet-optimale PostScriptcode.
- De eerste af te drukken pagina wordt in PostScript doorgaans voorafgegaan door een stroom 'procedures'. Hierin wordt gespecificeerd hoe bepaalde opmaak-effecten bereikt kunnen worden. Bij het afdrukken van de eigenlijke tekst bespaart het verwijzen naar deze procedures tijd en ruimte. Het oversturen en interpreteren van deze preambule kost vaak nogal wat tijd. Deze investering wordt pas lukratief bij het afdrukken van vele pagina's. Vandaar dat de eerste pagina nogal eens op zich laat wachten.
- Normale computerprogramma's kunnen versneld worden door ze te compileren, te vertalen in machinetaal, voordat ze worden uitgevoerd. PostScript-programma's worden niet gecompileerd, maar elke keer regel voor regel gelezen en geïnterpreteerd. De reden hiervoor is dat de inhoud van een PostScriptbestand bepaald wordt door de tekst die moet worden afgedrukt en die telkens anders is. Een doorsnee PostScript-programma wordt dus zelden herhaald, zodat de compileertijd verspilde tijd zou zijn. Hoewel het mogelijk is zo ongeveer alles door de PostScriptprinter zelf te laten uitrekenen en uitzoeken, is het door deze stapsgewijze verwerking onverstandig de printer al te veel te belasten met computertaken.
- Doordat de opmaak wordt gespecificeerd in normaal leesbare tekens is voor veel opmaakkenmerken een minder compacte specificatie mogelijk dan met (de veel ruimere keuze aan) onleesbare codes. Hierdoor zijn PostScriptbestanden vaak nogal omvangrijk. Daardoor wordt het simpele oversturen van het bestand naar de printer al een tijdfactor van belang.
Overigens geldt deze grote omvang zeker niet wanneer direct in PostScript wordt geprogrammeerd, daar dan beter gebruik gemaakt kan worden van de specifieke sterke punten van PostScript.
Door in PostScriptprinters steeds snellere (RISC-)processoren in te bouwen en door bestanden gecomprimeerd naar de printer te sturen (PostScript Level 2) komt de snelheid steeds dichter bij die van andere printers.
Compatibiliteit
Een laatste nadeel van PostScript dat ik hier zou willen noemen is het feit dat er niet zonder meer 'normale' ASCII-bestanden mee kunnen worden afgedrukt. Dit is echter wel begrijpelijk:
Voor een PostScriptprinter betekent het ontvangen van bijvoorbeeld de letter 'A' niet, dat hij deze letter afdrukt. Hij neemt aan dat deze letter een (deel van een) opdracht is. Daarnaast moet in een bestand dat naar de PostScriptprinter wordt gestuurd expliciet een opdracht staan die de pagina doet afdrukken, anders doet hij dat niet. Tenslotte verwacht de printer dat een bestand wordt afgesloten met het in de Unix-wereld gangbare tekentje Ctrl+D. Mocht dit niet het allerlaatste tekentje in de stroom zijn, dan wacht de PostScriptprinter op een correcte afsluiting. Meestal geeft hij dat wachten na enige tijd wel op onder het verzuchten van een foutmelding.
Als je een kaal tekstbestand naar een PostScriptprinter stuurt, krijg je dus zelden iets op papier: het zou wel heel toevallig zijn als de tekst uitsluitend bestond uit PostScriptopdrachten, en de noodzakelijke opdracht showpage (=druk deze pagina af) zal ook wel ontbreken. Wel leest de printer de hele file en zoekt naar het (Ctrl+D-)eind. Dat kost dus nogal wat tijd.
Gelukkig bestaan er PostScript-programmaatjes die er voor zorgen dat een binnenkomend ASCII-bestand wordt omgebouwd naar PostScript, dus onoverkomelijk is dit niet.
Hoe maak je een PostScriptbestand?
Als je een document afdrukt naar een PostScriptprinter, bijv. een Apple Laserwriter of de Generic PostScript Printerdriver van Adobe, vertaalt de applicatie het document naar PostScript en stuurt dat naar de printer. De meeste applicaties zijn zo in te stellen dat bij afdrukken van een document de PostScript-vertaling niet naar de printer maar naar een bestand wordt gestuurd, d.w.z. op schijf wordt opgeslagen.
Deze PostScript-printbestanden kunnen zonder meer door een drukker worden afgedrukt of worden geconverteerd naar een PDF-bestand voor het Internet met behulp van Acrobat Distiller.
Het is verstandig van elke ca. tien pagina's een apart PostScriptbestand te maken, omdat de PostScriptbestanden nogal groot kunnen zijn.