印刷
ここでは、印刷のベストプラクティスについて説明します。
インストール
Linux VDAでは、cupsフィルターとfoomaticフィルターの両方が必要です。フィルターはVDAとともにインストールされます。フィルターは、ディストリビューションに基づいて手動でインストールすることもできます。次に例を示します:
RHEL 7の場合:
sudo yum –y install cups
sudo yum -y install foomatic-filters
<!--NeedCopy-->
構成
Citrixが提供するユニバーサルプリンタードライバーは3種類(Postscript、pcl5、pcl6)です。ただし、ユニバーサルプリンタードライバーがクライアントプリンターと互換性がない可能性があります。この場合、以前のリリースでの唯一のオプションは、~/.CtxlpProfile$CLIENT_NAME構成ファイルを編集することでした。バージョン1906以降では、代わりにCitrix Studioで [プリンタードライバーのマッピングと互換性] ポリシーを構成するオプションが追加されています。
Citrix Studioで [プリンタードライバーのマッピングと互換性] ポリシーを構成するには:
- [プリンタードライバーのマッピングと互換性] ポリシーを選択します。
- [追加] をクリックします。
- [ドライバー名] にクライアントプリンターのドライバー名を入力します。Linux向けCitrix Workspaceアプリを使用している場合は、代わりにプリンター名を入力します。
-
[置換] を選択し、VDAのドライバーファイルへの絶対パスを入力します。
注:
- PPDドライバーファイルのみがサポートされています。
- [プリンタードライバーのマッピングと互換性] ポリシーのその他のオプションはサポートされていません。[置換] のみが選択可能になります。
使用状況
公開デスクトップおよび公開アプリケーションの両方から印刷できます。クライアント側のデフォルトプリンターのみが、Linux VDAセッションに割り当てられます。プリンター名はデスクトップとアプリケーションとで異なります。
-
公開デスクトップの場合
CitrixUniversalPrinter:$CLIENT_NAME:dsk$SESSION_ID
-
公開アプリケーションの場合
CitrixUniversalPrinter:$CLIENT_NAME:app$SESSION_ID
注:
同一ユーザーが公開デスクトップと公開アプリケーションの両方を開いた場合は、どちらのプリンターもセッションで使用できます。公開アプリケーションセッション内でのデスクトッププリンターを使用した印刷、または公開デスクトップでのアプリケーションプリンターを使用した印刷は失敗します。
トラブルシューティング
印刷できない
印刷が正しく機能しない場合、印刷デーモンctxlpmngtとCUPSフレームワークを確認します。
印刷デーモンctxlpmngtはセッションごとのプロセスで、セッション期間を通して実行されている必要があります。次のコマンドを実行して、印刷デーモンが実行中であることを確認します。ctxlpmngtが実行中でない場合は、コマンドラインから手動でctxlpmngtを起動します。
ps –ef | grep ctxlpmngt
<!--NeedCopy-->
それでも印刷が機能しない場合は、CUPSフレームワークを確認します。ctxcupsサービスはプリンター管理に使用され、Linux CUPSフレームワークと通信します。これはマシンごとの単一プロセスであり、以下のコマンドを実行して確認できます:
service ctxcups status
<!--NeedCopy-->
CUPSログを収集するための追加手順
CUPSログを収集するには、以下のコマンドを実行してCUPSサービスファイルを構成します。構成しないと、CUPSログがhdx.logで記録されません:
sudo service cups stop
sudo vi /etc/systemd/system/printer.target.wants/cups.service
PrivateTmp=false
sudo service cups start
sudo systemctl daemon-reload
<!--NeedCopy-->
注:
この構成は、問題が発生した場合に完全な印刷ログを収集することのみを目的としています。この構成によりCUPSのセキュリティが破られるため、通常の状況ではこの構成はお勧めしません。
印刷出力が文字化けする
対応していないプリンタードライバーを使用していることが、出力の文字化けの原因になっている可能性があります。ユーザーごとのドライバー構成を使用できるため、~/.CtxlpProfile$CLIENT_NAME 構成ファイルを編集して構成できます:
[DEFAULT_PRINTER]
printername=
model=
ppdpath=
drivertype=
<!--NeedCopy-->
重要:
printernameは、現在のクライアント側の通常使うプリンターの名前が指定されているフィールドです。これは読み取り専用の値です。編集しないでください。
ppdpath、model、drivertypeの各フィールドは、マップされたプリンターに対していずれか1つのフィールドしか有効にならないため、同時には設定できません。
-
ユニバーサルプリンタードライバーがクライアントプリンターに対応していない場合、model=オプションを使用してネイティブプリンタードライバーのモデルを構成します。プリンターの現在のモデル名は、lpinfoコマンドを使用して表示できます:
lpinfo –m … xerox/ph3115.ppd.gz Xerox Phaser 3115, SpliX V. 2.0.0 xerox/ph3115fr.ppd.gz Xerox Phaser 3115, SpliX V. 2.0.0 xerox/ph3115pt.ppd.gz Xerox Phaser 3115, SpliX V. 2.0.0 <!--NeedCopy-->
次のようにして、プリンターに一致するようにモデルを設定できます。
model=xerox/ph3115.ppd.gz <!--NeedCopy-->
-
ユニバーサルプリンタードライバーがクライアントプリンターに対応していない場合、ネイティブプリンタードライバーのPPDファイルのパスを構成します。ppdpathの値は、ネイティブプリンタードライバーファイルの絶対パスです。
たとえば、ppdドライバーが/home/tester/NATIVE_PRINTER_DRIVER.ppdにある場合は、次のようになります:
ppdpath=/home/tester/NATIVE_PRINTER_DRIVER.ppd <!--NeedCopy-->
-
Citrixが提供するユニバーサルプリンタードライバーは3種類(Postscript、pcl5、pcl6)です。プリンターのプロパティに基づいてドライバーの種類を構成できます。
たとえば、クライアントが通常使うプリンターのドライバーの種類がPCL5である場合は、drivertypeを次のように指定します:
drivertype=pcl5 <!--NeedCopy-->
出力サイズがゼロ
別の種類のプリンターを試します。また、CutePDFやPDFCreatorなどの仮想プリンターを使用してみて、この問題がプリンタードライバーに関連するものかどうかを確認します。
印刷ジョブは、クライアントが通常使用するプリンターのドライバーによって異なります。現在適用されているドライバーの種類を特定することが重要です。クライアントのプリンターがPCL5ドライバーを使用している一方で、Linux VDAがPostScriptドライバーを選択していると、問題が発生する場合があります。
プリンタードライバーの種類が正しい場合は、次の手順に従って問題を特定します。
- 公開デスクトップセッションにログオンします。
- vi ~/.CtxlpProfile$CLIENT_NAME コマンドを実行します。
-
次のフィールドを追加して、スプールファイルをLinux VDAに保存します:
deletespoolfile=no <!--NeedCopy-->
-
いったんログオフしてからログオンし直して、構成の変更を読み込みます。
-
ドキュメントを印刷して問題を再現します。印刷が完了すると、/var/spool/cups-ctx/$logon_user/$spool_file にスプールファイルが保存されます。
-
スプールファイルが空であるかどうかを確認します。スプールファイルのサイズが0の場合は、これが問題になります。Citrixサポートに印刷ログを提供して、ガイダンスに従ってください。
-
スプールファイルのサイズが0でない場合は、ファイルをクライアントにコピーします。スプールファイルの内容は、クライアントが通常使用するプリンタードライバーの種類によって異なります。マップされたプリンターの(ネイティブ)ドライバーがPostScriptである場合、スプールファイルはLinux OSで直接開くことができます。内容が正しいかを確認します。
スプールファイルがPCLの場合、またはクライアントOSがWindowsの場合は、スプールファイルをクライアントにコピーし、別のプリンタードライバーを使用してクライアント側のプリンターで印刷します。
-
マップされたプリンターが別のプリンタードライバーを使用するように変更します。以下では、PostScriptクライアントプリンターを例として使用します:
-
アクティブセッションにログオンして、クライアントデスクトップでブラウザーを開きます。
-
印刷管理ポータルを開きます:
localhost:631 <!--NeedCopy-->
-
マップされたプリンター [CitrixUniversalPrinter:$ClientName:app/dsk$SESSION_ID] を選択し、[プリンターの変更] をクリックします。この操作には管理者権限が必要です。
-
CUPSとCTX間の接続を保持したまま[続行]をクリックし、プリンタードライバーを変更します。
-
[Make] フィールドと [Model] フィールドで、Citrix UPDドライバーではなく別のドライバーを選択します。たとえば、CUPS-PDF仮想プリンターがインストールされている場合は、[汎用CUPS-PDFプリンター]ドライバーを選択します。変更を保存します。
-
このプロセスが正常に完了した場合は、ドライバーのPPDファイルパスを.CtxlpProfile$CLIENT_NAMEで設定し、マップされたプリンターが新たに選択したドライバーを使用できるようにします。
-
既知の問題
Linux VDAでの印刷について、次の問題が確認されています。
CTXPSドライバーが一部のPLCプリンターに対応しない
印刷出力が適切でない場合は、プリンタードライバーを、製造元から提供されたネイティブプリンタードライバーに設定してください。
サイズの大きな文書の印刷が遅い
ローカルのクライアントプリンターでサイズの大きなドキュメントを印刷すると、そのドキュメントはサーバーとの接続を介して転送されます。遅い接続では、この転送に時間がかかることがあります。
別のセッションからプリンター通知と印刷ジョブ通知が表示される
Linuxでのセッションの考え方は、Windowsオペレーティングシステムとは異なります。したがって、すべてのユーザーがシステム全体の通知を受け取ります。次のCUPS構成ファイルを変更して、これらの通知を無効にできます:/etc/cups/cupsd.conf。
次のように、構成されている現在のポリシー名がこのファイルに記述されています。
DefaultPolicy default
ポリシー名がdefaultである場合は、次の行をデフォルトポリシーのXMLブロックに追加します:
<Policy default>
# Job/subscription privacy...
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
… …
<Limit Create-Printer-Subscription>
Require user @OWNER
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
<!--NeedCopy-->