Printer Job Language (PJL)

Für die inzwischen recht bekannten HP LaserJet und andere PCL-5-Drucker gibt es die Sprache PJL, um den Drucker an die Anforderungen des Benutzers anzupassen. Alle Einstellungen, die per Bedienfeld am Drucker ausgewählt werden, können so komfortabel per Software geändert werden. Einige Drucker bieten allerdings auch Möglichkeiten, die sich nicht über das Bedienfeld einstellen lassen. Hierbei ist man also auf ein Programm angewiesen, daß diese Einstellungen per Software vornimmt.

Hewlett Packard liefert leider nur Programme für DOS und Apple mit. ATARI-Anwender stehen dabei, wie so oft im Regen. Nachfolgende CPX-Module sollen hier abhelfen. Mit PJL kann man auch weitere untergeordnete Sprachen wie PCL oder Postscript aus wählen, Druckerjobs steuern usw. Folgende HP Drucker erkennen PJL-Kommandos:

Allerdings sind meist nicht alle PJL-Kommandos in jedem Drucker implementiert, da es unnötig wäre, z.B. die serielle Schnittstelle eines Druckers zu konfigurieren, wenn dieser keine serielle Schnittstelle hat. Falls ein PJL-Befehl an einen Drucker geschickt wird, der den Befehl nicht unterstützt, wird er ignoriert. In diesem Artikel wird auch nicht auf alle PJL-Befehle [ 1 ] eingegangen, sondern lediglich auf die für den LaserJet 4L wichtigen.

Einige PJL-Befehle für den LaserJet 4L können Sie in Tabelle 1 sehen.

Die mit einem ,*’ gekennzeichneten Befehle sind PCL-spezifische Variablen, die jedoch von PJL aus direkt geändert werden können. Hierfür muß man den LPARM-Parameter angeben. Der jeweils erste Parameter in der Übersicht ist der Default-Wert. Es gibt zwar noch einige Befehle, die einen Datenfluß vom Drucker zum Rechner erlauben, um verschiedene Statusmeldungen des Druckers zu erhalten, dies ist aber leider beim ATARI ST mangels einiger Steuerleitungen der parallelen Schnittstelle nicht möglich. Jedenfalls ist mir keine Möglichkeit bekannt, diesen Mangel zu umgehen.

Nun, das war bis jetzt alles ganz nett, aber wie mache ich dem Drucker klar, daß ich z.B. den Zeichensatz „PC8“ haben will, um deutsche Umlaute auf dem Papier zu erblicken? Hierfür gleich ein Beispiel:

<Esc>%-12345X@ PJL <CRxLF>
@PJL DEFAULT LPARM : PCL SYMSET = PC8 <CRxLF> 
<Esc>%-12345X <CRxLF>

In der 1. Zeile haben wir den Drucker auf PJL umgeschaltet, in der 2. Zeile wird der Standardzeichensatz gesetzt, und in der letzten Zeile PJL beendet. Etwaige weitere Befehle sind zwischen der 2. und 3. Zeile einzufügen.

Der PJL-Befehl besteht im Beispiel aus:

Präfix 					@PJL
Kommando 				DEFAULT
Parameter 				LPARM : PCL
Befehlsname mit Wert 	SYMSET = PC8 
Ende 					<LF>

<CR> am Ende der Zeile und Leerzeichen vor und nach dem ,=‘ sind optional, zwischen <CR> und <LF> darf jedoch kein Leerzeichen stehen.

<Esc> Zeichen für Escape also ASCII 27
<CR> ASCII 10 (kann bei jedem Befehl weggelassen werden)
<LF> ASCII 13

Für die Wahl der Papierausrichtung sieht das dann so aus:

@PJL DEFAULT ORIENTATION = LANDSCAPE <LF>

Mit dem Kommando DEFAULT wird die jeweilige Konfiguration im RAM bzw. NVRAM des Druckers dauerhaft gespeichert, allerdings erst nach Beenden der PJL-Kommandos. Falls ein dauerhaftes Speichern nicht gewünscht ist, um z.B. lediglich für einen Drucker-Job die Konfiguration zu ändern und danach wieder automatisch die Standardeinstellungen zu haben, gibt es das Kommando SET:

@PJL SET ORIENTATION = LANDSCAPE <LF>
Kommando Beschreibung
DEFAULT setzt Standardkonfiguration
SET aktuelle Konfiguration
INITIALIZE setzt Drucker auf Fabrikkonfiguration zurück
ENTER wählt Sprache (PCL, POSTSCRIPT)

