印刷

この記事では、印刷のベストプラクティスに関する情報を提供します。

インストール

Linux VDAには、cupsfoomaticの両方のフィルターが必要です。お使いの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は、現在のクライアント側のデフォルトプリンターの名前を含むフィールドです。これは読み取り専用の値です。編集しないでください。

ppdpathmodel、および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ドライバーを選択した場合、問題が発生する可能性があります。

プリンタードライバータイプが正しい場合、次の手順を実行することで問題を特定できます。

この問題を特定するには:

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

    deletespoolfile=no
    <!--NeedCopy-->
    
  4. 構成の変更をロードするためにログオフして再度ログオンします。

  5. 問題を再現するためにドキュメントを印刷します。印刷後、スプールファイルは/var/spool/cups-ctx/$logon_user/$spool_fileの下に保存されます。

  6. スプールが空であるかどうかを確認します。スプールファイルがゼロの場合、それは問題を表します。さらなるガイダンスのためにCitrixサポートに連絡してください(そして印刷ログを提供してください)。

  7. スプールサイズがゼロでない場合、ファイルをクライアントにコピーします。スプールファイルの内容は、クライアントのデフォルトプリンターのプリンタードライバータイプに依存します。マップされたプリンター(ネイティブ)ドライバーがpostscriptの場合、スプールファイルはLinux OSで直接開くことができます。内容が正しいかどうかを確認します。

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

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

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

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

      localhost:631
      <!--NeedCopy-->
      
    3. マップされたプリンターCitrixUniversalPrinter:$ClientName:app/dek$SESSION_IDModify Printerを選択します。この操作には管理者権限が必要です。

    4. cups-ctx接続を保持し、次に[続行]をクリックしてプリンタードライバーを変更します。

    5. [Make and Model]ページで、Citrix UPDドライバーの代わりに別のpostscriptドライバーを選択します(例えば、Citrix Universal™ Driver Postscript)。例えば、CUPS-PDF仮想プリンターがインストールされている場合、Generic CUPS-PDF Printerを選択します。変更を保存します。

    6. このプロセスが成功した場合、マップされたプリンターがこのサードパーティ製ドライバーを使用できるように、.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-->
印刷