# Printer Command Language

Die Printer Command Language (PCL; deutsch Druckerbefehlssprache) ist eine Befehlssprache zum Steuern von Druckern. Sie wurde von Hewlett-Packard mit dem Ziel entwickelt, alle Druckertypen über eine gemeinsame Standardsprache ansteuern zu können.
PCL basiert auf Escape-Sequenzen und liegt in seiner Komplexität damit zwischen ASCII-Klartext (der nur die einfachsten Fernschreiberkommandos erlaubt, wie z. B. Zeilenvorschub) und PostScript (eine eigene, komplexe Programmiersprache zur Seitenbeschreibung).
Während der Nadelmatrixdrucker-Ära dominierte noch der Epson-Befehlssatz ESC/P (Epson Standard Code for Printers). Außer für Epson-Drucker hat PCL diesen Standard weitgehend abgelöst.

## Geschichte

Die Entwicklung von PCL begann Anfang der 1980er Jahre. Als Grundlage dienten u. a. die Steuerbefehle der grafikfähigen intelligenten Terminals des Typs HP 2648 (1979) und nachfolgender Modelle. Deren Befehlssatz stellt eine Untermenge der PCL dar, die damit von PCL-kompatiblen Druckern noch heute verstanden wird.

## Versionen

Bei der Weiterentwicklung wurde darauf geachtet, dass die neue PCL-Version die vorhergehenden als Untermenge enthält und sie lediglich erweitert – die Versionen bauen also jeweils aufeinander auf. Sie werden daher als Level (engl. für Stufen) bezeichnet. Die dahinterstehende Philosophie war, dass einfache Drucker beispielsweise PCL Level 1 verstehen sollten, was die Produktionskosten gering hielt. Komplexere Geräte hingegen sollten entsprechend ihrer Fähigkeiten mit höheren Leveln ausgestattet werden, aber gleichzeitig die alten Kommandos nicht nur verstehen, sondern identisch umsetzen können. Zusätzlich ist in der PCL festgelegt, dass unbekannte Kommandos (wie Farbauswahl auf einem Schwarz/Weiß-Gerät) einfach ignoriert werden sollen.

### PCL 1 bis PCL 5

Die Versionen PCL 1 bis PCL 5e/c sind kommandobasierte Sprachen, deren Befehlssequenzen in der Reihenfolge, in der sie im Drucker eintreffen, verarbeitet und interpretiert werden. Im Normalfall wird der Datenstrom von einem Druckertreiber generiert, es ist aber auch möglich, PCL-Anweisungen von eigenen Applikationen erstellen zu lassen.
* PCL 1 wurde 1984 mit dem HP ThinkJet 2225 eingeführt und unterstützt das Drucken von Texten und Grafiken mit einer Auflösung von bis zu 150 dpi.
* PCL 1+ wurde zusammen mit dem HP QuietJet 2227 veröffentlicht.
* PCL 2 fügte die Verarbeitung von elektronischen Daten hinzu.
* PCL 3 wurde zusammen mit dem ersten HP LaserJet 1984 eingeführt. Diese Version unterstützt Rastergrafik-Schriftarten und erhöht die maximale Auflösung auf 300 dpi. PCL 3 wird auch heute noch in den meisten Tintenstrahldruckern von HP eingesetzt.
* PCL 3+ (einfarbig, „mono“) und PCL 3c+ (farbig, „colo(u)r“) wurde später für die HP-DeskJet- und HP-PhotoSmart-Drucker eingesetzt.
* PCL 3GUI wird bei den HP-DesignJet-Druckern eingesetzt. Es benutzt ein komprimiertes Raster-Format und ist nicht kompatibel mit anderen PCL-3-Standards.
* PCL 4 erschien 1985 mit dem HP LaserJet II und fügte dem Standard Makro-Programmierung, größere Bitmap-Schriftarten und Grafiken hinzu.
* PCL 5 erschien 1990 mit dem HP LaserJet III. Der Standard wurde um die Schriftenskalierung „Intellifont“ (von Agfa entwickelt) und um die Unterstützung von HP-GL/2-(Vektor-)Grafiken erweitert.
* PCL 5e (PCL 5 erweitert, „enhanced“) wurde im Oktober 1992 zusammen mit dem HP LaserJet 4 veröffentlicht. Es erweitert den Standard um bi-direktionale Kommunikation zwischen Drucker und PC und die Unterstützung von Windows-Schriften. Außerdem unterstützt PCL5e beidseitiges Drucken.
* PCL 5c erschien 1992 mit der HP Color LaserJet-Familie. Es beinhaltet die Funktionalität von PCL 5e, ist jedoch um Farb- und Paletten-Befehle erweitert.

### PCL 6

