印刷
このドキュメントでは、印刷に関するベストプラクティスについて説明します。
インストール
Linux VDA には、cups と foomatic の両方のフィルターが必要です。これらのフィルターは VDA のインストール時にインストールされます。ディストリビューションに基づいてフィルターを手動でインストールすることもできます。例:
RHEL 7 の場合:
sudo yum –y install cups
sudo yum -y install foomatic-filters
<!--NeedCopy-->
構成
Citrix が提供するユニバーサルプリンタードライバーには、postscript、pcl5、pcl6 の 3 種類があります。ただし、ユニバーサルプリンタードライバーがクライアントプリンターと互換性がない場合があります。この場合、以前のリリースでは ~/.CtxlpProfile$CLIENT_NAME 構成ファイルを編集するしかありませんでした。バージョン 1906 以降では、代わりに Citrix Studio で プリンタードライバーのマッピングと互換性 ポリシーを構成することを選択できます。
Citrix Studio で プリンタードライバーのマッピングと互換性 ポリシーを構成するには:
- プリンタードライバーのマッピングと互換性 ポリシーを選択します。
-
- 追加 をクリックします。
- ドライバー名 にクライアントプリンターのドライバー名を入力します。Citrix Workspace™ アプリ for Linux を使用している場合は、代わりにプリンター名を入力します。
-
- 次で置換 を選択し、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 フレームワークと通信します。これはマシンごとに 1 つのプロセスであり、次のコマンドを実行して確認できます。
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 の値は、ネイティブプリンタードライバーファイルの絶対パスです。
たとえば、/home/tester/NATIVE_PRINTER_DRIVER.ppd に ppd ドライバー がある場合:
ppdpath=/home/tester/NATIVE_PRINTER_DRIVER.ppd <!--NeedCopy--> -
Citrix が提供するユニバーサルプリンタードライバーには、postscript、pcl5、pcl6 の 3 種類があります。プリンターのプロパティに基づいてドライバータイプを構成できます。
たとえば、クライアントのデフォルトプリンタードライバータイプが 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 に保存されます。
-
スプールが空かどうかを確認します。スプールファイルがゼロの場合、問題が発生しています。Citrix サポートに連絡し(印刷ログを提供してください)、さらなるガイダンスを求めてください。
-
スプールサイズがゼロでない場合は、ファイルをクライアントにコピーします。スプールファイルの内容は、クライアントのデフォルトプリンターのプリンタードライバータイプに依存します。マップされたプリンター(ネイティブ)ドライバーが Postscript の場合、スプールファイルは Linux OS で直接開くことができます。内容が正しいかどうかを確認します。
スプールファイルが PCL の場合、またはクライアント OS が Windows の場合は、スプールファイルをクライアントにコピーし、別のプリンタードライバーを使用してクライアント側のプリンターで印刷します。
-
マップされたプリンターを別のプリンタードライバーを使用するように変更します。次の例では、Postscript クライアントプリンターを例として使用します。
-
アクティブなセッションにログオンし、クライアントデスクトップでブラウザーを開きます。
-
印刷管理ポータルを開きます。
localhost:631 <!--NeedCopy--> -
マップされたプリンター CitrixUniversalPrinter:$ClientName:app/dsk$SESSION_ID を選択し、プリンターの変更 をクリックします。この操作には管理者権限が必要です。
-
cups-ctx 接続を維持し、続行 をクリックしてプリンタードライバーを変更します。
-
メーカー および モデル フィールドで、Citrix UPD ドライバーとは異なるプリンタードライバーを選択します。たとえば、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-->