印刷
この記事では、印刷のベストプラクティスに関する情報を提供します。
インストール
Linux VDAには、cupsとfoomaticの両方のフィルターが必要です。お使いのLinuxディストリビューションに基づいて、次のコマンドを実行します。
RHEL 7の印刷サポート:
sudo yum –y install cups
sudo yum -y install foomatic-filters
<!--NeedCopy-->
- RHEL 6の印刷サポート:
sudo yum –y install cups
sudo yum -y install foomatic
<!--NeedCopy-->
使用法
公開デスクトップと公開アプリケーションの両方から印刷できます。クライアント側のデフォルトプリンターのみがLinux VDAセッションにマップされます。プリンター名はデスクトップとアプリケーションで異なる必要があります。以下を考慮してください。
-
公開デスクトップの場合:
CitrixUniversalPrinter:$CLIENT_NAME:dsk$SESSION_ID -
公開アプリケーションの場合:
CitrixUniversalPrinter:$CLIENT_NAME:app$SESSION_ID
注:
同じユーザーが公開デスクトップと公開アプリケーションの両方を開いた場合、両方のプリンターがセッションで利用可能です。公開アプリケーションセッションでデスクトッププリンターに印刷したり、公開デスクトップでアプリケーションプリンターに印刷したりすると失敗します。
トラブルシューティング
印刷できない
印刷が正しく機能しない場合、確認すべき様々な項目があります。印刷デーモンはセッションごとのプロセスであり、セッションの期間中実行されている必要があります。印刷デーモンが実行されていることを確認します。
ps –ef | grep ctxlpmngt
<!--NeedCopy-->
ctxlpmngtプロセスが実行されていない場合は、コマンドラインからctxlpmngtを手動で開始します。印刷がまだ機能しない場合は、CUPSフレームワークを確認します。ctxcupsサービスはプリンター管理用であり、Linux CUPSフレームワークと通信します。これはマシンごとに1つのプロセスであり、次のように確認できます。
service ctxcups status
<!--NeedCopy-->
CUPS印刷時の追加ログ
Linux VDAのコンポーネントの1つとして、印刷コンポーネントのログを取得する方法は他のコンポーネントと似ています。
RHELの場合、CUPSサービスファイルを構成するためにいくつかの追加の手順が必要です。そうしないと、一部のログがhdx.loに記録されません。
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つだけが有効になるため、同時に設定することはできません。
Universal Printerドライバーがクライアントプリンターと互換性がない場合は、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-->
Universal Printerドライバーがクライアントプリンターと互換性がない場合は、ネイティブプリンタードライバーのPPDファイルパスを構成します。ppdpathの値は、ネイティブプリンタードライバーファイルの絶対パスです。
例えば、/home/tester/NATIVE_PRINTER_DRIVER.ppdの下にppdドライバーがあります。
ppdpath=/home/tester/NATIVE_PRINTER_DRIVER.ppd
<!--NeedCopy-->
Citrix®によって提供されるUniversal Printer Driverには3つのタイプ(postscript、pcl5、およびpcl6)があります。ネイティブプリンタードライバーが利用できない場合は、ドライバータイプを構成できます。
例えば、クライアントのデフォルトプリンタードライバータイプがPCL5の場合:
drivertype=pcl5
<!--NeedCopy-->
出力サイズがゼロ
異なる種類のプリンターを試してください。そして、CutePDFやPDFCreatorのような仮想プリンターを試して、この問題がプリンタードライバーに関連しているかどうかを確認してください。
印刷ジョブは、クライアントのデフォルトプリンターのプリンタードライバーに依存します。現在アクティブなドライバータイプの種類を特定することが重要です。クライアントプリンターがPCL5ドライバーを使用しているのにLinux VDAがPostscriptドライバーを選択した場合、問題が発生する可能性があります。
プリンタードライバータイプが正しい場合、次の手順を実行することで問題を特定できます。
この問題を特定するには:
- ICA®セッションデスクトップにログオンします。
- vi ~/.CtxlProfile$CLIENT_NAME
-
Linux VDA上の保存プールファイルに次のフィールドを追加します。
deletespoolfile=no <!--NeedCopy--> -
構成の変更をロードするためにログオフして再度ログオンします。
-
問題を再現するためにドキュメントを印刷します。印刷後、スプールファイルは/var/spool/cups-ctx/$logon_user/$spool_fileの下に保存されます。
-
スプールが空であるかどうかを確認します。スプールファイルがゼロの場合、それは問題を表します。さらなるガイダンスのためにCitrixサポートに連絡してください(そして印刷ログを提供してください)。
-
スプールサイズがゼロでない場合、ファイルをクライアントにコピーします。スプールファイルの内容は、クライアントのデフォルトプリンターのプリンタードライバータイプに依存します。マップされたプリンター(ネイティブ)ドライバーがpostscriptの場合、スプールファイルはLinux OSで直接開くことができます。内容が正しいかどうかを確認します。
スプールファイルがPCLの場合、またはクライアントOSがWindowsの場合、スプールファイルをクライアントにコピーし、クライアント側のプリンターを使用して印刷します。この手順を完了した後、他のプリンタードライバーを使用してテストします。
-
マップされたプリンターを別のサードパーティ製プリンタードライバーに変更するには、postscriptクライアントプリンターを例として使用します。
-
アクティブなセッションにログオンし、クライアントデスクトップでブラウザーを開きます。
-
印刷管理ポータルを開きます。
localhost:631 <!--NeedCopy--> -
マップされたプリンターCitrixUniversalPrinter:$ClientName:app/dek$SESSION_IDとModify Printerを選択します。この操作には管理者権限が必要です。
-
cups-ctx接続を保持し、次に[続行]をクリックしてプリンタードライバーを変更します。
-
[Make and Model]ページで、Citrix UPDドライバーの代わりに別のpostscriptドライバーを選択します(例えば、Citrix Universal™ Driver Postscript)。例えば、CUPS-PDF仮想プリンターがインストールされている場合、Generic CUPS-PDF Printerを選択します。変更を保存します。
-
このプロセスが成功した場合、マップされたプリンターがこのサードパーティ製ドライバーを使用できるように、.CtxlpProfile$CLIENT_NAME内のドライバーのPPDファイルパスを構成します。
-
既知の問題
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-->