Partager via


Ordre d’exécution des commandes

Important

Nous vous recommandons d’utiliser le pilote de classe de boîte de réception IPP de Microsoft, ainsi que les applications de support d’impression (PSA), pour personnaliser l’expérience d’impression dans Windows 10 et 11 pour le développement de périphériques d’imprimante.

Pour plus d’informations, consultez le Guide de conception de l’application de support d’impression.

Les commandes d’imprimante doivent être envoyées au matériel d’imprimante dans un ordre significatif. Pour la plupart des noms de commandes définis dans la langue GPD, Unidrv sait quand envoyer la séquence d’échappement de la commande à l’imprimante. Deux exceptions :

Commande de sélection d’option

Commandes de configuration de l’imprimante

Pour ces deux types de commandes, vous devez spécifier l’ordre dans lequel les commandes doivent être exécutées.

L’ordre d’exécution des commandes est constitué de deux composants : un nom de section de travail et un numéro d’ordre de séquence. Le pilote Unidrv divise chaque travail d’impression en six sections. Pour chaque section, Unidrv envoie à l’imprimante les commandes affectées à la section, dans la séquence spécifiée. Les sections suivantes sont définies :

JOB_SETUP
Les commandes affectées à la section JOB_SETUP sont envoyées une fois par travail. Il s’agit des premières commandes envoyées lorsqu’un nouveau travail commence. Ces commandes sont envoyées à partir de l’implémentation d’Unidrv de la fonction DrvStartDoc .

DOC_SETUP
Les commandes affectées à la section DOC_SETUP sont envoyées avant l’envoi de la première page d’un document. Les commandes sont envoyées à partir de l’implémentation d’Unidrv de la fonction DrvStartDoc. (Ces commandes sont également envoyées après qu’une application a appelé la fonction Win32 ResetDC. Les commandes de cette section ne doivent pas supprimer les informations téléchargées, telles que les polices réversibles et les modèles.)

PAGE_SETUP
Les commandes affectées à la section PAGE_SETUP sont envoyées au début de chaque nouvelle page, avant le début du dessin. Ces commandes sont envoyées à partir de l’implémentation d’Unidrv de la fonction DrvStartPage .

PAGE_FINISH
Les commandes affectées à la section PAGE_FINISH sont envoyées à la fin de chaque page, une fois le dessin terminé. Ces commandes sont envoyées à partir de l’implémentation d’Unidrv de la fonction DrvSendPage .

DOC_FINISH
Les commandes affectées à la section DOC_FINISH sont envoyées après l’envoi de la dernière page d’un document. Les commandes sont envoyées à partir de l’implémentation d’Unidrv de la fonction DrvEndDoc . (Les commandes de cette section ne doivent pas supprimer les informations téléchargées, telles que les polices réversibles et les modèles.)

JOB_FINISH
Les commandes affectées à la section JOB_FINISH sont envoyées une fois par travail. Il s’agit des dernières commandes envoyées à la fin d’un travail. Ces commandes sont envoyées à partir de l’implémentation d’Unidrv de la fonction DrvEndDoc.

Dans chacune de ces sections, les commandes sont exécutées dans l’ordre indiqué par leurs numéros de séquence.

Pour spécifier la section et le numéro de séquence d’une commande, utilisez l’attribut *Order , qui est décrit dans Attributs de commande. Le format est le suivant :

*Order : SectionName. Sequencenumber

SectionName est l’un des JOB_SETUP, DOC_SETUP, PAGE_SETUP, PAGE_FINISH, DOC_FINISH ou JOB_FINISH, et SequenceNumber est une valeur numérique.

Les numéros de séquence ne doivent pas être consécutifs, mais chaque nombre spécifié dans une section doit être unique. Les commandes au sein d’une section sont exécutées à partir de celle avec le numéro de séquence le plus bas à celle avec le plus élevé. Par exemple, les entrées suivantes indiquent que les options des fonctionnalités InputBin, PaperSize et Resolution sont affectées à la section DOC_SETUP et envoyées dans l’ordre spécifié :

*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>"
        }
    }
    ...
}