打印最佳实践
本文提供了有关打印最佳实践的信息。
安装
Linux VDA 需要 cups 和 foomatic 筛选器。这些筛选器在您安装 VDA 时会一并安装。您也可以根据分发版手动安装这些筛选器。
打印策略设置
客户端打印机重定向
此设置允许您确定是否将客户端打印机映射到 VDA 会话。默认情况下,允许客户端打印机映射。
自动创建客户端打印机
此设置指定可以映射到 VDA 会话的客户端打印机。默认情况下,此设置配置为自动创建所有客户端打印机,这意味着所有客户端打印机都映射到 VDA 会话。有关此设置的详细信息,请参阅 Citrix Virtual Apps and Desktops 文档中的自动创建客户端打印机。
- ### 自动创建 PDF 通用打印机
- 要使用 [PDF 打印](/zh-cn/linux-virtual-delivery-agent/2411/configure/printing/pdf-printing.html)功能,请将此策略设置为**已启用**。
打印机驱动程序映射和兼容性
Citrix 提供了三种类型的通用打印机驱动程序(PostScript、PCL5 和 PCL6)。但是,通用打印机驱动程序可能与您的客户端打印机不兼容。在这种情况下,早期版本中唯一的选择是编辑 ~/.CtxlpProfile$CLIENT_NAME 配置文件。从 1906 版本开始,您可以选择在 Citrix Studio 中配置打印机驱动程序映射和兼容性策略。
要在 Citrix Studio 中配置打印机驱动程序映射和兼容性策略:
- 选择打印机驱动程序映射和兼容性策略。
-
- 单击添加。
-
- 在驱动程序名称中填写客户端打印机的驱动程序名称。如果您使用的是适用于 Linux 的 Citrix Workspace™ app,请填写打印机名称。
-
根据需要执行以下操作:
- 要允许客户端打印机重定向到 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 框架通信。它是每台计算机一个进程,可以通过运行以下命令进行检查:
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 字段不能同时设置,因为映射的打印机只有一个会生效。
-
如果通用打印机驱动程序与客户端打印机不兼容,请使用 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 驱动程序,则可能会出现问题。
如果打印机驱动程序类型正确,您可以通过执行以下步骤来识别问题:
- 登录到已发布的桌面会话。
- 运行 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 虚拟打印机,请选择通用 CUPS-PDF 打印机驱动程序。保存更改。
-
如果此过程成功,请在
.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-->