共用方式為


撰寫 PCL XL GPD 檔案

重要

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

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

本節提供撰寫 PCL XL GPD 檔案的一般資訊,例如 GPD 檔案應包含哪些檔案、如何在 GPD 檔案中啟用 PCL XL,以及如何在 PCL XL 數據流中排序 PCL XL 命令。

Windows 驅動程式套件 (WDK) 包含 \src\print\mini\mdw\vector\pcl6 目錄中的範例 PCL XL GPD 檔案 (p6sample.gpd)。 (某些語言和國家/地區可能無法使用此資源。

要包含的檔案

若要撰寫以 GPD 為基礎的迷你驅動程式,請使用預處理器指示詞 *Include 來指定下列 GPD 檔案:

pclxl.gpd -- 包含 PCL XL 運算子的巨集,讓您可以撰寫更容易閱讀和瞭解的 GPD 程式代碼。 例如,您可以撰寫 =BeginPage ,而不是 <43>。

p6disp.gpd -- 包含pcl5eres.dll和pclxl.dll中包含的資源字串巨集。

p6font.gpd -- 包含pclxl.dll中包含的字型巨集。

pjl.gpd -- 包含 PJL 命令的巨集。

除了上述檔案之外,還包含標準 GPD 檔案、stdnames.gpd 和 ttfsub.gpd。

下列範例示範如何將這些檔案包含在 GPD 檔案中。

*Include: stdnames.gpd
*Include: ttfsub.gpd
*Include: pclxl.gpd
*Include: p6disp.gpd
*Include: p6font.gpd
*Include: pjl.gpd

在 GPD 檔案中啟用 PCL XL 支援

若要啟用 PCL XL 向量支援,您只需要設定 *Personality 屬性。 這會以下列方式完成:

*Personality: = PERSONALITY_PCLXL

PERSONALITY_PCLXL常數定義於 stdnames.gpd 中。

WDK 中包含範例 GPD 檔案 p6sample.gpd,以協助開發人員建立新的 PCL XL 迷你驅動程式。

PCL XL 命令排序

命令的順序在 PCL XL 中比 PCL-5 更為重要。 PCL 數據流中的小型錯誤不太可能影響作業,但 PCL XL 命令只有在數據流的某些點才有效,因此 PCL XL (PCL-6) 中的任何錯誤都會發出 XL 錯誤頁面。 例如,在傳送 BeginSession 運算符之前,您無法傳送 BeginPage 運算符。

PCL XL 資料流的格式類似如下。 (顯示的縮排僅用於強調這些運算子成對的點。

PJL commands
BeginSession
  OpenDataSource
    BeginPage
      <page data>
    EndPage
  CloseDataSource
EndSession
PJL commands

PCL XL 數據流前面加上 PJL 命令,後面接著 PJL 命令。 PCL XL 數據流本身以 BeginSession 運算符開頭,並以 EndSession 運算子結尾。 在該組運算符內,還有另一組運算符:OpenDataSource 和 CloseDataSource。 在該運算符組內,有一或多個 BeginPage/EndPage 運算符組,每個傳送至印表機的頁面各一對。 描述如何轉譯個別頁面的頁面數據,會以 BeginPage/EndPage 運算符組括住。

如需所有 PCL XL 運算子的詳細資訊,請參閱 PCL XL 功能參考通訊協定類別 2.0 檔。

PCL XL GPD 檔案的其他資訊

在 PCL XL GPD 檔案中,*FontFormat 屬性名稱會指定下載字型的方式,限制為兩個值:HPPCL_OUTLINE和HPPCL_RES。 第一個值表示 Unidrv 是下載 TrueType 大綱數據。 第二個值表示 Unidrv 是下載點陣圖軟字型數據。

IHV 可以藉由限制要下載的字型數目,或限制在指定字型中下載的字元數,來降低印表機記憶體使用量。 *MinFontID 和 *MaxFontID 屬性名稱可用來通知 Unidrv 下載其識別元位於這些值所指定範圍內的軟字型。 同樣地,會使用 *MinGlyphID 和 *MaxGlyphID 屬性名稱來限制指定字型中的字元數目,以下載至特定範圍內的字元數目。

Unidrv 的運作方式是假設每個 GPD 檔案都包含自己的任一矩陣。 此外,也建議每個裝置都有自己的任一矩陣。 在 *功能:Dither 自定義功能中指定了任一矩陣。