命令執行順序
重要
新式列印平臺是 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 屬性。 其格式為:
*Order: SectionName。SequenceNumber
其中 SectionName 是其中一個JOB_SETUP、DOC_SETUP、PAGE_SETUP、PAGE_FINISH、DOC_FINISH或JOB_FINISH,而 SequenceNumber 是數值。
序號不一定是連續的,但區段內指定的每個數位都必須是唯一的。 區段內的命令會從序號最低到最高序號的命令執行。 例如,下列專案指出 InputBin、PaperSize 和 Resolution 功能的選項會指派給 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>"
}
}
...
}