プリント

ここでは、印刷のベストプラクティスについて説明します。  

インストール

Linux VDAでは、cupsフィルタとfoomaticフィルタの両方が必要です。Linuxディストリビューションに基づき、次のコマンドを実行します。

RHEL 7印刷サポート:

sudo yum –y install cups
sudo yum -y install foomatic-filters

RHEL 6印刷サポート:

sudo yum –y install cups
sudo yum -y install foomatic

用途

公開デスクトップおよび公開アプリケーションの両方から印刷できます。クライアント側のデフォルトプリンターのみが、Linux VDAセッションに割り当てられます。デスクトップとアプリケーションとで異なるプリンター名にする必要があります。以下に注意してください。

  • 公開デスクトップの場合:
    CitrixUniversalPrinter:$CLIENT_NAME:dsk$SESSION_ID
  • 公開アプリケーションの場合:
    CitrixUniversalPrinter:$CLIENT_NAME:app$SESSION_ID

注:

同一ユーザーが公開デスクトップと公開アプリケーションの両方を開いた場合は、どちらのプリンターもセッションで使用できます。公開アプリケーションのセッション内でのデスクトッププリンターへの印刷、または公開デスクトップでのアプリケーションプリンターへの印刷は失敗します。

トラブルシューティング

印刷できない

印刷が正しく機能しない場合に確認する項目がいくつかあります。印刷デーモンはセッションごとのプロセスで、実行されるのはセッションの期間中です。印刷デーモンが実行中であることを確認します。

ps –ef | grep ctxlpmngt

ctxlpmngtプロセスが実行中でない場合は、コマンドラインから手動でctxlpmngtを起動します。それでも印刷が機能しない場合は、CUPSフレームワークを確認します。ctxcupsサービスはプリンター管理用であり、Linux CUPSフレームワークと通信します。これはマシンごとの単一プロセスとなっていて、次のコマンドで確認できます。

service ctxcups status

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

注:

この構成は、問題が発生した場合に完全な印刷ログを収集することのみを目的としています。通常は、CUPSのセキュリティが破られるため、この構成はお勧めしません。

印刷出力が文字化けする

対応していないプリンタードライバーを使用していることが、出力の文字化けの原因になっている可能性があります。ユーザーごとのドライバー構成を使用できるため、~/.CtxlpProfile$CLIENT_NAME 構成ファイルを編集して構成できます:

[DEFAULT_PRINTER]
printername=
model=
ppdpath=
drivertype=

重要:

printernameは、現在のクライアント側の通常使うプリンターの名前が指定されているフィールドです。これは読み取り専用の値です。編集しないでください。

ppdpathmodeldrivertypeの各フィールドは、マップされたプリンターに対していずれか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

次のようにして、プリンターに一致するようにモデルを設定できます。

Model=xerox/ph3115.ppd.gz

ユニバーサルプリンタードライバーがクライアントプリンターに対応していない場合、ネイティブプリンタードライバーのppdファイルのパスを構成します。ppdpathの値は、ネイティブプリンタードライバーファイルの絶対パスです。

たとえば、ppdドライバーが/home/tester/NATIVE_PRINTER_DRIVER.ppdにある場合は、次のようになります:

ppdpath=/home/tester/NATIVE_PRINTER_DRIVER.ppd

Citrixが提供するユニバーサルプリンタードライバーは3種類(Postscript、pcl5、pcl6)です。ネイティブプリンタードライバーが使用できない場合は、ドライバーの種類を設定できます。

たとえば、クライアントが通常使うプリンターのドライバーの種類がPCL5である場合は、次のようになります。

drivertype=pcl5

出力サイズはゼロです

別の種類のプリンターを試します。また、CutePDFやPDFCreatorなどの仮想プリンターを使用してみて、この問題がプリンタードライバーに関連するものかどうかを確認します。

印刷ジョブは、クライアントが通常使用するプリンターのドライバーによって異なります。現在適用されているドライバーの種類を特定することが重要です。クライアントのプリンターがPCL5ドライバーを使用している一方で、Linux VDAがPostScriptドライバーを選択していると、問題が発生する場合があります。

プリンタードライバーの種類が正しい場合は、次の手順に従って問題を特定します。

問題を特定する方法:

  1. ICAセッションのデスクトップにログオンします。
  2. vi ~/.CtxlProfile$CLIENT_NAME
  3. 次のフィールドをLinux VDAの保存プールファイルに追加します。

    deletespoolfile=no
    
  4. いったんログオフしてからログオンし直して、構成の変更を読み込みます。

  5. ドキュメントを印刷して問題を再現します。印刷が完了すると、/var/spool/cups-ctx/$logon_user/$spool_file にスプールファイルが保存されます。

  6. スプールファイルが空であるかどうかを確認します。スプールファイルのサイズが0の場合は、これが問題になります。Citrixサポートに印刷ログを提供して、追加のガイダンスを得てください。

  7. スプールファイルのサイズが0でない場合は、ファイルをクライアントにコピーします。スプールファイルの内容は、クライアントが通常使用するプリンタードライバーの種類によって異なります。マップされたプリンターの(ネイティブ)ドライバーがPostScriptである場合、スプールファイルはLinux OSで直接開くことができます。内容が正しいかを確認します。

    スプールファイルがPCLの場合、またはクライアントOSがWindowsの場合は、スプールファイルをクライアントにコピーし、クライアント側のプリンターを使用して印刷します。この手順の完了後に、別のプリンタードライバーを使用してテスト印刷します。

  8. マップされたプリンターを別のサードパーティ製プリンタードライバーに変更するには、たとえばPostScriptクライアントプリンターを使用します。

    1. アクティブセッションにログオンして、クライアントデスクトップでブラウザーを開きます。

    2. 印刷管理ポータルを開きます:

      localhost:631
      
    3. マップされたプリンター [CitrixUniversalPrinter:$ClientName:app/dek$SESSION_ID] を選択し、[プリンターの変更] をクリックします。この操作には管理者権限が必要です。

    4. CUPSとCTX間の接続を保持したまま[続行]をクリックし、プリンタードライバーを変更します。

    5. [製造元とモデル]ページで、Citrix UPDドライバーの代わりに他のPostScriptドライバー(Citrix Universal Driver PostScriptなど)を選択します。たとえば、CUPS-PDF仮想プリンターがインストールされている場合は、[汎用CUPS-PDFプリンター]を選択します。変更を保存します。

    6. このプロセスが正常に完了した場合は、ドライバーの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>

プリント