プリンター機能属性
重要
Windows でプリンターとの通信手段として推奨されるのは、最新の印刷プラットフォームです。 プリンターデバイス開発におけるWindows 10および11での印刷体験をカスタマイズするために、MicrosoftのIPPインボックスクラスドライバーとPrint Support Apps (PSA)の使用を推奨します。
詳細については、最新の印刷プラットフォームに関する記事および「印刷サポート アプリの設計ガイド」を参照してください。
プリンター機能属性は、すべての用紙サイズと向きに影響を与えるページ余白、回転、およびテキスト印刷機能などのプリンター特性を指定する一般的な印刷属性です。
Attribute name | 属性パラメーター | Comments |
---|---|---|
MemoryUsage | プリンター メモリに格納されているデータの種類を示す定数の一覧。 FONT、RASTER、VECTOR のいずれかまたはその組み合わせを指定できます。 データ型が指定されていてもプリンターでサポートされていない場合、指定は無視されます。 | 省略可能。 指定しない場合、既定値は LIST(FONT, RASTER, VECTOR) です。 詳細については、「プリンターのメモリ構成の説明」を参照してください。 |
OEMCustomData | IPrintOemDriverUni::DrvGetGPDData を呼び出すときにレンダリング プラグインに提供される引用符で囲まれたテキスト文字列。 | レンダリング プラグインが IPrintOemDriverUni::DrvGetGPDData を呼び出す場合に必要です。 テキスト文字列の内容の解釈は、レンダリング プラグインによって決まります。 この属性は、再配置可能なグローバル属性です。これは、ルート レベル (「ルート レベルのみの属性」を参照) に配置して、プリンター構成に依存していないことを示すことができます。また、依存関係がある場合は、Option または Case コンストラクトと共に指定することができます。 |
OutputOrderReversed? | TRUE または FALSE。複数ページのドキュメントを最後のページから最初のページの順に並べ替えるかどうかを示します。 | 省略可能。 指定しない場合の既定値は FALSE です。 OutputOrderReversed? では EXTERN_GLOBAL シンボルを使用しないでください。 |
ReselectFont | Unidrv が現在のフォントを再選択する必要がある操作を示す定数のリスト。 次のいずれかを使用できます。AFTER_GRXDATA - 任意の CmdSendXxxxData ラスター データ出力コマンドの後。 AFTER_XMOVE - 任意の x 移動カーソル コマンドの後。 AFTER_FF - CmdFF コマンドの後。 | 省略可能。 指定しない場合、Unidrv はフォントを再選択しません。 |
ReverseBandOrderForEvenPages? | TRUE または FALSE。逆バンディングが有効かどうかを示します。 この属性は、自動両面印刷機能を備えたプリンター (つまり、用紙の両面に印刷できるプリンター) をサポートするために使用されます。 この表の後のセクションで詳細を説明します。 | この属性の既定値は FALSE です。 この属性を TRUE に設定すると、逆バンディング順序が有効になります。 この属性は、再配置可能なグローバル属性です。 これは、ルート レベル (「ルート レベルのみの属性」を参照) に配置して、プリンター構成に依存していないことを示すことができます。また、依存関係がある場合は、Option または Case コンストラクトと共に指定することができます。 |
RotateCoordinate? | TRUE または FALSE。プリンターがページの向きに合わせて座標系を回転させるコマンドをサポートしているかどうかを示します。 | 省略可能。 指定しない場合の既定値は FALSE です。 TRUE の場合、印刷方向機能の Option エントリでプリンター コマンドを指定する必要があります。 Case エントリ内に配置することはできません。 |
RotateFont? | TRUE または FALSE。プリンターがページの向きに合わせてフォントを自動的に回転させるかどうかを示します。 | 省略可能。 指定しない場合の既定値は FALSE です。 TRUE の場合、RotateCoordinate? も TRUE にする必要があります。 Case エントリ内に配置することはできません。 |
RotateRaster? | TRUE または FALSE。プリンターがページの向きに合わせてラスター データを自動的に回転させるかどうかを示します。 | 省略可能。 指定しない場合の既定値は FALSE です。 TRUE の場合、RotateCoordinate? も TRUE にする必要があります。 Case エントリ内に配置することはできません。 |
TextCaps | プリンターのテキスト機能を示す定数のリスト。 「GetDeviceCaps」で説明されている 1 つ以上の TC_xxx フラグで構成できます。 | 省略可能。 指定しない場合、Unidrv はテキスト機能がサポートされていないことを想定します。 |
ReverseBandOrderForEvenPages? に関する追加情報
自動両面印刷機能の副作用は、印刷されたページがプリンターに送り返された結果、そのページの下辺が次のページの上辺になることです。 2 番目のページで最初のページに対する相対的な向きを維持するには、2 番目のページのラスター イメージを逆の順序でプリンターに送信する必要があります。 つまり、プリンターで上部スキャン ラインを最初に送信して表面を印刷した場合、裏面では最初に下部スキャン ラインを印刷する必要があります。
ReverseBandOrderForEvenPages? が TRUE で両面印刷がオンの場合、Unidrv は偶数ページ (奇数ページの裏面) の各バンドを逆順に列挙します。 OEM レンダリング プラグインは、プリンターに送信する前に、データを 1 バンド分だけキャッシュする必要があります。 各バンド内のスキャン ラインの順序は逆になりません。そのため、プラグインは引き続きそのタスクを処理する必要があります。また、各スキャン ライン内のビットの順序も逆にする必要があります。 これはプラグインにとって余分な作業ですが、プラグインがラスター データをキャッシュする必要がなく、すぐにプリンターへのデータの送信を開始できるという利点があります。
ReverseBandOrderForEvenPages? 属性は、両面印刷が [Flip on Long Edge] (長辺で反転) に設定されている場合にのみ評価されます。 この属性は、両面印刷が [Flip on Short Edge] (短辺で反転) に設定されている場合は無視されます。
ReverseBandOrderForEvenPages? 属性の値とドライバーでシミュレートされた回転の両方が、バンドの列挙方法に影響します。これを次の表に示します。 ヘッダーに TRUE を含む列に指定されているバンド列挙順序は、ReverseBandOrderForEvenPages? が TRUE で、両面印刷が選択され、印刷されるページが 2 番目 (または裏面) である場合に適用されます。 それ以外の場合は、ヘッダーに FALSE を含む列が適用されます。
ドライバーでシミュレートされる回転 | TRUE および偶数ページ | FALSE または奇数ページ |
---|---|---|
CCW_ROTATE90 | SW_LTOR | SW_RTOL |
CCW_ROTATE270 | SW_RTOL | SW_LTOR |
回転なし | SW_UP | SW_DOWN |
凡例: SW_LTOR = 左から右、SW_RTOL = 右から左、SW_UP = 下から上、SW_DOWN = 上から下。
OEM レンダリング プラグインでは、ReverseBandOrderForEvenPages? 属性を使用せずに自動両面印刷をサポートできます。 プラグインは、ページ全体のすべてのデータをキャッシュし、下部スキャン ラインからプリンターに送信することで、これを行うことができます。 スキャン ラインとそのページ上の他のすべてが逆の順序で送信される必要があります。
OEM レンダリング プラグインは、各スキャン ラインのビットの順序と、データをプリンターに送信する際の各バンドのスキャン ラインの順序を逆にする役割を担います。 これをいつ行う必要があるかどうかを判断するには、インデックス SVI_PAGENUMBER を使用して IPrintOemDriverUni::DrvGetStandardVariable を呼び出すことで、PageNumber 標準変数の値を取得します。 ページ番号が奇数の場合、反転操作は必要ありません。 数値が偶数で両面印刷が選択されている場合は、反転操作が必要です。