PCL 6 wurde 1995 vorgestellt und besteht aus:
* PCL 6 Enhanced: Eine vollständig neue, komprimierte Seitenbeschreibungssprache, die syntaktisch in keinerlei Zusammenhang mit den bisherigen PCL-Versionen steht. Ehemals bekannt als PCL XL.
* PCL 6 Standard: Äquivalent zu PCL 5c oder 5e, um die Kompatibilität zu alten PCL-Versionen zu gewährleisten.
Die Struktur von PCL XL kann man sich am ehesten als binäres XML-Dokument vorstellen. Wie auch PCL 5c bildet PCL XL jene GDI-Objekte ab, die für die Druckausgabe nötig sind. In PCL XL fallen allerdings die ständigen Kontextwechsel zwischen PCL und HP-GL weg, da eine Sprache für Text, Grafik und Rasterobjekte verwendet wird. In PCL XL wurde ein expliziter Graustufenfarbraum für Rasterdaten und Vordergrundfarben eingeführt, womit sich sauber unbuntes Grau mit farbigen Objekten kombinieren lässt. Mit Ausnahme von RGB trennt sich XL von allen weiteren, zum Teil nur in einzelnen Druckern implementierten Farbräumen von PCL5c. Die maximale Auflösung von übertragenen Rasterobjekten wurde auf 1200 dpi erhöht. Mit JFIF wurde in Protokollklasse 2.2 auch noch ein starkes Rasterkompressionsverfahren eingeführt.
Die PCL-5c-Komponente von PCL 6 ist abwärtskompatibel zu früheren Versionen. So ist es möglich, einen Drucker, der unter PCL 6 arbeitet, auch mit einem PCL-3-Druckertreiber anzusprechen.

### Jet Ready

Jet Ready ist eine vereinfachte Variante von PCL XL, die bei HP-Laserdruckern der untersten Preisklasse zum Einsatz kommt. PCL XL wurde mit Ausnahme von JFIF aller Objekte beraubt. Dadurch entstand eine neue Low-Level-Druckersprache auf Basis einer existierenden Syntax. Die übertragenen JFIF-Bilder müssen exakt jenes Format besitzen, welches normalerweise vom RIP an die Druckengine übergeben wird. Dadurch wird es möglich, die im Rechner vorverarbeitete Bildinformation ohne Rasterprozess im Drucker in die Ausgabehardware zu übertragen. Durch die Einführung von Jet Ready konnten abgespeckte Varianten der bekannten Office-Laserjets auf bestehender Hardware und Software für den Heimanwender erschwinglich gemacht werden. Das Bypassverfahren für JFIF in Laserdruckern unterliegt derzeit noch Patenten von HP.

## Verfügbare Farbmodelle

* CIELab: Wird heute von HP nicht mehr weiter in PCL5c-Druckern als adressierbarer Farbraum unterstützt. Dieser Farbraum wird üblicherweise als Referenzfarbraum im Colormanagement eingesetzt und ist im Océ Production PCL weiterhin entsprechend der ursprünglichen PCL5c-Spezifikation verfügbar.
* CMY: Laut Spezifikation von HP handelt es sich hier ausschließlich um einen DeviceCMY-Farbraum. Dieser ist bestenfalls zum bunt drucken geeignet, da man ohne Colormanagement nicht sagen kann, welche Farbe einem CMY-Triplet zugeordnet ist. Einige Hersteller setzen hier auf das sRGB zum Colormanagement.
* Grau: Ist in PCL5c direkt nur in geditherter Form oder als shaded Pattern für Vordergrundfarb-Objekte ansprechbar. Mittels Monochrom Printing Mode Command lassen sich allerdings echte Graustufen in Rastergrafiken darstellen. Hierzu wird das echte Graustufenbild (mit nur einer 8Bit-Pixelkomponente also 256 Graustufen) im Modus Indexed by Pixel zum Drucker geschickt. Dem Drucker wurde zuvor eine geeignete RGB-Palette geschickt, die er wiederum wegen des Monochrom-Printing-Mode-Kommandos in eine Graustufenpalette umwandelt. Nach diesem Verfahren arbeitet zum Beispiel der Treiber des rein monochromen HP9000 PCL5c Druckers, der alle PCL5c-Daten in Graustufen verarbeiten kann.
* RGB: Stellt das Hauptfarbkonzept von PCL 5c dar. In den frühen Tagen von PCL 5c existierten hier ein colorimetrischer (parametrisierter) und ein Device RGB-Farbraum. Heute ist dieses Konzept zu Gunsten echter Farbverwaltung mit ICC-Profilen auf die Verwendung des sRGB-Profils geändert worden. (Einige Production PCL-Dialekte, wie zum Beispiel von Océ oder Xerox, unterstützen die freie Wahl der ICC-RGB-Profile, was gerade im Hinblick auf die produktionsunabhängige Dokumentenerstellung sinnvoll ist.)
* YCbCr: War in der ursprünglichen PCL5c-Spezifikation noch enthalten, wurde aber laut HP Laserjet Comparison Guide nur in einem einzigen Druckertyp verbaut und hat heute somit keine Bedeutung mehr für PCL5c. (In PCL6 und bei Systemen die ein JPEG-Passthrough erlauben ist dieser Farbraum implizit durch das JPEG-Format enthalten)

## PCL im Hochleistungsdruck

Hersteller wie Konica Minolta, Unisys, Xerox, Canon-Océ, Ricoh oder Lexmark bieten PCL in ihren Hochleistungs- und Midrange-Produktionsdruckern an. PCL ist äußerst effizient und eignet sich daher besonders für die Ansteuerung von Maschinen, die mehr als 1000 Seiten pro Minute drucken können. Solche Systeme kommen zum Beispiel im Transaktionsdruck bei Banken, Versicherungen und Behörden zum Einsatz.

## PCL von Sato

Sato, Hersteller von Etikettendruckern, nannte seine Befehlssprache in der Vergangenheit ebenfalls PCL. Diese hat mit der PCL von Hewlett-Packard jedoch nichts gemeinsam. Später wurde sie in SBPL (zuerst als Abkürzung für Sato Basic Programming Language, später Sato Barcode Programming Language) umbenannt.