印刷のベストプラクティス
この記事では、印刷のベストプラクティスに関する情報を提供します。
インストール
Linux VDAには、CUPSとfoomaticの両方のフィルターが必要です。これらのフィルターは、VDAのインストール時にインストールされます。ディストリビューションに基づいて、フィルターを手動でインストールすることもできます。
印刷ポリシー設定
クライアントプリンターのリダイレクト
この設定により、クライアントプリンターをVDAセッションにマップするかどうかを決定できます。デフォルトでは、クライアントプリンターのマッピングは許可されています。
クライアントプリンターの自動作成
この設定は、VDAセッションにマップできるクライアントプリンターを指定します。デフォルトでは、すべてのクライアントプリンターを自動作成に設定されており、すべてのクライアントプリンターがVDAセッションにマップされます。この設定の詳細については、Citrix Virtual Apps and Desktopsのドキュメントにある「クライアントプリンターの自動作成」を参照してください。
- ### PDFユニバーサルプリンターの自動作成
- [PDF印刷](/en-us/linux-virtual-delivery-agent/2503/configure/printing/pdf-printing.html)機能を使用するには、このポリシーを**有効**に設定します。
プリンタードライバーのマッピングと互換性
Citrixは、3種類のユニバーサルプリンタードライバー(PostScript、PCL5、PCL6)を提供しています。ただし、ユニバーサルプリンタードライバーがクライアントプリンターと互換性がない場合があります。この場合、以前のリリースでは、~/.CtxlpProfile$CLIENT_NAME構成ファイルを編集するしかありませんでした。バージョン1906以降では、代わりにCitrix Studioでプリンタードライバーのマッピングと互換性ポリシーを構成することを選択できます。
Citrix Studioでプリンタードライバーのマッピングと互換性ポリシーを構成するには:
-
プリンタードライバーのマッピングと互換性ポリシーを選択します。
-
- 追加をクリックします。
-
- ドライバー名にクライアントプリンターのドライバー名を入力します。Citrix Workspace™アプリ for Linuxを使用している場合は、代わりにプリンター名を入力します。
-
必要に応じて、次のアクションを実行します。
- クライアントプリンターをVDAセッションにリダイレクトし、ユニバーサル印刷ドライバーのみを使用できるようにするには、許可またはユニバーサルドライバーのみで作成を選択します。
- 指定されたドライバー名を持つクライアントプリンターがVDAセッションにリダイレクトされないようにするには、作成しないを選択します。
- サーバーと同じドライバーを持つがドライバー名が異なるクライアントプリンターにサーバーアプリケーションがアクセスできるようにするには、次で置き換えるを選択し、VDA上のドライバーファイルの絶対パスを入力します。

注:
PPDドライバーファイルのみがサポートされています。
使用方法
公開デスクトップと公開アプリケーションの両方から印刷できます。すべてのクライアントプリンターはVDAセッションにマップできます。プリンター名はデスクトップとアプリケーションで異なります。
-
公開デスクトップの場合:
<client printer name>:$CLIENT_NAME:dsk$SESSION_ID -
公開アプリケーションの場合:
<client printer name>:$CLIENT_NAME:app$SESSION_ID
注:
同じユーザーが公開デスクトップと公開アプリケーションの両方を開いた場合、両方のプリンターがセッションで利用可能です。公開アプリケーションセッションでデスクトッププリンターに印刷したり、公開デスクトップでアプリケーションプリンターに印刷したりすると失敗します。
トラブルシューティング
印刷できない
印刷が正しく機能しない場合は、印刷デーモンctxlpmngtとCUPSフレームワークを確認してください。
印刷デーモンctxlpmngtはセッションごとのプロセスであり、セッションの期間中実行されている必要があります。次のコマンドを実行して、印刷デーモンが実行されていることを確認します。ctxlpmngtが実行されていない場合は、コマンドラインからctxlpmngtを手動で開始します。
ps –ef | grep ctxlpmngt
<!--NeedCopy-->
それでも印刷が機能しない場合は、CUPSフレームワークを確認してください。ctxcupsサービスはプリンター管理に使用され、Linux CUPSフレームワークと通信します。これはマシンごとに1つのプロセスであり、次のコマンドを実行して確認できます。
systemctl status ctxcups
<!--NeedCopy-->
CUPSログを収集するための追加手順
CUPSログを収集するには、次のコマンドを実行してCUPSサービスファイルを構成します。そうしないと、CUPSログがhdx.logに記録されません。
sudo systemctl stop cups
sudo vi /etc/systemd/system/printer.target.wants/cups.service
PrivateTmp=false
sudo systemctl start cups
- 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-->