# PCL

PCL staat voor Printer Command Language en is een van de Page Description Languages (PDL) waarmee printers kunnen worden aangestuurd. De Amerikaanse firma Hewlett Packard heeft deze taal ontwikkeld voor printers. De grootste tegenhanger van PCL is PostScript van Adobe op afstand gevolgd door IPDS van IBM.

## Ontwikkeling

PCL is net als elke andere PDL op de markt gebracht in verschillende versies, waarbij PCL5e momenteel waarschijnlijk de meest gebruikte is. De laatste versie op het moment van schrijven is PCL6 Enhanced. Onderdelen van PCL zijn HP-GL, die als specifieke PDL is ontwikkeld voor de aansturing van plotters, en PJL (Printer Job Language) welke specifiek is ontwikkeld om een (semi-)printertype-onafhankelijke aansturing te verkrijgen voor het schakelen van PDL-emulatie, papierformaat, duplex/simplex, en dergelijke.

## Versies

Er zijn vijf hoofdversies van PCL. De eerste versies PCL 1 en 2 werden in HP impact printers en Inkjet printers gebruikt in de vroege jaren 80. De ontwikkeling van deze versies softwarematige aansturing werd bepaald door de ontwikkeling van hardwarematige printertechnologieën, waarbij steeds meer functionaliteit en verbetering werd toegepast.
De versies PCL zijn:
* PCL 1:Werd geïntroduceerd in begin jaren 80. Aanwezig in HP ThinkJet 2225 en ondersteunt alle HP LaserJet series printers, behalve de HP LaserJet 3100 en 3150. Verschafte zeer basale printopdrachten en spatiëringsfunctionaliteiten voor tekstzetten met een maximale resolutie van 150 dpi. PCL 1 is de basisset van functies voor simpele, single user output. PCL 1+ was aanwezig in HP QuietJet 2227.
* PCL 2: Volgde snel na PCL 1 in begin jaren 80. Ondersteunt alle HP LaserJet series printers, behalve de HP LaserJet 3100 en 3150. Verschafte Electronic Data Processing/Transaction functionaliteit. Functies voor algemene doeleinden en multi user printing werden toegevoegd.
* PCL 3: Geïntroduceerd in 1984. Werd geïmplementeerd in HP LaserJet-serie laserprinters, HP DeskJet inkjetprinters, HP 2932 matrixprinters en HP RuggedWriter 2235 matrixprinters. Bevatte commando's en mogelijkheden vereist voor eenvoudige doch hoog-kwalitatieve afdruk. Was geschikt voor het toepassen van een beperkt aantal bitmap lettertypen en afbeeldingen. De maximum resolutie werd verhoogd naar 300 dpi. PCL 3 werd geïmiteerd door andere printerfabrikanten en werd naar gerefereerd als "LaserJet Plus Emulation". PCL 3+ (mono) en PCL 3c+ (color) werden toegepast op latere HP DeskJet-modellen en HP PhotoSmart kleuren inkjet-printers. PCL 3GUI werd gebruikt in HP DesignJet en enkele HP DeskJet-printers. Het gebruikt een gecomprimeerd rasterformaat dat niet compatible is met standaard PCL 3.
* PCL 4: Geïntroduceerd in 1985. Werd geïmplementeerd in HP LaserJet II series laserprinters. Verschafte nieuwe pagina-georiënteerde afdrukmogelijkheden. Ondersteunde macro's, grotere bitmap lettertypes en afbeeldingen.
* PCL 5: Geïntroduceerd in 1990. Werd geïmplementeerd in HP LaserJet III series laserprinters. Verschafte ultieme office publishing functionaliteiten, zoals schaling van groottes van lettertypen (via Intellifont van Compugraphic, tegenwoordig van Agfa), outline lettertypen, en HP-GL/2 vector afbeeldingen. PCL 5 was ontwikkeld voor complexere desktoppublishing (dtp), grafisch ontwerp en presentatie doeleinden. PCL 5e (Enhanced) kwam uit in 1992 op HP LaserJet 4, 5 en 6 families, en LaserJet 8000 en 9000 series laserprinters. Verschafte bidirectionele communicatie tussen printer en pc, een breder scala lettertypen die ook standaard in Microsoft Windows zaten. PCL 5c (color) kwam uit in 1992 op alle printers uit de familie HP Color LaserJet en HP PaintJet 300XL. Verschafte de aansturing van kleurendruk.
* PCL 6: Sinds 1995 geïmplementeerd op nieuwe generatie HP LaserJet laserprinters (1000, 2000, 3000, 4000, 5000, 8000 en 9000 series). Nieuwe modulaire architectuur die eenvoudiger kon worden bewerkt voor nieuwere printers, snellere terugkeer naar de applicatie, snellere afdruk van complexe afbeeldingen, efficiëntere gegevensuitwisseling en dus minder netwerkverkeer, betere wysiwyg weergave, verbeterde afdrukkwaliteit. PCL 6 lijkt niet op PCL 5 of eerdere versies. Een belangrijk verschil is de manier waarop de commando's naar de printer worden gestuurd.

