驅動程式功能
重要
新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。
如需詳細資訊,請參閱 新式列印平臺 和 列印支援應用程式設計指南。
驅動程式功能是驅動程式合成的非PPD功能(例如 %OutputFormat 功能)。 為了避免名稱與PPD功能關鍵詞發生衝突,所有驅動程式功能關鍵詞名稱前面都會加上 「%」 字元。 驅動程式功能/選項關鍵詞也會區分大小寫。
若要取得驅動程式支援的所有驅動程式功能關鍵詞清單,外掛程式可以呼叫 EnumFeatures,這會傳回包含驅動程式功能和 PPD 功能的功能關鍵詞清單。 外掛程式接著可以搜尋開頭為 「%」 前置詞的功能關鍵詞名稱,以取得驅動程式功能清單。
下表列出目前支援的驅動程式功能。 數據表中的每個數據列都會列出驅動程式功能關鍵詞、顯示支援的選項、指出功能的選項是否可以在對 EnumOptions 的呼叫中列舉,並提供簡短的描述。
驅動程式功能 | 支援的選項 | 列舉選項 | 描述和批注 |
---|---|---|---|
%AddEuro | "True" “False” |
Yes | 將歐元符號新增至裝置字型。 此功能僅支援層級 2+ 印表機。 對於層級 1 印表機, SetOptions 會忽略此功能,而 GetOptions 一律會傳回 “False”。 |
%CtrlDAfter | "True" “False” |
Yes | 在每個作業之後傳送 Ctrl-D。 印表機黏性 |
%CtrlDBefore | "True" “False” |
Yes | 在每個作業之前傳送 Ctrl-D。 印表機黏性 |
%CustomPageSize | 如需詳細資訊,請參閱下面的附註 1。 | No | 指定 PostScript 自訂頁面大小參數。 檔黏性 |
%GraphicsTrueGray | "True" “False” |
Yes | 將灰色圖形轉換為 PostScript 灰色。 印表機黏性 |
%JobTimeout | NULL 終止的 ANSI 字串,其中包含十進位數位元,代表逾時範圍 0 到 2,147,483,647 的無符號整數秒數。 針對 SetOptions,允許小數字數前後的額外索引標籤或空格字元,但不允許符號符號。 |
No | 指定作業逾時值。 印表機黏性 |
%MaxFontSizeAsBitmap | NULL 終止的 ANSI 字串,包含代表不帶正負號整數圖元的十進位字元,範圍介於 0 到 32,767 之間。 針對 SetOptions,允許小數字數前後的額外索引標籤或空格字元,但不允許符號符號。 |
No | 指定要下載為點陣陣圖的最大字型大小。 印表機黏性 |
%MetafileSpooling | "True" “False” |
Yes | 啟用/停用進階列印功能。 檔黏性 如需詳細資訊,請參閱下面的附註 2。 |
%MinFontSizeAsOutline | NULL 終止的 ANSI 字串,包含代表不帶正負號整數圖元的十進位字元,範圍介於 0 到 32,767 之間。 針對 SetOptions,允許小數字數前後的額外索引標籤或空格字元,但不允許符號符號。 |
No | 指定要下載為大綱的最小字型大小。 印表機黏性 |
%Mirroring | "True" “False” |
Yes | 藉由反轉水準座標來鏡像輸出。 檔黏性 |
%Negative | "True" “False” |
Yes | 藉由反轉黑白值來產生負輸出。 此功能僅支援黑白印表機。 針對彩色印表機, SetOptions 會忽略此功能,而 GetOptions 一律會傳回 “False”。 檔黏性 |
%Orientation | “Portrait”、“Landscape”、“RotatedLandscape” | Yes | 指定輸出方向。 檔黏性 |
%OutputFormat | “Speed”、“Portability”、“EPS”、“Archive” | Yes | 指定 PostScript 輸出格式。 檔黏性 如需詳細資訊,請參閱下面的附註 5。 |
%OutputProtocol | “ASCII”、“BCP”、“TBCP”、“Binary” | Yes | 指定印表機將用於列印作業的通訊協定。 PostScript 印表機假設支援 “ASCII” 和 “Binary”,因此這些選項一律可供使用。 只有在支援 「BCP」 和 「TBCP」 選項時,才能使用。 若要判斷這一點,請檢查全域屬性「通訊協定」。 印表機黏性 |
%OutputPSLevel | "1", "2", "3" | No | 指定要用於列印作業的 PostScript 語言層級。 設定永遠不會大於 「LanguageLevel」 全域屬性中指定的值。 檔黏性 |
%PageOrder | “FrontToBack” “BackToFront” |
Yes | 指定列印頁面的順序。 檔黏性 如需詳細資訊,請參閱下面的附註 3。 |
%PagePerSheet | "1", "2", "4", "6", “9”、“16”、“Booklet” |
Yes | 指定每個實體工作表的邏輯頁數。 這項功能也稱為「N-up」列印。 檔黏性 如需詳細資訊,請參閱下面的附註 4。 |
%PSErrorHandler | "True" “False” |
Yes | 傳送 PostScript 錯誤處理程式。 檔黏性 |
%PSMemory | NULL 終止的 ANSI 字串,包含十進位數位符,代表 PostScript 記憶體的無符號整數數目,範圍介於 0 到 2,147,483,647 之間。 針對 SetOptions,允許小數字數前後的額外索引標籤或空格字元,但不允許符號符號。 |
No | 指定可用的 PostScript 虛擬記憶體數量。 核心驅動程式需要一定數量的可用 PostScript 虛擬記憶體進行處理。 如果 %PSMemory 設為低於此最小值,則會使用最小值作為新值。 目前層級 1 印表機的最小值為 172 KB,層級 2+ 印表機的最小值為 249 KB。 印表機黏性 |
%TextTrueGray | "True" “False” |
Yes | 將灰色文字轉換為 PostScript 灰色。 印表機黏性 |
%TTDownloadFormat | “Automatic”、“Outline”、“Bitmap”、“NativeTrueType” | Yes | 指定 TrueType 字型下載格式。 只有當 「TTRasterizer」 全域屬性表示支援 「Type42」 時,才支援 「NativeTrueType」。。 檔黏性 |
%WaitTimeout | NULL 終止的 ANSI 字串,其中包含十進位數位元,代表逾時範圍 0 到 2,147,483,647 的無符號整數秒數。 針對 SetOptions,允許小數字數前後的額外索引標籤或空格字元,但不允許符號符號。 |
No | 指定等候逾時值。 印表機黏性 |
驅動程式功能關鍵詞的相關注意事項
%CustomPageSize 驅動程式功能有五個選項值:x、y、WidthOffset、HeightOffset 和 FeedDirection。 如需這些參數的詳細說明,請參閱 PostScript 印表機描述檔格式規格 4.3 第 5.16 節。
%CustomPageSize 專案包含 %CustomPageSize 關鍵詞,以及 x、y、WidthOffset、HeightOffset 和 FeedDirection 選項的值。 第一個專案是 %CustomPageSize 關鍵詞,後面接著 NULL 字元。 x、y、WidthOffset 和 HeightOffset 的值會遵循這個關鍵詞,並顯示為不帶正負號小數位的子字串,每個都代表對應選項值的 PostScript 點數。 每個數值後面都會接著一或多個空格或製表符。 字串中的最後一個專案是FeedDirection的值,以NULL字元結尾。 FeedDirection 的選項包括 “LongEdge”、“ShortEdge” (對應至方向 0 和 1),以及 “LongEdgeFlip”、“ShortEdgeFlip” (對應至方向 2 和 3)。 請檢查 *LeadingEdge PPD 功能關鍵詞,以取得支援的摘要指示。
針對 GetOptions,pmszFeatureOptionBuf 所指向的輸出緩衝區如上一段所述。 在下列範例中,x 的值是 612、y 的值是 792、WidthOffset 和 HeightOffset 的值都是 0,而 FeedDirection 的值是 “ShortEdge”。
"%CustomPageSize\0612 792 0 0 ShortEdge\0"
針對 SetOptions,允許小數字數前後的額外索引標籤或空格字元,但不允許符號符號。 否則,pmszFeatureOptionBuf 所指向的輸入緩衝區應該如上述所述建構。
只有在符合下列三個條件時,才支援 %CustomPageSize 驅動程式功能:
PPD 檔案包含 *CustomPageSize 功能。
*PPD-Adobe 關鍵詞的值大於或等於 4.3,或指定 *UseHWMargin: False 來指出滾動裝置。
*PageSize PPD 功能目前選取的選項是 CustomPageSize。
只有在啟用多任務緩衝處理程式EMF多任務緩衝處理時,才支援此功能。
支援時,將此功能的選項設定為 「False」 會導致下列 EMF 相關功能變更:
如果 %PagePerSheet 是 “Booklet”,則會變更為 “1”。
如果 Collate 設定為 “True”(可以直接在 DEVMODEW 結構的公用部分設定,或藉由在 *Collate PPD 功能上呼叫 SetOptions),但目前無法使用 Collate 功能,Collate 將會設定為 “False”。
如果 %PageOrder 與印表機目前的輸出順序設定相反, %PageOrder 會反轉為印表機的值。
只有在啟用多任務緩衝處理程式EMF多任務緩衝處理時,才支援此功能。
支援此功能時,設定此功能可能會導致發生下列情況:
如果印表機的PPD檔案包含 *OutputOrder 功能關鍵詞,則會將其選項選取範圍變更為符合 %PageOrder 功能之新設定的輸出順序。 這樣做是為了防止多任務緩衝處理程序執行不必要的頁面順序模擬。
如果印表機的 PPD 檔案不包含 *OutputOrder 功能,且 %PageOrder 驅動程式功能的新設定與印表機目前的輸出順序設定相反,且 %MetafileSpooling 驅動程式功能為 “False”,則 %MetafileSpooling 會重設為 “True”。
只有在啟用多任務緩衝處理EMF多任務緩衝處理且雙工功能可供使用時,才支援 「Booklet」 選項。
支援 「Booklet」 選項時,將 %PagePerSheet 驅動程式功能設定為 「Booklet」 可能會導致下列變更:
如果 %MetafileSpooling 驅動程式功能為 “False”,則會重設為 “True”。
如果 *雙工 PPD 功能設定為 [無],則 *雙工功能會重設為PPD 檔案中定義的第一個非Simplex 選項。
除了 “EPS” (封裝 PostScript),%OutputFormat 驅動程式功能中指定的格式會根據下列兩個特性分類:
輸出 PostScript 程式代碼與頁面順序無關嗎?
輸出 PostScript 程式代碼是否包含裝置控制命令(通常使用 setpagedevice 運算符)?
類別 頁面順序獨立 setpagedevice 封存 是 No 可攜性 Yes Yes 速度 No Yes
在驅動程式功能關鍵詞上呼叫 GetOptions 時,如果無法辨識所要求的功能關鍵詞,或辨識功能關鍵詞,但在目前的檔黏性或列印機黏性模式中不受支援(請參閱取代驅動程式提供的屬性表頁面),則只會忽略此功能,而且輸出緩衝區不會包含其功能/選項關鍵詞組。
例如,假設 呼叫 GetOptions 方法,而且 pmszFeaturesRequested 輸入緩衝區包含下列字串(MULTI_SZ格式):
"Resolution\0%CustomPageSize\0Unknown_Name\0%Orientation\0\0"
GetOption 傳回之後,pmszFeatureOptionBuf 輸出緩衝區可以包含此字串(也以MULTI_SZ格式):
"Resolution\0300dpi\0%CustomPageSize\0612 792 0 0 ShortEdge\0%Orientation\0RotatedLandscape\0\0"
請注意,第一個字串中列出的Unknown_Name功能不會出現在第二個字元串中,因為它無法由 Pscript 驅動程式辨識。 其他功能、Resolution、 %CustomPageSize 和 %Orientation 都會出現在輸出字串中,以及其目前的選項,分別是 “300dpi”、“612 792 0 0 ShortEdge”和 “RotatedLandscape”。 如需 %CustomPageSize 選項的說明,請參閱驅動程式功能。
當在驅動程式功能關鍵詞上呼叫 SetOptions 時,如果在 pmszFeatureOptionBuf 所指向的輸入緩衝區中呼叫要求的 feature 關鍵詞或其 option 關鍵詞,或辨識該功能,但在目前的檔黏性或列印機黏模式中不支援此功能(請參閱取代驅動程式提供的屬性表頁面或可辨識 feature 關鍵詞及其 option 關鍵詞,但該功能的選項關鍵詞無效(例如,嘗試在不支援 Type42 TTRasterizer 的印表機上嘗試將 %TTDownloadFormat 設定為 “NativeTrueType”),則會忽略該功能/選項組,且該功能的目前選項將繼續生效。
pmszFeatureOptionBuf 所指向之緩衝區中的功能/選項關鍵片語順序可能會影響 SetOptions 呼叫的結果。 例如,下列兩個不同的訂單有不同的結果。
pmszFeatureOptionBuf | %PagePerSheet | %MetafileSpooling |
---|---|---|
“%MetafileSpooling\0False\0%PagePerSheet\0Booklet\0\0” | “摺頁冊” | "True" |
“%PagePerSheet\0Booklet\0%MetafileSpooling\0False\0\0” | 「1」 | “False” |
如需這些結果發生原因的說明,請參閱上述 %MetafileSpooling 上的附註 3。