Linux Virtual Delivery Agent

打印最佳做法

本文提供有关打印最佳实践的信息。  

安装

Linux VDA 要求同时启用 cupsfoomatic 过滤器。在安装 VDA 时安装过滤器。还可以根据分发情况手动安装过滤器。

打印策略设置

客户端打印机重定向

此设置允许您决定客户端打印机是否映射到 VDA 会话。默认情况下,允许客户端打印机映射。

自动创建客户端打印机

此设置指定可以映射到 VDA 会话的客户端打印机。默认情况下,此设置设为自动创建所有客户端打印机,这意味着所有客户端打印机都映射到 VDA 会话。有关此设置的详细信息,请参阅 Citrix Virtual Apps and Desktops 文档中的自动创建客户端打印机

自动创建 PDF 通用打印机

要使用 PDF 打印功能,请将此策略设置为已启用

打印机驱动程序映射和兼容性

Citrix 提供三种类型的通用打印机驱动程序(postscript、pcl5 和 pcl6)。但是,通用打印机驱动程序可能与您的客户端打印机不兼容。在这种情况下,早期版本中的唯一选择为编辑 ~/.CtxlpProfile$CLIENT_NAME 配置文件。自版本 1906 起,可以选择改为在 Citrix Studio 中配置打印机驱动程序映射和兼容性策略。

要在 Citrix Studio 中配置打印机驱动程序映射和兼容性策略,请执行以下操作:

  1. 选择打印机驱动程序映射和兼容性策略。
  2. 单击添加
  3. 使用客户端打印机的驱动程序名称填写驱动程序名称。如果使用适用于 Linux 的 Citrix Workspace 应用程序,请改为填写打印机名称。
  4. 根据需要执行以下操作:

    • 要允许将客户端打印机重定向到 VDA 会话并仅使用通用打印驱动程序,请选择允许仅使用通用驱动程序创建
    • 要阻止具有指定驱动程序名称的客户端打印机重定向到 VDA 会话,请选择不创建
    • 要允许服务器应用程序访问与服务器具有相同驱动程序但驱动程序名称不同的客户端打印机,请选择替换为,然后在 VDA 上键入驱动程序文件的绝对路径。

    打印机驱动程序映射和兼容性策略

注意:

仅支持 PPD 驱动程序文件。

使用情况

可以从已发布的桌面和已发布的应用程序打印。所有客户端打印机都可以映射到 VDA 会话。对于桌面和应用程序,打印机名称不同:

  • 对于发布的桌面:
    <client printer name>:$CLIENT_NAME:dsk$SESSION_ID

  • 对于发布的应用程序:
    <client printer name>:$CLIENT_NAME:app$SESSION_ID

注意:

如果同一用户同时打开了已发布的桌面和已发布的应用程序,会话可以访问两种打印机。无法在已发布的应用程序会话中的桌面打印机上打印,也无法在已发布的桌面会话中的应用程序打印机上打印。

故障排除

无法打印

打印无法正常工作时,请检查打印守护程序 ctxlpmngtCUPS 框架

打印守护程序 ctxlpmngt 是一个按会话进程,必须在会话期间内运行。请运行以下命令以确认打印守护程序是否正在运行。如果 ctxlpmngt 未运行,请从命令行中手动启动 ctxlpmngt

ps –ef | grep ctxlpmngt
<!--NeedCopy-->

如果仍无法打印,请检查 CUPS 框架。ctxcups 服务用于打印机管理,并与 Linux CUPS 框架通信。此进程在每个计算机上有一个,可通过运行以下命令进行检查:

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 字段包含的是当前客户端默认打印机的名称。它是一个只读值。请勿编辑。

不能同时设置字段 ppdpathmodeldrivertype ,因为对于映射的打印机而言,只有一个字段生效。

  • 如果通用打印机驱动程序与客户端打印机不兼容,请使用 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)。可以根据打印机属性配置驱动程序类型。

    例如,如果客户端默认打印机驱动程序类型为 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. 如果 spool 大小不为零,则将该文件复制到客户端。后台打印文件内容取决于客户端默认打印机的打印机驱动程序类型。如果映射的打印机(本机)驱动程序是 postscript,则可以直接在 Linux 操作系统上打开后台打印文件。检查内容是否正确。

    如果后台打印文件是 PCL,或者客户端操作系统是 Windows,则将后台打印文件复制到客户端,并使用不同的打印机驱动程序在客户端打印机上打印该文件。

  8. 映射的打印机更改为使用不同的打印机驱动程序。下例以 PostScript 客户端打印机为例:

    1. 登录活动会话,在客户端桌面上打开浏览器。

    2. 打开打印管理门户:

      localhost:631
      <!--NeedCopy-->
      
    3. 选择映射的打印机 CitrixUniversalPrinter:$ClientName:app/dsk$SESSION_ID修改打印机。此操作要求使用管理员权限。

    4. 保持 cups-ctx 连接,然后单击 Continue(继续)以更改打印机驱动程序。

    5. Make(制造商)和 Model(型号)字段中,从 Citrix UPD 驱动程序中选择不同的打印机驱动程序。例如,如果安装了 CUPS-PDF 虚拟打印机,可以选择“Generic CUPS-PDF Printer”(通用 CUPS-PDF 打印机)驱动程序。保存更改。

    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-->