Windows Vista の新しいルート レベル専用 GPD 属性
重要
最新の印刷プラットフォームは、Windows がプリンターと通信するための推奨手段です。 プリンターデバイス開発におけるWindows 10および11での印刷体験をカスタマイズするために、MicrosoftのIPPインボックスクラスドライバーとPrint Support Apps (PSA)の使用を推奨します。
詳細については、 最新の印刷プラットフォーム および 印刷サポート アプリ設計ガイドを参照してください。
次の一覧では、Windows Vista 以降の新しい GPD 属性について説明します。 Windows Vista より前のバージョンの Windows との下位互換性メイン維持するには、これらの属性を次のコードで囲む必要があります。
*Ifdef: WINNT_60 ... *Endif: WINNT_60 blocks
PrintProcDuplexOptions
PrintProcDuplexOptions 属性は、印刷プロセッサ内のさまざまな両面印刷オプションを制御します。 この属性は、次のいずれかの値をとることができます。
1:両面印刷でページを反転させる
2:可能であれば余分な空白ページの生成を抑制する
3:上記の両方。
0:上記のどれでもない
PrintProcDuplexOptions が 1 の場合、印刷プロセッサが両面印刷でページを反転させるかどうかを制御します。
n-up = 1 の 4 ページの文書を印刷する必要があり、反転印刷と両面印刷を使用するとします。 反転印刷を行う場合は、最初のページの前に最後のページを印刷します。 両面印刷が必要なので、1 枚の用紙に 2 ページ印刷します。 印刷プロセッサは、次の 2 つの形式のいずれかでページを再生できます (各数値のペアは、1 枚の用紙の両側に印刷される 2 つのページを示します)。
形式 1: (4,3),(2,1)
形式 2: (3,4),(1,2)
Windows Vista より前の印刷プロセッサでは、順序が 2 [(3,4),(1,2)] の形式で印刷されます。 ただし、Windows Vista 以降では、既定の形式は 1 [(4,3),(2,1)] です。 この変更は、多くのプリンターが形式 2 で正しくない出力を持っているために発生しました。つまり、印刷されるページは適切な順序で順序付けされません。
しかし、プリンターが形式 1 で正しく動作する場合は、Windows Vista 以降で何も変更する必要はありません。 ただし、プリンターが形式 1 で正しく動作しない場合に、形式 2 に戻す場合は、GPD ファイルに次のコード例を追加します。
*Ifdef: WINNT_60
*PrintProcDuplexOptions: 1
*Endif: WINNT_60
形式 1 は、一部の向きや入力トレイと出力トレイの組み合わせで適している場合があり、形式 2 は他の組み合わせで適している場合があります。 その結果、Switch/case コンストラクトに PrintProcDuplexOptions 属性を配置できます。
Windows Vista Unidrv より前のドライバーの場合、Windows Vista より前の印刷プロセッサがある場合、形式 2 が既定であり、形式を変更することはできません。それ以外の場合は、Windows Vista 印刷プロセッサがある場合、形式 1 が既定であり、形式を変更することはできません。
Windows Vista Unidrv ドライバーでは、Windows Vista より前の印刷プロセッサがある場合、形式 2 が既定であり、PPD 属性は無視されます。それ以外の場合は、Windows Vista 印刷プロセッサがある場合、形式 1 が既定ですが、 PrintProcDuplexOptions 属性を使用して形式を変更できます。
PrintProcDuplexOptions が 2 の場合、特定の両面シナリオで空白ページが生成されないようにします。
この属性は、両面印刷を実行するときに、余分な空白ページをプリンターに送信するかどうかを制御します。 たとえば、ジョブが 1 ページのジョブで、両面がオンの場合 (n-up = 1 を想定)、シートの片側のみを印刷する必要があります。 現在、プリンターは一方の面を印刷し、その後、裏面に空の空白ページを生成します。 (印刷ジョブは duplex=on で開始されたため、プリンターは用紙を取り出す前に 2 ページを予期します。2 ページ目が印刷されない場合は、一部のプリンターが待機し続けます)。現在のソリューションの欠点は次のとおりです。
生成されたページにより、アカウンティング ソフトウェアとプリンター内のページ カウンターのページ数が不正確になります。
ページがプリンターの途中で (一部の Hewlett Packard DeskJet スタイルのプリンターで) 取り出されると、プリンターが引き戻そうとしている間に、ユーザーがページを引き出そうとすることがあります。 この状況により、ハードウェアの問題が発生する可能性があります。
GPD ファイルで *PrintProcDuplexOptions: 2 を指定することで、上記の問題を回避できます。
この属性が設定されている場合でも、空白のページの最適化は次の限られたケースでのみ実行されることに注意してください。
反転印刷の場合、空白ページの最適化は、ジョブ全体が用紙の片面に収まる場合にのみ実行されます (たとえば、n-up=1 の 1 ページ ジョブや n-up =4 の 4 ページ ジョブ)。 ジョブに複数のシートが必要な場合、最適化は実行されません (プリンター ページが不正確な順序で印刷されるため)。 たとえば、3 ページのジョブの場合、ページは 4,3,2,<blank>ではなく 3,2,1,<blank> という順序で印刷される場合があります。
印刷プロセッサでコピーをシミュレートする必要がある場合、空白のページの最適化は実行されません。 必要な部数が印刷プロセッサーが作成できる部数を超える場合、印刷プロセッサーはコピーをシミュレートします。
次の状況は、シミュレーションが発生し、空白ページが生成される場合の例です (必要な場合)。
- コピーを作成できないプリンター用の 2 つのコピー
次の状況は、シミュレーションが発生せず、余分なページ生成を抑制できる場合の例です。
- コピーを作成できないプリンターの単一コピー ジョブ
- 1 つ以上のコピーを作成できるプリンターの 5 コピー ジョブ
PrintProcDuplexOptions の使用
*Ifdef: WINNT_60
*PrintProcDuplexOptions: 2
*Endif: WINNT_60
場合によっては、余分なページ印刷を気にしない場合もあります。 そのため、Switch/case コンストラクトに PrintProcDuplexOptions 属性を配置できます。
Windows Vista Unidrv より前のドライバーの場合、Windows Vista より前の印刷プロセッサがある場合、プリンターは必要と判断された場合に余分な空白ページを印刷し、この動作を変更することはできません。それ以外の場合、Windows Vista 印刷プロセッサを使用している場合、プリンターは必要と見なされた場合に余分な空白ページを印刷し、この動作を変更することはできません。
Windows Vista Unidrv ドライバーでは、Windows Vista より前の印刷プロセッサがある場合、プリンターは必要と見なされた場合に余分な空白ページを印刷し、PPD 属性は無視されます。それ以外の場合、Windows Vista 印刷プロセッサがあり、適切な GPD 属性と適切な条件が存在する場合 (つまり、空のページ印刷を防止する前に説明した条件)、プリンターは空白ページを印刷しません。
PreAnalysisOptions
PreAnalysisOptions 属性には、次のいずれかの値を指定できます。
0:すべての事前分析モードを無効にします。
1:既定モード。 モノクロの z オーダー テキスト分析と空白バンドの最適化を有効にします。 このモードは、ダウンロード可能なフォントまたはデバイス フォントがサポートされ、高解像度 (600 dpi 以上)、24 bpp レンダリング モードのデバイスで有効になります。
2: 24 bpp ImageProcessing コールバック関数に対して 1 bpp 最適化を有効にします。
4: デバイス StretchBlt のサポートを有効にします。
8: ベンダー事前分析モードを有効にします。
16: ImageProcessing コールバック関数を呼び出す前に、バンドが 24 bpp に変換される 1 bpp のデバッグ モードを有効にします。
UseBMPFontCompression?
UseBMPFontCompression? 属性は、フォントをビットマップとしてダウンロードするときに Unidrv でデータを圧縮するかどうかを制御します。 UseBMPFontCompression の既定値は FALSE です。これは、この属性が GPD ファイルに存在しない場合、Unidrv が圧縮を行わないことを意味します。 この既定値メインビットマップ フォント圧縮機能を持たない以前のバージョンの Unidrv との互換性が保持されます。 この属性は、プリンターでビットマップ フォントの圧縮がサポートされている場合にのみ TRUE に設定する必要があります。圧縮されたビットマップ文字データは、圧縮された実行長と行の繰り返し形式です。
UseMode5Compression?
UseMode5Compression? 属性は、UniDrv でモード 5 圧縮を使用するかどうかを制御します。 モード 5 (または方法 5) 圧縮はアダプティブ圧縮であり、他の複数の圧縮方法 (Unencoded、TIFF、Delta-Row など) を組み合わせて使用できます。 UseMode5Compression の既定値は FALSE です。これは、この属性が GPD に存在しない場合、Unidrv がアダプティブ圧縮を行わないことを意味します。 この既定値は、アダプティブ圧縮機能を持たない以前のバージョンの Unidrv との互換性を保持します。 この属性は、プリンターがアダプティブ圧縮をサポートしている場合にのみ TRUE に設定する必要があります。
UseHPGLPolylineEncoding?
UseHPGLPolylineEncoding? 属性は、Unidrv でポリライン エンコードを使用するかどうかを制御します。 HP-GL/2 では、描画ベクターの Pen Up/Pen Down/Draw Absolute/Draw Relative コマンドがサポートされています。 ポリライン エンコード (PE) コマンドは、ベクトルをより効率的に表現する方法です。
UseHPGLPolylineEncoding? の既定値は FALSE です。これは、この属性が GPD に存在しない場合、Unidrv が PE コマンドを使用しないことを意味します。 この既定値メイン PE コマンドをサポートしていない以前のバージョンの Unidrv との互換性が保持されます。 プリンターでポリライン エンコードがサポートされている場合にのみ、この値を TRUE に設定する必要があります。
PrintSchemaPrivateNamespaceURI
PrintSchemaPrivateNamespaceURI 属性は、PrintTicket または PrintCapabilities のプライベート PPD 機能またはオプションを公開するためにコア ドライバーが使用するプライベート名前空間 URI を定義します。 属性は GPD ドキュメントのルートに含まれている必要があり、PrintTickets および PrintCapabilities ドキュメントで名前空間を定義するために使用される URI の ASCII 表現が含まれています。 その URI は、パブリック スキーマへの明示的なマッピングがない、またはコア ドライバーが認識しないすべての機能とオプションに関連付けられます。
PrintSchemaKeywordMap
PrintSchemaKeywordMap 属性は、GPD ファイルの機能とオプション コンストラクトの下に表示されます。 この属性は、プリンター定義機能で使用するパブリック印刷スキーマ名を示します。 PrintSchemaKeywordMap 属性を使用して、PrintTicket で、Duplex および Collate を除く GPD ファイルで指定されている任意のオプションの名前を変更できます。
GPD パーサーは、ページ サイズや色など、明示的に認識される機能に対してこの属性を無視します。
すべての値は引用符で囲みます。 これらは、GPD で指定されているコード ページが存在する場合、それを使用して Unicode に変換されます。 すべての属性の重複する定義は、他の GPD 属性と同じ方法で解決されます。読み取られた最後の定義が優先されます。
GPD ファイルで既に使用されている印刷スキーマ キーワードに機能をマップすると、対応する PrintCapabilities ドキュメントにその機能が複数回表示されることがあります。 複数回発生すると混乱が発生する可能性があるため、PPD ファイルで使用される印刷スキーマ キーワードに機能をマップしないでください。
GPD パーサーは、InputBin 機能の FORMSOURCE オプションを自動的に生成し、印刷スキーマの AutoSelect キーワードにマップします。 GPD ファイルに、 PrintSchemaKeywordMap 属性を使用してオプションを印刷スキーマ キーワードにマップする InputBin オプションが含まれている場合、印刷スキーマの機能には、デバイス名前空間に FORMSOURCE オプションが含まれます。 AutoSelect は PrintCapabilities ドキュメントに表示され、PPD ファイルの PrintSchemaKeywordMap 属性で指定されているオプションを参照します。
次のコード例は、レイアウトを表示する部分的な GPD ファイルを示しています。
*Feature: HPSTAPLER
{
*Name: "Staple"
*DefaultOption: Off
* PrintSchemaKeywordMap: "Staple"
*Option: Off
{
*Name: "Off"
* PrintSchemaKeywordMap: "Off"
}
*Option: On
{
*Name: "On"
* PrintSchemaKeywordMap: "On"
}
}
IsXPSDriver
IsXPSDriver 属性は、次の GPD 構文を使用します。
*IsXPSDriver?: TRUE | FALSE
Windows Vista Unidrv 構成モジュール (Unidrvui.dll) は、Microsoft Win32 GDI ドライバーと新しい XPSDrv ドライバーの両方に使用できます。 XPSDrv ドライバーに Unidrv 構成モジュールを使用するには、XPSDrv ドライバーの GPD データ ファイルで IsXPSDriver 属性を指定し、その値を TRUE に設定する必要があります。
たとえば、 XPS ドライバーがある場合は、次のコードを使用します。
*IsXPSDriver?: TRUE
Win32 GDI ドライバーに Unidrv 構成モジュールを使用するには、この属性を指定する必要はありません。
UseImageForHatchBrush?
UseImageForHatchBrush? 属性は、次の GPD 構文を使用します。
*Ifdef: WINNT_60
*UseImageForHatchBrush?: TRUE
*Endif: WINNT_60
Microsoft Windows Server 2003 または Windows XP では、Unidrv が HP-GL/2 モードで印刷されるときに、 DrvRealizeBrush 関数でハッチ ブラシを受け取った場合、Unidrv はコマンドを送信して、プリンターが適切なハッチ ブラシを選択します。 Unidrv は、ハッチ ブラシのレンダリング方法を制御しません。 たとえば、通常、行間の間隔は解像度によって制御されます。 解像度が高い場合は間隔が小さくなりますが、解像度が低い場合は間隔が大きくなります。 そのため、解像度が異なる場合、文書の印刷方法が異なる場合があります。
Windows Vista では、GPD で UseImageForHatchBrush? 属性が指定されている場合、Unidrv はビットマップ サーフェスにハッチ ブラシをレンダリングし、そのビットマップをデバイスに送信します。 したがって、Unidrv は、ハッチ ブラシのレンダリング方法を制御できます。
ReverseBandOrder?
ReverseBandOrder? 属性は、次の GPD 構文を使用します。
*Ifdef: WINNT_60
*ReverseBandOrder?: TRUE
*Endif: WINNT_60
ReverseBandOrder? の値は TRUE または FALSE 逆バンディングが有効かどうかを示します。 この属性により、バンディングが逆の順序で行われます。 たとえば、縦のページの場合、バンディングは上から下ではなく下から上に行われます。
この属性は基本的に ReverseBandOrderForEvenPages と同じですが、 両面がアクティブでない場合でも ReverseBandOrder? が考慮されます (ReverseBandOrderForEvenPages? は両面がオンの場合にのみ機能します)、すべてのページに対して機能します (ReverseBandOrderForEvenPages? は偶数ページでのみ機能します)。 ReverseBandOrder? の使用方法とその他の関連情報の詳細については、*ReverseBandOrderForEvenPages?を参照してください。 特に、プラグインはスキャンラインとスキャンラインのビットを反転させる必要があることに注意してください。
*ReverseBandOrderForEvenPages? と *ReverseBandOrder? を組み合わせて使用できる。
ReverseBandOrder? のみが TRUE に設定されている場合、すべてのページに対してバンディングが反転されます。
ReverseBandOrderForEvenPages? のみが TRUE に設定されている場合、プリンターが両面印刷を行う場合、偶数ページの場合、バンディングは逆になります。 両面が設定されていない場合、 ReverseBandOrderForEvenPages? 設定は無視されます。
ReverseBandOrder? と ReverseBandOrderForEvenPages? の両方が設定されている場合、次の処理が行われます。
両面が ON の場合、奇数ページ (つまり、1、3、5、7 など) に対して逆バンディングが実行されます。
両面が OFF の場合、すべてのページに対して逆バンディングが実行されます。
BidiQueryFile
BidiQueryFile 属性は、次の GPD 構文を使用します。
*BidiQueryFile: <GPD or GDL file name>
BidiQueryFile を使用して、プリンター ドライバーの自動構成 BidiQuery か BidiResponse データを含む GPD または GDL ファイル名を指定します。 GPD または GDL ファイル名には、パスを指定しないでください。 自動構成データがドライバーの DataFile GPD ファイル内に含まれている場合は、その GPD ファイルを BidiQueryFile 属性の値として指定することもできます。
次のコード例は、部分的な GPD ファイル内のこの属性の例を示しています。
*Ifdef: WINNT_60
*BidiQueryFile: "ACnfgUni.GDL"
*Endif: WINNT_60