Standard variables
Important
The modern print platform is Windows' preferred means of communicating with printers. We recommend that you use Microsoft's IPP inbox class driver, along with Print Support Apps (PSA), to customize the print experience in Windows 10 and 11 for printer device development.
For more information, see Modern print platform and the Print support app design guide.
The GPD language defines a set of standard variables that can be referenced within command strings, using the command string format. The Unidrv driver assigns values to these variables. From the point of view of a GPD file, the variables are read-only.
All standard variables are stored as DWORD integers.
The following printer command entry specifies the command string that is sent to an HP LaserJet 4P when a block of raster data is ready:
*Command: CmdSendBlockData: "<1B>*b" %d{NumOfDataBytes} "W"
The following table contains all of the standard variables, in alphabetic order.
Standard Variable Name | Value | Comments |
---|---|---|
BlueValue | Blue component of the current color. | Valid for use in CmdDefinePaletteEntry command strings (see GreenValue, RedValue). |
CurrentFontID | Identification number of the current downloaded soft font. | Valid if current print job includes downloaded soft fonts. |
CurrentPaletteIndex | Current index into the color palette. | Valid for use in CmdSelectPaletteEntry command strings (see GreenValue, RedValue). |
CursorOriginX | X coordinate of cursor origin, in master units. | Valid whenever a print job is in progress. |
CursorOriginY | Y coordinate of cursor origin, in master units. | Valid whenever a print job is in progress. |
DestX | X coordinate of cursor destination, in master units, relative to the cursor origin. | Valid for use in CmdXMoveAbsolute command strings. |
DestXRel | X coordinate of cursor destination, in master units, relative to the current cursor position. | Valid for use in CmdXMoveRelLeft and CmdXMoveRelRight command strings. |
DestY | Y coordinate of cursor destination, in master units, relative to the cursor origin. | Valid for use in CmdYMoveAbsolute command strings. |
DestYRel | Y coordinate of cursor destination, in master units, relative to the current cursor position. | Valid for use in CmdYMoveRelUp and CmdYMoveRelDown command strings. |
FontBold | Set to one if current font is bold, or zero otherwise. | Valid when a font has been specified. |
FontHeight | Height, in master units, of the current font. | Valid when a font has been specified. |
FontItalic | Set to one if current font is italic, or zero otherwise. | Valid when a font has been specified. |
FontMaxWidth | Set to the maximum character increment of all glyphs in the font. | Valid when a font has been specified. |
FontStrikeThru | Set to one if strike-through is enabled for the current font, or zero otherwise. | Valid when a font has been specified. |
FontUnderLine | Set to one if current font is underlined, or zero otherwise. | Valid when a font has been specified. |
FontWidth | Width, in master units, of the current font. | Valid when a font has been specified. |
GraphicsXRes | Current horizontal resolution for graphics, in DPI. | Valid whenever a print job is in progress. |
GraphicsYRes | Current vertical resolution for graphics, in DPI. | Valid whenever a print job is in progress. |
GrayPercentage | Gray level (percentage) to use for gray fill. | Valid for use in CmdRectGrayFill command strings. |
GreenValue | Green component of the current color. | Valid for use in CmdDefinePaletteEntry command strings (see BlueValue, RedValue). |
LinefeedSpacing | Amount of vertical space, in master units, representing a linefeed. | Valid for use in CmdSetLineSpacing command strings. |
NextFontID | Identification number of the next soft font to be downloaded. | Valid for use in CmdSetFontID command strings. |
NextGlyph | The two-byte code of the next glyph to download. | Valid for use in CmdSetCharCode command strings. |
NumOfCopies | Number of copies requested by the user. | Valid whenever a print job is in progress. |
NumOfDataBytes | Number of bytes of raster data ready for transfer. | Valid for use in any CmdSendXXXData command string. If data is compressed, the value is the number of bytes after compression. |
PageNumber | The number of the page currently being printed. Note that this doesn't necessarily correspond to the application's page number, but rather the number of times DrvSendPage has been called. This value is initialized by DrvStartDoc and is incremented by DrvSendPage. For example, if N-up = 4 is selected, PageNumber is incremented to 2 only when the fifth page of the document is being printed. As another example, if a document is printed in reverse order (back to front) the PageNumber standard variable still reports the first page to be printed as page 1, even though this is the last page of the document. This behavior is needed to properly support the auto-duplexing feature. The OEM should use PageNumber only to determine whether the current page is the front or back side. | Valid whenever a print job is in progress. |
PaletteIndexToProgram | Index into the color palette for the next entry to program. | Valid for use in CmdDefinePaletteEntry command strings. (Also see RedValue, GreenValue, BlueValue, CurrentPaletteIndex). |
PatternBrushID | Identification number of a downloaded pattern brush. | Valid for use with CmdDownloadPattern and CmdSelectPattern command strings. |
PatternBrushSize | Size, in bytes, of the current pattern brush. | Valid for use with CmdDownloadPattern command string. |
PatternBrushType | Type of the current pattern brush. Value can be: 2: Shading pattern 3: Cross-hatch pattern 4: User-defined pattern. | Valid for use with CmdDownloadPattern and CmdSelectPattern command strings. |
PhysPaperLength | Portrait-mode length, in y-master units, of the paper currently in use. | Valid whenever a print job is in progress. |
PhysPaperWidth | Portrait-mode width, in master units, of the paper currently in use. | Valid whenever a print job is in progress. |
PrintDirInCCDegrees | Amount of rotation, measured counterclockwise, in degrees. | Valid when the driver sends either the CmdSetSimpleRotation or CmdSetAnyRotation command string. |
RasterDataHeightInPixels | Height, in pixels, of the image represented by current data. | Valid for use in any CmdSendXXXData command string, and in CmdSetSrcBmpHeight command strings. Compression doesn't modify this value. |
RasterDataWidthInBytes | Number of bytes contained in a scan line. | Valid for use in any CmdSendXXXData command string, and in CmdSetSrcBmpWidth command strings. Compression doesn't modify this value. |
RectXSize | Rectangle width, in x-master units. | Valid for use in CmdSetRectWidth command strings. |
RectYSize | Rectangle length, in y-master units. | Valid for use in CmdSetRectHeight command strings. |
RedValue | Red component of the current color. | Valid for use in CmdDefinePaletteEntry command strings (see GreenValue, BlueValue). |
TextXRes | Current horizontal resolution for text, in DPI. | Valid whenever a print job is in progress. |
TextYRes | Current vertical resolution for text, in DPI. | Valid whenever a print job is in progress. |