コマンド実行順序
重要
Windows でプリンターとの通信手段として推奨されるのは、最新の印刷プラットフォームです。 プリンターデバイス開発におけるWindows 10および11での印刷体験をカスタマイズするために、MicrosoftのIPPインボックスクラスドライバーとPrint Support Apps (PSA)の使用を推奨します。
詳細については、最新の印刷プラットフォームに関する記事および「印刷サポート アプリの設計ガイド」を参照してください 。
プリンター コマンドは、意味のある順序でプリンター ハードウェアに送信する必要があります。 GPD 言語で定義されているほとんどのコマンド名において、Unidrv はコマンドのエスケープ シーケンスをプリンターに送信するタイミングを認識します。 ただし、例外が 2 つあります。
これらのコマンドは、どちらの種類でも、コマンドの実行順序を指定する必要があります。
コマンド実行順序は、ジョブ セクション名とシーケンス順序番号という 2 つのコンポーネントで構成されます。 Unidrv ドライバーは、各印刷ジョブを 6 つのセクションに分割します。 各セクションについて、Unidrv は、指定したシーケンスで、セクションに割り当てられたコマンドをプリンターに送信します。 次のセクションが定義されています。
JOB_SETUP
JOB_SETUP セクションに割り当てられたコマンドは、ジョブごとに 1 回送信されます。 これらは、新しいジョブの開始時に送信される最初のコマンドです。 これらのコマンドは、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 セクションに割り当てられたコマンドは、ジョブごとに 1 回送信されます。 これらは、ジョブが終了したときに送信される最後のコマンドです。 これらのコマンドは、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>"
}
}
...
}