クライアント側レンダリングの既知の問題
クライアント側レンダリングは、ほとんどのプリンター ドライバーに対して透過的であり、ユーザーに明確な利点を提供するため、既定ですべてのドライバーに対して有効になっています。 ほとんどのプリンター ドライバーでは、この機能を有効にしても問題は発生しません。
ただし、プリンター ドライバーで問題が発生した場合は、クライアント側のレンダリング機能を無効にできます。プリンター ドライバーは、以前のバージョンの Windows オペレーティング システムと同様に、印刷サーバーに印刷ジョブをレンダリングします。 システム管理者は、サーバー グループ ポリシーで常に印刷ジョブを表示することで、クライアント側のレンダリングを無効にすることもできます。
Note
クライアント側のレンダリング機能を無効にすると、印刷ジョブのレンダリングがプリント サーバーに移動し、プリント サーバーのパフォーマンスに悪影響を与える可能性があります。
ドライバー パッケージにインストールされているプリンター ドライバーは、クライアント側のレンダリングに問題はありません。
次の一覧では、クライアント側レンダリングに関する既知の問題の一部について説明します。
プリンター ドライバーがカスタム印刷プロセッサを使用しているが、印刷プロセッサがクライアント コンピューターにインストールされていない場合、クライアント側のレンダリングは自動的に無効になります。
場合によっては、ドライバー パッケージとして構成されていないプリンター ドライバーの印刷プロセッサが、ポイントアンドプリント中にクライアント コンピューターにインストールされないことがあります。 印刷スプーラーが問題を検出すると、その印刷キューのクライアント側レンダリングが無効になります。 この問題を回避するには、プリンター ドライバーのドライバー パッケージを作成します。
印刷プロセッサからエラーが返された場合、印刷キューのクライアント側レンダリングは無効になります。
印刷キューに対してクライアント側のレンダリングが無効になった後、印刷スプーラーはサーバー側のレンダリングを使用して印刷ジョブを再試行します。 印刷キューに対してクライアント側のレンダリングが無効になると、印刷キューには、オフライン印刷などのクライアント側レンダリングの利点がなくなります。
標準以外の構成データを使用するプリンター ドライバーでは、プリンター構成データが不完全な場合があります。
ポイントアンドプリントでは、このデータの保存と通信に独自の方法を使用するプリンター ドライバーの完全なプリンター構成データが転送されない場合があります。 この問題を解決するには、SetPrinterData または SetPrinterDataEx 関数を使用してプリンター構成データを格納し、GetPrinterData または GetPrinterDataEx 関数を使用してプリンター構成データを呼び出します。 これらの関数の詳細については、Microsoft Windows SDK のドキュメントを参照してください。
ドライバーが一致しないクライアント側のレンダリング。
プリンタードライバーの不一致は、クライアントコンピューターのプリンタードライバーのバージョンがサーバーと異なる場合に発生します。 通常、プリンター ドライバーの不一致が発生すると、ポイント アンド プリントは、サーバー上のプリンター ドライバーに一致するようにクライアント コンピューター上のプリンター ドライバーを更新します。 場合によっては、クライアント コンピューターの印刷キューで、プリント サーバー上のプリンター ドライバーのバージョンと一致しない印刷ドライバーバージョンを使用することが必要になる場合があります。 たとえば、ポイント アンド プリントでクライアントコンピュータのプリンター ドライバーを更新したくない場合があります。
- クライアント コンピューターで実行するときに、プリント サーバー上のプリンター ドライバーに互換性の問題がある場合。
- ポイント アンド プリントが新しいプリンター ドライバーをダウンロードしたときに発生するネットワーク トラフィックを減らすには。
- デバッグまたはテストを行うとき。
ポイントアンドプリントがプリンタドライバをダウンロードするのを防ぎ、クライアントコンピュータがクライアントコンピュータに既にインストールされている最良のドライバを使用するように強制することができます。 この動作を選択するには、HKLM\SYSTEM\CurrentControlSet\Control\Print\PrinterName\PrinterDriverData\DriverPolicy レジストリ キーの値をプリンター ドライバーの名前に設定します。 PrinterName を印刷キューの名前に置き換えて、プリント サーバーから使用できるプリンター ドライバーではなく、ローカルで使用可能なプリンター ドライバーを使用します。 このレジストリ キーに入力するドライバー名は、クライアント コンピューターにインストールまたはインストールできる互換性のあるプリンター ドライバーの名前である必要があります。
また、AddPrinterConnection2 を呼び出し、PRINTER_CONNECTION_MISMATCH フラグを設定し、pConnectionInfo 引数が参照するPRINTER_CONNECTION_INFO_1構造体でプリンター ドライバーの名前を指定することで、プリンター ドライバーの不一致を使用してプリンター接続をプログラムで作成することもできます。 AddPrinterConnection2 は、Windows SDK のドキュメントに記載されています。
Windows 8 以降では、EMFDespoolingSetting 値がレジストリに存在せず、クライアント コンピューター プロファイルが Mobile プラットフォームである場合、クライアント側のレンダリングは自動的に無効になります。
クライアントがノート PC やタブレット デバイスなどのモバイル プラットフォームの場合、消費電力の節約を有効にするために、この値がレジストリに存在しない場合、スプーラーはクライアント側のレンダリングを自動的に無効にします。 SetPrinterData を呼び出して印刷キューの EMFDespoolingSetting 値を 0 に設定することで、ドライバーでモバイル プラットフォームのクライアント側レンダリングを明示的に有効にすることができます。
コンピューターがモバイル プロファイルまたはデスクトップ プロファイルとして構成されているかどうかを確認するには、msinfo32.exe を使用します。
テスト中に、クライアント側のレンダリング機能によって発生した可能性があるプリンター ドライバーの問題を検出した場合は、ドライバーのクライアント側レンダリングを無効にすることができます。 SetPrinterData を呼び出して印刷キューの EMFDespoolingSetting 値を 1 に設定することで、ドライバーでクライアント側のレンダリングを無効にすることができます。 この値により、印刷キューに接続するすべてのクライアントがサーバー上に印刷ジョブをレンダリングします。