Compartilhar via


Macros de valor

Importante

A plataforma de impressão moderna é o meio preferido do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) 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 Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.

Uma macro de valor é usada para especificar um conjunto de um ou mais valores que você deseja inserir individualmente e repetidamente em um arquivo GPD (Generic Printer Description). Os valores podem ser qualquer um dos tipos de valor de GPD.

As seguintes regras se aplicam ao uso de macros de valor:

  • Uma definição de macro de valor em um arquivo GPD deve ser localizada antes de qualquer referência a ele.

  • Uma macro de valor definida no nível raiz (ou seja, não dentro de chaves) está disponível por meio do arquivo GPD que a define, depois de definida. Caso contrário, o escopo de uma macro de valor é o conjunto de chaves esquerda e direita que contém sua definição.

  • Uma macro de valor deve ser resolvida para um dos tipos de valor de GPD.

  • Uma definição de macro de valor pode fazer referência a outras macros de valor definidas anteriormente se todos os valores forem cadeias de caracteres de texto, mas uma macro de valor não puder fazer referência a si mesma.

  • As macros de valor não aceitam argumentos.

  • Se você criar duas macros de valor com o mesmo nome, a primeira definição estará em vigor até que o analisador GPD encontre a segunda definição. A segunda definição, então, substitui a primeira. Se o escopo da segunda definição terminar, a primeira definição é restabelecida.

Formato de macro de valor

Para definir uma ou mais macros de valor em um arquivo GPD, use o seguinte formato:

*Macros: *ValueMacroGroupName { ValueMacroBody }

Em que ValueMacroGroupName é um nome exclusivo e ValueMacroBody é um conjunto de nomes de valores exclusivos e valores associados, da seguinte maneira:

ValueMacroName : MacroValue

Em que ValueMacroName é um nome de macro exclusivo e MacroValue representa um tipo de valor de GPD. (MacroValue pode incluir referências a macros de valor definidas anteriormente, desde que a cadeia de caracteres resolvida represente um tipo de valor de GPD.)

Como exemplo, é possível definir macros de valor para um conjunto de prefixos de comando usados com frequência da seguinte maneira:

*Macros: HP4L
{
    LetterCmdPrefix: "<1B>&l2a8c1E<1B>*p0x0Y"
    A4CmdPrefix: "<1B>&l26a8c1E<1B>*p0x0Y"
    Env10CmdPrefix: "<1B>&l81a8c1E<1B>*p0x0Y"
}

ValueMacroGroupName (HP4L no exemplo) é opcional e tratado como um comentário.

Como referenciar macros de valor

Para fazer referência a uma macro de valor, use o seguinte formato:

= ValueMacroName

Em que ValueMacroName é um nome exclusivo, especificado anteriormente na entrada *Macros que define a macro.

Por exemplo, para fazer referência a uma das macros HP4L em uma especificação de comando, é possível usar as seguintes entradas:

*Command: CmdSelect
{
    *Cmd: =LetterCmdPrefix "<1B>*c0t5760x7680Y"
}

A única vez que você pode atribuir um valor combinando referências de macro com valores que não sejam de macro é quando todas as definições de macro e outros valores representam subcadeias de texto ou comando, conforme ilustrado no exemplo. Em todos os outros casos, a referência de macro deve representar todo o valor a ser atribuído.