共用方式為


命令執行順序

重要

新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。

如需詳細資訊,請參閱 新式列印平臺列印支援應用程式設計指南

印表機命令必須以有意義的順序傳送至印表機硬體。 對於 GPD 語言中定義的大部分命令名稱,Unidrv 知道何時將命令的逸出序列傳送至印表機。 有兩種例外狀況:

選項 選取命令

列印機組態命令

針對這兩種命令類型,您必須指定應該執行命令的順序。

命令執行順序是由兩個元件所組成:作業區段名稱和序號。 Unidrv 驅動程式會將每個列印作業分成六個區段。 針對每個區段,Unidrv 會在指定的序列中,將指派給區段的命令傳送給印表機。 下列各節已定義:

JOB_SETUP
指派給JOB_SETUP區段的命令會在每個作業傳送一次。 它們是新作業開始時所傳送的第一個命令。 這些命令會從 Unidrv 的 DrvStartDoc 函式實作中傳送。

DOC_SETUP
指派給DOC_SETUP區段的命令會在傳送檔的第一頁之前傳送。 命令會從 Unidrv 的 DrvStartDoc 函式實作傳送。 (這些命令也會在應用程式呼叫 Win32 ResetDC 函式之後傳送。本節中的命令不得移除下載的資訊,例如軟字型和模式。

PAGE_SETUP
指派給PAGE_SETUP區段的命令會在繪圖開始之前,在每個新頁面的開頭傳送。 這些命令會從 Unidrv 的 DrvStartPage 函式實作內傳送。

PAGE_FINISH
指派給PAGE_FINISH區段的命令會在繪圖完成之後,在每個頁面的結尾傳送。 這些命令會從 Unidrv 的 DrvSendPage 函式實作中傳送。

DOC_FINISH
指派給 DOC_FINISH 區段的命令會在傳送檔的最後一頁之後傳送。 命令會從 Unidrv 的 DrvEndDoc 函式實作內傳送。 (本節中的命令不得移除下載的資訊,例如軟字型和圖樣。

JOB_FINISH
指派給JOB_FINISH區段的命令會在每個作業傳送一次。 它們是作業結束時傳送的最後一個命令。 這些命令會從 Unidrv 的 DrvEndDoc 函式實作內傳送。

在這些區段中,命令會依序號所指示的順序執行。

若要指定命令的區段和序號,請使用命令屬性中所述的 *Order 屬性。 其格式為:

*OrderSectionNameSequenceNumber

其中 SectionName 是其中一個JOB_SETUP、DOC_SETUP、PAGE_SETUP、PAGE_FINISH、DOC_FINISH或JOB_FINISH,而 SequenceNumber 是數值。

序號不一定是連續的,但區段內指定的每個數位都必須是唯一的。 區段內的命令會從序號最低到最高序號的命令執行。 例如,下列專案指出 InputBinPaperSizeResolution 功能的選項會指派給 DOC_SETUP 區段,並以指定的順序傳送:

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