共用方式為


選項定義

本主題不是最新的。 如需最新的資訊,請參閱 列印架構規格

當您定義選項時,關鍵考慮是這樣做的方式,使其可以有意義地與相同功能中包含的其他 Option 實例進行比較。 比較必須有意義,因為Option實例不僅用來定義裝置的組態,而且與用來建立組態的裝置或 PrintCapabilities 無關的工作。 功能中的其他 Option 實例可以出現在相同的 PrintCapabilities 檔中,或是另一個代表不同裝置的 PrintCapabilities 檔、另一方獨立定義的 PrintCapabilities 檔。 用戶端選取用來轉譯作業或文件的裝置組態之後,該組態通常會以 PrintTicket 的形式儲存,以及作業或檔。 PrintTicket 包含一組 Option 實例,通常是 PrintCapabilities 檔中定義的每個功能。 選項實例必須可攜式且必須保留列印意圖,如此一來,當這個 PrintTicket 提供給不同的裝置時,就可以傳達意圖,即使是具有不同作者撰寫的不同 PrintCapabilities 檔也一樣。 這項可移植性的主要優點是,如果不同的裝置未特別支援 PrintTicket 中包含的選項,裝置驅動程式或子系統就能夠識別並選取功能最接近的選項。

驅動程式的主要 PrintTicket 函式之一是識別 PrintCapabilities 檔中最符合 PrintTicket 所列特定 Option 的裝置 Option。 在這個比對或設備驅動器定義的評分程式期間,PrintTicket 中的選項稱為 參考 選項,而 PrintCapabilities 檔中的 Option 稱為 候選 選項。 一般比對計量是候選和參考 Option 實例中相符的 ScoredProperty 實例數目;較大量的相符專案通常表示列印意圖的保留效果較佳。 在您的評分程式中,您可能會選擇為某些 ScoredProperty 元素提供比其他人更大的權數。

您可以藉由確保屬於相同功能的所有 Option 實例都有一或多個 ScoredProperty 通用中的元素,讓 Option 實例可攜式存取。 這表示每個 Option 實例中會出現一組 ScoredProperty 元素(屬於相同的功能)。 例如,如果每個 Option 實例包含定義內建 PageMediaSize 屬性的 ScoredProperty 元素,則 PageMediaSize 功能的選項實例可以移植:MediaSizeWidth 和 MediaSizeHeight。 然後,裝置驅動程式或子系統程式代碼可以藉由比較這些 ScoredProperty 值的差異,判斷兩個 Option 實例的同意程度。 如果 PrintCapabilities 檔中沒有與 PrintTicket 中完全相符的選項,則設備驅動器可以輕鬆地判斷並選取具有最接近相符媒體維度的選項。

假設有兩個 物件(在此案例中為 Option 實例)具有共同 元素,或者同等地,如果滿足下列三個條件,則 對應的元素

  1. 這兩個元素屬於相同的項目類型。

  2. 兩個元素的名稱屬性相同(或兩個元素都沒有包含名稱屬性)。

  3. 要比較之元素的父系鏈結必須符合條件 1 和 2 的兩個物件。

例如,假設有兩個 Option 實例,其中每個實例都包含 ScoredProperty 實例,而且每個 ScoredProperty 實例都包含 Property 實例。 顯然,滿足第一個條件(兩個 Property 實例是相同的類型),而第三個條件的一部分則滿足(Property 實例的父代是相同類型 ScoredProperty,而這些專案的父系也是相同類型的 Option 實例。 如果 Property 實例、ScoredProperty 實例和 Option 實例的名稱屬性分別相同或未提供,則這兩個 Option 實例都有共通的專案。

從上述,建立 Option 實例的第一個步驟是定義一組存在於大部分或所有 Option 實例中的 ScoredProperty 元素。 如果您的裝置組態屬性可由標準功能表示(列印架構關鍵詞中列出的屬性),請注意標準 Option 實例中常見的 ScoredProperty 元素。 您應該確定您引進的任何新 Option 實例也包含這些 ScoredProperty 元素。 您隨時可以視需要新增其他 ScoredProperty 元素,以區分您的 Option 實例與標準 Option 實例。 如果有充分的理由,您甚至可以刪除一或多個 CommondProperty 元素,不過這可減少這類選項的可移植性。 當然,可移植性考慮建議使用未修改的標準 Option 實例,除非您的 Option 和標準 Option 實例之間有一些內在差異,而該實例必須反映在新的 Option 實例中。

下列範例說明您可能想要將 ScoredProperty 元素新增至 Option 實例的情況。 PageMediaSize 功能的所有標準 Option 實例都有 MediaSizeWidth 和 MediaSizeHeight ScoredProperty 元素。 假設您的裝置可以藉由將紙張橫向 (LongEdgeFirst) 或縱向 (ShortEdgeFirst) 饋送,以支援其中一個標準 Letter 媒體大小。 假設您不想引進新的摘要方向功能來公開這種自由度,您可以改為修改 Letter 的兩個 PageMediaSize 選項實例,以納入紙張摘要方向。 針對這兩個 Letter Option 實例,從標準 PageMediaSize Option 實例開始,並新增 ScoredProperty 元素來代表 FeedDirection。 在一個 Option 實例中,將 FeedDirection ScoredProperty 設定為 LongEdgeFirst;在其他 Option 實例中,將 FeedDirection 設定為 ShortEdgeFirst。 請注意,這些新的Option實例會維持其可移植性。 如果代表 Letter 的 Option,ShortEdgeFirst 會儲存至 PrintTicket,而支援僅支援 Letter 標準選項的不同裝置會選取轉譯作業,則 Option 比對程式代碼可以快速判斷標準 Option Letter 與 Option Letter、ShortEdgeFirst 最相符。 這是最佳比對的原因是所有 ScoredProperty 實例都同意,但 Letter 標準選項中不存在的 FeedDirection ScoredProperty 除外。

您也可能遇到選項的修改實際上會變更已修改選項的意義,使得修改過的 Option 不再被視為原始的特製化案例。 在這種情況下,您應該變更 Option 的名稱,以反映修改過的 Option 實例與未修改的選項實例之間的差異。 只有特定裝置的 PrintCapabilities 檔作者可以決定裝置所提供的 Option 是否與標準 Option 實例完全不同,以保證不相容的定義。

現在,請考慮您的裝置具有未對應至任何標準功能實例的裝置組態屬性的情況。 在此情況下,您無法依賴標準 Option 實例來提供 Common 中的 ScoredProperty 元素清單。 當您建立 ScoredProperty 實例時,主要目標是區分每個選項與功能中的其他選項,並描述使用者為何會選取另一個選項。 基準是使用唯一的名稱屬性來描述每個 Option 的特性,而保留 name 屬性的 ScoredProperty 會成為用來判斷通用元素的選項。

建立一組通用的 ScoredProperty 元素之後,將適當的值指派給每個 ScoredProperty 以建立每個 Option 是一件簡單的事情。 如同上一個範例,對於某些 Option 實例,您可能需要新增其他 ScoredProperty 實例,或刪除一些常見的元素,以建立適當的 Option 實例。

請注意,列印架構需要一組 ScoredProperty 實例、其位置,以及選項中指派給每個 ScoredProperty 的值必須維持不變,與組態無關。 列印架構的整個概念仰賴選項實例具有固定、可識別的屬性和 ScoredProperty 實例,這些實例會跨許多裝置共用。

列印架構規格