Partager via


Ordre d'exécution des commandes

Important

La plateforme d’impression moderne est le moyen privilégié de Windows pour communiquer avec les imprimantes. Nous vous recommandons d’utiliser le pilote de classe IPP en boîte 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’impression.

Pour plus d’informations, veuillez consulter les articles Plateforme d’impression moderne et Guide de conception des applications de support d’impression.

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

La commande de sélection d'option

Les 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 tâche d’impression en six sections. Pour chaque section, Unidrv envoie à l’imprimante les commandes affectées à la section, en suivant 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 tâche. Il s’agit des premières commandes envoyées lorsqu’une nouvelle tâche commence. Ces commandes sont envoyées depuis 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 depuis l’implémentation d’Unidrv de la fonction DrvStartDoc. (Ces commandes sont également envoyées après qu’une application appelle la fonction ResetDC de Win32. Les commandes de cette section ne doivent pas supprimer les informations téléchargées, notamment les polices logicielles 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 depuis 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 depuis 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 depuis 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 logicielles et les modèles.)

JOB_FINISH
Les commandes affectées à la section JOB_FINISH sont envoyées une fois par tâche. Il s’agit des dernières commandes envoyées lorsqu’une tâche se termine. Ces commandes sont envoyées depuis 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 leur numéro 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 les Attributs de commande. Le format est le suivant :

*Order: SectionName.SequenceNumber

SectionName est, au choix : 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 sont pas forcément consécutifs, mais chaque numéro spécifié dans une section doit être unique. Les commandes d’une section sont exécutées en commençant par celle avec le numéro de séquence le plus bas pour aller vers celle avec le numéro 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 sont 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>"
        }
    }
    ...
}