## De taal

PCL is in staat om meerdere "talen" printeraansturing te combineren tot één afdruktaak. De PCL ondersteuning bestaat uit 4 onderdelen;

### Escape codes

Het belangrijkste kenmerk van PCL is de gebruikmaking van een speciale code waaruit de printer afleidt dat er een printercommando bestaande uit meerdere karakters volgt: de escape code (27 Decimaal, 1B HexaDecimaal). De karaktercombinatie die volgt tot de eerste hoofdletter vormt het zogenaamde PCL-escape-commando. Het eerste karakter of de eerste twee karakters die volgen op de escape-code bepaalt vaak het soort commando. Commando's van dezelfde soort kunnen worden gecombineerd tot één PCL-commando door kleine letters voor de verschillende functies te gebruiken en als laatste een hoofdletter te gebruiken. Bijvoorbeeld:
    EcE&l3A
stelt de printer in op letter papierformaat.

### Control codes

Naast deze PCL-escape-commando's kent PCL nog stuurcodes welke uit één byte bestaan en onder de zogenaamde Communication Control Codes vallen. Dit zijn de codes 0 t/m 31 van de bekende ASCII-tekenset. Hieronder vallen bijvoorbeeld de Carriage Return (CR), Line Feed (LF), Form Feed (FF), Shift-In (SI) en Shift-Out (SO).

### HP-GL/2 code

PCL 'leest' ook vector-gebaseerde taal HPGL, specifiek HP-GL/2, waarbij commando's bestaan uit twee letters en eventueel meerdere cijfers (bijvoorbeeld 'IN'=initialise en 'SP1'=select pen 1).

### PJL commando's

Printer Job Language (PJL) beheert de gehele afdruktaak van de printer en niet de opmaak. Een belangrijke taak van PJL is het schakelen tussen de verschillende stuurtalen, bijvoorbeeld eerst een taak in PCL en de volgende taak in PostScript. PJL is ook de bidirectionele communicatie spil tussen printer en pc. De meest logische plek voor PJL-commando's is vóór de PCL-data en deze verzameling PJL-commando's wordt dan ook wel het printjob ticket genoemd.

## Verschil met PostScript

Het belangrijkste verschil met zijn directe tegenhanger PostScript is, dat PCL sequentieel de aansturing regelt zonder dat loops (programmaherhalingen) mogelijk zijn. Verder zijn PCL-commando's niet herdefinieerbaar en PostScript-commando's wel. Aan de ene kant is dit een voordeel (eenduidige commandobetekenis), maar aan de andere kant een nadeel vanwege gebrek aan flexibiliteit. Vanwege de enorme hoeveelheid beschikbare PostScript-fonts en de link met de Apple Macintosh is PostScript heel geliefd in de grafische wereld terwijl PCL het meest wordt gebruikt in kantooromgeving en thuis.

## Tools

Om een PCL-printjob op het scherm te laten zien bestaan zogenaamde PCL-viewers. Een commerciële is SwiftView. Om PCL-printjobs wat makkelijker te kunnen analyseren, zijn er verschillende MS-DOS-tools verkrijgbaar zoals PCLedit.com en DISPCL.exe, maar er zijn ook echte Windows-applicaties te verkrijgen voor dat doel.