在 GPD 中启用 HP-GL/2 矢量图形支持 (PCL-5e)

重要

新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅新式打印平台打印支持应用设计指南

要在 Windows XP 上启用 HP-GL/2 矢量支持,必须执行两项操作:

  1. *Personality 属性设置为 PERSONALITY_HPGL2。

  2. 定义具有 HPGL2MODE 选项的自定义 GraphicsMode 功能。 要同时提供光栅图形支持,请包含 RASTERMODE 选项。

可以通过这种方式来设置个性属性:

*Personality: =PERSONALITY_HPGL2

PERSONALITY_HPGL2 常量在 stdnames.gpd 中定义。

以下 GPD 示例展示了设置 *Personality 属性和定义具有矢量图形模式和光栅图形模式的 GraphicsMode 自定义功能。 请注意,整个块都受 *Ifdef GPD 编译器指令的保护。

*Ifdef: WINNT_51
*Personality: =PERSONALITY_HPGL2
*Feature: GraphicsMode
{
    *rcNameID: =GRAPHICSMODE_DISPLAY
    *FeatureType: DOC_PROPERTY
    *HelpIndex: 12000
    *DefaultOption: HPGL2MODE
    *Option: HPGL2MODE
    {
        *rcNameID: =GRAPHICSMODE_HPGL2_DISPLAY
    }
    *Option: RASTERMODE
    {
        *rcNameID: =GRAPHICSMODE_RASTER_DISPLAY
    }
}
*Endif:

上述指令中使用的 WINNT_51 参数适用于 Unidrv 版本,而非操作系统版本。 对于在 Windows 2000 上运行的 Windows XP Unidrv 打印机驱动程序,定义了 WINNT_51 参数并对块进行了编译。 对于早期的 Unidrv 版本,无论操作系统版本如何,该参数都是未定义的,并且该块不会被编译。

彩色打印机的 GPD 文件还应定义 ColorMode 功能,如以下通用示例所示。 请注意,打印机的特定详细信息可能要求更改某些值。

*Feature: ColorMode
{
  *rcNameID: =COLOR_PRINTING_MODE_DISPLAY
  *HelpIndex: 12004
  *DefaultOption: 24bpp
  *Option: Mono
   {
     *rcNameID: =MONO_DISPLAY
     *DevNumOfPlanes: 1
     *DevBPP: 1
     *Color?: FALSE
     *Command: CmdSelect
      {
        *Order: PAGE_SETUP.16 
        *Cmd: "<1B>&b1M"
      }
   }
  *Option: 24bpp
   {
     *rcNameID: =24BPP_DISPLAY
     *DevNumOfPlanes: 1
     *DevBPP: 24
     *DrvBPP: 24
     *PaletteSize: 256
     *PaletteProgrammable?: TRUE
     *Command: CmdDefinePaletteEntry
      {
        *Cmd : "<1B>*v" %d{RedValue}"a"
+                       %d{GreenValue}"b"
+                       %d{BlueValue}"c"
+                       %d{PaletteIndexToProgram}"I"
 }
     *Command: CmdSelectPaletteEntry { *Cmd : "<1B>*v" 
+                        %d{CurrentPaletteIndex}"S" }
     *Command: CmdSetSrcBmpWidth { *Cmd : "<1B>*r" 
+                        %d{RasterDataWidthInBytes / 3}"S" }
     *Command: CmdSelect
      {
        *Order: PAGE_SETUP.16
        *Cmd: "<1B>*v1N<1B>*v1O<1B>*l184O<1B>*v6W<000308080808>
+              <1B>*v0a0b0c7i255a255b255c"
      }
   }
}