Compartir a través de


Orden de ejecución de comandos

Importante

La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.

Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.

Los comandos de impresora deben enviarse al hardware de la impresora en un orden significativo. Para la mayoría de los nombres de comando definidos en el lenguaje GPD, Unidrv sabe cuándo enviar la secuencia de escape del comando a la impresora. Hay dos excepciones:

El comando de selección de opciones

Comandos de configuración de impresora

Para ambos tipos de comandos, debe especificar el orden en el que se deben ejecutar los comandos.

El orden de ejecución de comandos se compone de dos componentes: un nombre de sección de trabajo y un número de orden de secuencia. El controlador Unidrv divide cada trabajo de impresión en seis secciones. Para cada sección, Unidrv envía a la impresora los comandos asignados a la sección, en la secuencia especificada. Se definen las secciones siguientes:

JOB_SETUP
Los comandos asignados a la sección JOB_SETUP se envían una vez por trabajo. Son los primeros comandos enviados cuando comienza un nuevo trabajo. Estos comandos se envían desde la implementación de Unidrv de la función DrvStartDoc.

DOC_SETUP
Los comandos asignados a la sección DOC_SETUP se envían antes de enviar la primera página de un documento. Los comandos se envían desde la implementación de Unidrv de la función DrvStartDoc. (Estos comandos también se envían después de que una aplicación llame a la función ResetDC win32. Los comandos de esta sección no deben quitar información descargada, como fuentes temporales y patrones).

PAGE_SETUP
Los comandos asignados a la sección PAGE_SETUP se envían al principio de cada página nueva, antes de comenzar el dibujo. Estos comandos se envían desde la implementación de Unidrv de la función DrvStartPage.

PAGE_FINISH
Los comandos asignados a la sección PAGE_FINISH se envían al final de cada página, una vez completado el dibujo. Estos comandos se envían desde la implementación de Unidrv de la función DrvSendPage.

DOC_FINISH
Los comandos asignados a la sección DOC_FINISH se envían después de enviar la última página de un documento. Los comandos se envían desde la implementación de Unidrv de la función DrvEndDoc. (Los comandos de esta sección no deben quitar información descargada, como fuentes temporales y patrones).

JOB_FINISH
Los comandos asignados a la sección JOB_FINISH se envían una vez por trabajo. Son los últimos comandos enviados cuando finaliza un trabajo. Estos comandos se envían desde la implementación de Unidrv de la función DrvEndDoc.

Dentro de cada una de estas secciones, los comandos se ejecutan en el orden indicado por sus números de secuencia.

Para especificar la sección y el número de secuencia de un comando, use el atributo *Order, que se describe en Atributos de comando. El formato es:

*Order: SectionName.SequenceNumber

donde SectionName es JOB_SETUP, DOC_SETUP, PAGE_SETUP, PAGE_FINISH, DOC_FINISH o JOB_FINISH, y SequenceNumber es un valor numérico.

Los números de secuencia no tienen que ser consecutivos, pero cada número especificado dentro de una sección debe ser único. Los comandos de una sección se ejecutan desde el que tiene el número de secuencia más bajo hasta el que tiene el valor más alto. Por ejemplo, las siguientes entradas indican que las opciones de las características InputBin, PaperSize y Resolution se asignan a la sección DOC_SETUP y se envían en el orden especificado:

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