Partilhar via


Ordem de execução de comando

Importante

A moderna plataforma de impressão é o meio preferido do Windows para comunicar com as impressoras. Recomendamos que utilize o controlador de classe da caixa de entrada IPP da Microsoft, juntamente com as Aplicações de Suporte de Impressão (PSA), para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.

Para obter mais informações, consulte Guia de design do aplicativo de suporte de impressão v1 e v2.

Os comandos da impressora devem ser enviados para o hardware da impressora em uma ordem significativa. Para a maioria dos nomes de comando definidos na linguagem GPD, o Unidrv sabe quando enviar a sequência de escape do comando para a impressora. Existem duas exceções:

O comando de seleção de opções

Comandos de configuração da impressora

Para ambos os tipos de comando, você deve especificar a ordem na qual os comandos devem ser executados.

A ordem de execução do comando é composta por dois componentes -- um nome de seção de trabalho e um número de ordem de sequência. O driver Unidrv divide cada trabalho de impressão em seis seções. Para cada seção, o Unidrv envia à impressora os comandos atribuídos à seção, na sequência especificada. São definidas as seguintes secções:

CONFIGURAÇÃO_DO_TRABALHO
Os comandos atribuídos à seção JOB_SETUP são enviados uma vez por trabalho. Eles são os primeiros comandos enviados quando um novo trabalho começa. Esses comandos são enviados de dentro da implementação do Unidrv da função DrvStartDoc.

DOC_SETUP
Os comandos atribuídos à secção DOC_SETUP são enviados antes do envio da primeira página de um documento. Os comandos são enviados de dentro da implementação da função DrvStartDoc pelo Unidrv. (Esses comandos também são enviados depois que um aplicativo chama a função Win32 ResetDC. Os comandos nesta seção não devem remover informações baixadas, como fontes e padrões de software.)

CONFIGURAÇÃO DE PÁGINA
Os comandos atribuídos à seção PAGE_SETUP são enviados no início de cada nova página, antes do início do desenho. Esses comandos são enviados de dentro da implementação do Unidrv da função DrvStartPage.

PAGE_FINISH
Os comandos atribuídos à seção PAGE_FINISH são enviados no final de cada página, após a conclusão do desenho. Esses comandos são enviados de dentro da implementação do Unidrv da função DrvSendPage.

DOC_FINISH
Os comandos atribuídos à seção DOC_FINISH são enviados após o envio da última página de um documento. Os comandos são enviados a partir de dentro da implementação do Unidrv da função DrvEndDoc. (Nesta seção, os comandos não devem remover informações descarregadas, como fontes suaves e padrões.)

TAREFA_CONCLUÍDA
Os comandos atribuídos à seção JOB_FINISH são enviados uma vez por trabalho. Eles são os últimos comandos enviados quando um trabalho termina. Esses comandos são enviados de dentro da implementação da função DrvEndDoc pelo Unidrv.

Dentro de cada uma dessas seções, os comandos são executados na ordem indicada por seus números de sequência.

Para especificar a seção e o número de sequência de um comando, use o atributo *Order, que é descrito em Command Attributes. O formato é:

*Ordem: NomeDaSecção.NúmeroDeSequência

onde SectionName é um dos JOB_SETUP, DOC_SETUP, PAGE_SETUP, PAGE_FINISH, DOC_FINISH ou JOB_FINISH, e SequenceNumber é um valor numérico.

Os números de sequência não precisam ser consecutivos, mas cada número especificado dentro de uma seção deve ser exclusivo. Os comandos dentro de uma seção são executados desde aquele com o menor número de sequência até aquele com o maior. Por exemplo, as entradas a seguir indicam que as opções para os recursos InputBin, PaperSizee Resolution são atribuídas à seção DOC_SETUP e enviadas na ordem especificada:

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