次の方法で共有


コマンド実行順序

重要

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 は数値です。

シーケンス番号は連続している必要はありませんが、セクション内で指定される各番号は一意である必要があります。 セクション内のコマンドは、最も小さいシーケンス番号から、最も大きいシーケンス番号の順に実行されます。 たとえば、次のエントリは、InputBinPaperSizeResolution の各機能のオプションが 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>"
        }
    }
    ...
}