Tabelle 2: Übersicht Kommandos

Wie anfangs bereits geschrieben, kann man von PJL aus auf andere Druckersprachen umschalten:

@PJL ENTER LANGUAGE = PCL <LF>

Von hier aus könnte man z.B. weiter nach HP-GL/2 schalten und munter HP-GL/2-Kommandos schicken oder andere PCL-Befehle, um z.B. den oberen Rand der Seite einzustellen usw. Diese untergeordneten Kommandos sind jedoch nur bis zum Beenden der PJL-Befehle gültig. Danach läuft der Drucker wieder unter den Default-Werten.

Der schematische Aufbau der Printer Job Language

Falls Sie übrigens während Ihrer Versuche mit dem LaserJet 4L und PJL Panik bekommen und den Drucker am liebsten wieder auf die original Fabrikkonfiguration zurücksetzen wollen, drük-ken Sie einfach für ca. 5 Sekunden die Bedienfeldtaste, bis alle Anzeigen zu blinken beginnen [2],

Zum Abschluß gibt es noch ein kleines C-Listing, das beliebig ausgeweitet werden kann. Wem das zu mühsam ist, kann einfach zur Megadisk greifen, dort befinden sich 3 CPX-Module jeweils für den LaserJet 4,4L und 4P. Beim Listing bleibt noch anzumerken, daß „\033“ in C für das Escape-Zeichen steht und „%%“ nötig ist, um ein %-Zeichen zu drucken.

Literatur:

[1] Printer Job Language, Technical Reference Manual Hewlett Packard, Second Edition, 5/93
[2] Benutzerhandbuch LaserJet 4L


/* Beispielprogramm zur Demonstration 
   der PJL
   (c)1994 by MAXON-Computer
   Autor: Donald Bork */

#include <stdio.h>
#define druck(a) fprintf(stdprn, a)

void main(void)
{

	druck("\033%%-12345X@PJL \n"); /* PJL einleiten */

	druck("@PJL DEFAULT DENSITY = 3\n");
	druck("@PJL DEFAULT MANUALFEED = OFF\n");
	druck("@PJL DEFAULT LPARM : PCL SYMSET = PC8\n");
	druck("@PJL DEFAULT LPARM : PCL FONTNUMBER = 15\n"); 
	druck("OPJL DEFAULT LPARM : PCL PTSIZE = 12.00\n" ); 

	druck("\033%%-12345X" );
	/* und aus PJL verabschieden */
}
Befehl Parameter Bedeutung
AUTOCONT OFF / ON Autoweiter bei Fehler
COPIES 1 bis 999 Zahl der Kopien
DENSITY 3
1 bis 5
Toner bzw. Kontrast
ECONOMODE OFF ON Sparmodus für den Tonei
FONTNUMBER * 0 bis 25 Auswahl der Schrift
FONTSOURCE * I / S Intern oder Softfont
FORMLINES 64 (bei DIN A4)
5 bis 128
Zeilen pro Seite
IMAGEADAPT AUTO, ON/OFF Bild Kompression
MANUALFEED OFF / ON manueller Papiereinzug
ORIENTATION PORTRAIT / LANDSCAPE Papierausnchtung (hoch/querl
PAGEPROTECI AUTO, ON / OFF Ganzseitendruck
PAPER A4, LETTER, LEGAL, EXECUTIVE, COM10, MONARCH, C5, DL, B5 Papierformat
PITCH * 10.00
0.44 bis 99.99
Zeichendichte für nicht
proportionale Schrift
PTSIZE * 12.00
4.00 bis 999.75
in Schritten von 0.25
Zeichengröße für proportionale
Schrift
RET MEDIUM, OFF, LIGHT, DARK verbessert die Auflösung
SYMSET * ROMAN8, DESKTOP, WINL1, ISOL1, PC8, PC850, PSTEXT, VNINTL,
PC8DN, VNUS, LEGAL, WIN30, MSPUBL, PC852, PC8TK, ISOL2, WINL2,
ISOL5, WINL5, VNMATH, MATH8, PIFONT, PSMATH
Zeichensatz (Codeseite)

Donald Bork
Aus: ST-Computer 03 / 1994, Seite 94

Links

Copyright-Bestimmungen: siehe Über diese Seite