Linux Virtual Delivery Agent

印刷のベストプラクティス

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

インストール

Linux VDAには、cupsフィルターとfoomaticフィルターの両方が必要です。これらのフィルターは、VDAのインストール時にインストールされます。ディストリビューションに基づいて、フィルターを手動でインストールすることもできます。例:

RHEL 7の場合:

sudo yum –y install cups

sudo yum -y install foomatic-filters
<!--NeedCopy-->

印刷ポリシー設定

クライアントプリンターのリダイレクト

この設定は、クライアントプリンターをVDAセッションにマップするかどうかを制御します。 デフォルトでは、クライアントプリンターのマッピングは許可されています。

クライアントプリンターの自動作成

この設定は、VDAセッションにマップできるクライアントプリンターを指定します。デフォルトでは、すべてのクライアントプリンターを自動作成に設定されており、すべてのクライアントプリンターがVDAセッションにマップされます。この設定について詳しくは、Citrix Virtual Apps and Desktopsのドキュメントにある「クライアントプリンターの自動作成」を参照してください。

PDFユニバーサルプリンターの自動作成

PDF印刷機能を使用するには、このポリシーを有効に設定します。

  • プリンタードライバーのマッピングと互換性

  • Citrixは、3種類のユニバーサルプリンタードライバー(PostScript、PCL5、PCL6)を提供しています。ただし、ユニバーサルプリンタードライバーがクライアントプリンターと互換性がない場合があります。以前のリリースでは、この場合の唯一のオプションは、~/.CtxlpProfile$CLIENT_NAME構成ファイルを編集することでした。バージョン1906以降では、代わりにCitrix Studioでプリンタードライバーのマッピングと互換性ポリシーを構成することを選択できます。

Citrix Studioでプリンタードライバーのマッピングと互換性ポリシーを構成するには:

  1. プリンタードライバーのマッピングと互換性ポリシーを選択します。
  2. [追加] をクリックします。
  3. [ドライバー名] にクライアントプリンターのドライバー名を入力します。Citrix Workspace™アプリ for Linuxを使用している場合は、代わりにプリンター名を入力します。
  4. [次で置き換える] を選択し、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つのプロセスであり、次のコマンドを実行して確認できます。
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は、現在のクライアント側のデフォルトプリンターの名前を含むフィールドです。これは読み取り専用の値です。編集しないでください。

ppdpathmodel、および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が提供するユニバーサルプリンタードライバーには、3種類(PostScript、PCL5、PCL6)あります。プリンターのプロパティに基づいてドライバーの種類を構成できます。

    たとえば、クライアントのデフォルトプリンタードライバーの種類がPCL5の場合、drivertypeを次のように設定します。

     drivertype=pcl5
     <!--NeedCopy-->
    

出力サイズがゼロになる

異なる種類のプリンターを試してください。また、CutePDFやPDFCreatorのような仮想プリンターを試して、この問題がプリンタードライバーに関連しているかどうかを確認してください。

印刷ジョブは、クライアントのデフォルトプリンターのプリンタードライバーに依存します。現在アクティブなドライバーの種類を特定することが重要です。クライアントプリンターがPCL5ドライバーを使用しているのに、Linux VDAがPostScriptドライバーを選択すると、問題が発生する可能性があります。

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

  1. 公開デスクトップセッションにログオンします。
  2. vi ~/.CtxlpProfile$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/dsk$SESSION_IDを選択し、[プリンターの変更] をクリックします。この操作には管理者権限が必要です。

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

  9. 製造元」および「モデル」フィールドで、Citrix UPD ドライバーとは異なるプリンタードライバーを選択します。たとえば、CUPS-PDF 仮想プリンターがインストールされている場合は、汎用 CUPS-PDF プリンタードライバーを選択します。変更を保存します。

    1. このプロセスが成功した場合は、マップされたプリンターが新しく選択されたドライバーを使用できるように、.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-->
印刷のベストプラクティス