Befehlsausführungsreihenfolge
Wichtig
Die moderne Druckplattform ist die bevorzugte Methode von Windows für die Kommunikation mit Druckern. Wir empfehlen die Verwendung des Microsoft IPP-Treibers für die Posteingangsklasse zusammen mit Print Support Apps (PSA), um das Druckverhalten in Windows 10 und 11 für die Entwicklung von Druckergeräten anzupassen.
Weitere Informationen finden Sie unter Moderne Druckplattform und im Designhandbuch für die Drucksupport-App.
Druckerbefehle müssen in einer sinnvollen Reihenfolge an die Druckerhardware gesendet werden. Für die meisten in der GPD-Sprache definierten Befehlsnamen weiß Unidrv, wann die Escapesequenz des Befehls an den Drucker gesendet werden soll. Hierfür gelten zwei Ausnahmen:
Für beide dieser Befehlstypen müssen Sie die Reihenfolge angeben, in der die Befehle ausgeführt werden sollen.
Die Befehlsausführungsreihenfolge besteht aus zwei Komponenten: einem Auftragsabschnittsnamen und einer Sequenzreihenfolgenummer. Der Unidrv-Treiber teilt jeden Druckauftrag in sechs Abschnitte auf. Für jeden Abschnitt sendet Unidrv den Drucker an die Befehle, die dem Abschnitt zugewiesen sind, in der angegebenen Sequenz. Die folgenden Abschnitte werden definiert:
JOB_SETUP
Befehle, die dem Abschnitt JOB_SETUP zugewiesen sind, werden einmal pro Auftrag gesendet. Sie sind die ersten Befehle, die gesendet werden, wenn ein neuer Auftrag beginnt. Diese Befehle werden innerhalb der Implementierung der DrvStartDoc-Funktion von Unidrv gesendet.
DOC_SETUP
Befehle, die dem Abschnitt DOC_SETUP zugewiesen sind, werden gesendet, bevor die erste Seite eines Dokuments gesendet wird. Die Befehle werden innerhalb der Implementierung der DrvStartDoc-Funktion von Unidrv gesendet. (Diese Befehle werden auch gesendet, nachdem eine Anwendung die Win32 ResetDC-Funktion aufruft. Befehle in diesem Abschnitt dürfen keine heruntergeladenen Informationen wie weiche Schriftarten und Muster entfernen.)
PAGE_SETUP
Befehle, die dem Abschnitt PAGE_SETUP zugewiesen sind, werden am Anfang jeder neuen Seite gesendet, bevor die Zeichnung beginnt. Diese Befehle werden innerhalb der Implementierung der DrvStartPage-Funktion von Unidrv gesendet.
PAGE_FINISH
Befehle, die dem Abschnitt PAGE_FINISH zugewiesen sind, werden am Ende jeder Seite gesendet, nachdem die Zeichnung abgeschlossen ist. Diese Befehle werden innerhalb der Implementierung der DrvSendPage-Funktion von Unidrv gesendet.
DOC_FINISH
Befehle, die dem Abschnitt DOC_FINISH zugewiesen sind, werden gesendet, nachdem die letzte Seite eines Dokuments gesendet wurde. Die Befehle werden innerhalb der Implementierung der DrvEndDoc-Funktion von Unidrv gesendet. (Befehle in diesem Abschnitt dürfen keine heruntergeladenen Informationen wie weiche Schriftarten und Muster entfernen.)
JOB_FINISH
Befehle, die dem Abschnitt JOB_FINISH zugewiesen sind, werden einmal pro Auftrag gesendet. Sie sind die letzten Befehle, die gesendet werden, wenn ein Auftrag endet. Diese Befehle werden innerhalb der Implementierung der DrvEndDoc-Funktion von Unidrv gesendet.
In jedem dieser Abschnitte werden Befehle in der Reihenfolge ausgeführt, die durch ihre Sequenznummern angegeben ist.
Verwenden Sie zum Angeben der Abschnitts- und Sequenznummer eines Befehls das Attribut *Order, das in Befehlsattributen beschrieben wird. Das Format lautet:
*Reihenfolge: SectionName.SequenceNumber
Dabei ist SectionName einer von JOB_SETUP, DOC_SETUP, PAGE_SETUP, PAGE_FINISH, DOC_FINISH oder JOB_FINISH und SequenceNumber ein numerischer Wert.
Sequenznummern müssen nicht aufeinander folgen, aber jede in einem Abschnitt angegebene Zahl muss eindeutig sein. Befehle innerhalb eines Abschnitts werden von der einen mit der niedrigsten Sequenznummer bis zu der mit der höchsten Sequenznummer ausgeführt. Die folgenden Einträge geben beispielsweise an, dass Optionen für die Features InputBin, PaperSize und Resolution dem Abschnitt DOC_SETUP zugewiesen werden und in der angegebenen Reihenfolge gesendet werden:
*Feature: InputBin
{
*Option: Auto
{
*Name: "Auto Tray"
*Command: CmdSelect
{
*Order: DOC_SETUP.50
*Cmd: "<1B>(1<010014>"
}
}
...
}
*Feature: PaperSize
{
*DefaultOption: Letter
*Option: Letter
{
*Name: "Letter size"
*Command: CmdSelect
{
*Order: DOC_SETUP.60
*Cmd: "<1B>(g<0300>n<01>r"
}
}
...
}
*Feature: Resolution
{
*DefaultOption: 360dpi
*Option: 360dpi
{
*Name: "360 dpi x 360dpi"
*Command: CmdSelect
{
*Order: DOC_SETUP.70
*Cmd: "<1B>(d<020001>"
}
}
...
}