Macros de valor
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.
Se usa una macro de valor para especificar un conjunto de uno o varios valores que desee insertar individualmente y repetidamente en un archivo de descripción genérica de impresora (GPD). Los valores pueden ser cualquiera de los tipos de valor de GPD.
Las reglas siguientes se aplican al uso de macros de valor:
Una definición de macro de valor dentro de un archivo GPD debe ubicarse antes de cualquier referencia a él.
Una macro de valor definida en el nivel raíz (es decir, no entre llaves) está disponible a través del archivo GPD que la define, después de definirla. De lo contrario, el ámbito de una macro de valor es el conjunto de llaves izquierda y derecha que contienen su definición.
Una macro de valor debe resolverse en uno de los tipos de valor de GPD.
Una definición de macro de valor puede hacer referencia a otras macros de valor definidas anteriormente si todos los valores son cadenas de texto, pero una macro de valor no puede hacer referencia a sí misma.
Las macros de valor no aceptan argumentos.
Si crea dos macros de valor con el mismo nombre, la primera definición estará vigente hasta que el analizador de GPD encuentre la segunda definición. A continuación, la segunda definición reemplaza la primera. Si finaliza el ámbito de la segunda definición, se restablece la primera definición.
Formato de macro de valor
Para definir una o varias macros de valor en un archivo GPD, use el siguiente formato:
*Macros: *ValueMacroGroupName { ValueMacroBody }
Donde ValueMacroGroupName es un nombre único y ValueMacroBody es un conjunto de nombres de valor únicos y valores asociados, como se indica a continuación:
ValueMacroName : MacroValue
Donde ValueMacroName es un nombre de macro único y MacroValue representa un tipo de valor de GPD. (MacroValue puede incluir referencias a macros de valor definidas previamente, siempre que la cadena resuelta represente un tipo de valor de GPD).
Por ejemplo, puede definir macros de valor para un conjunto de prefijos de comando usados con frecuencia como se indica a continuación:
*Macros: HP4L
{
LetterCmdPrefix: "<1B>&l2a8c1E<1B>*p0x0Y"
A4CmdPrefix: "<1B>&l26a8c1E<1B>*p0x0Y"
Env10CmdPrefix: "<1B>&l81a8c1E<1B>*p0x0Y"
}
ValueMacroGroupName (HP4L en el ejemplo) es opcional y se trata como comentario.
Referencia a macros de valor
Para hacer referencia a una macro de valor, use el siguiente formato:
= ValueMacroName
Donde ValueMacroName es un nombre único, especificado anteriormente en la entrada *Macros que define la macro.
Por ejemplo, para hacer referencia a una de las macros HP4L dentro de una especificación de comando, puede usar las siguientes entradas:
*Command: CmdSelect
{
*Cmd: =LetterCmdPrefix "<1B>*c0t5760x7680Y"
}
La única vez que puede asignar un valor mediante la combinación de referencias de macro con valores que no son macros es cuando todas las definiciones de macro y otros valores representan subcadenas de texto o comando, como se muestra en el ejemplo. En todos los demás casos, la referencia de macro debe representar el valor completo que se va a asignar.