打印
本文提供有关打印最佳实践的信息。
安装
Linux VDA 要求同时启用 cups 和 foomatic 过滤器。请根据您的 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 框架通信。此进程在每个计算机上有一个,可通过以下方式检查:
service ctxcups status
<!--NeedCopy-->
打印 CUPS 时的额外日志
用于获取打印组件(作为 Linux VDA 的组件之一)的日志的方法与用于其他组件的方法类似。
对于 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 字段包含的是当前客户端默认打印机的名称。它是一个只读值。请勿编辑。
不能同时设置字段 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=pcl5
<!--NeedCopy-->
输出大小为零
尝试使用其他类型的打印机。并尝试使用 CutePDF 和 PDFCreator 之类的虚拟打印机以确定此问题是否与打印机驱动程序有关。
打印作业取决于客户端默认打印机的打印机驱动程序。务必确定当前活动驱动程序类型。如果客户端打印机使用的是 PCL5 驱动程序,而 Linux VDA 选择的是 Postscript 驱动程序,则会出现问题。
如果打印机驱动程序类型正确,可以执行以下步骤来确定问题:
要确定问题,请执行以下操作:
- 登录 ICA 会话桌面。
- vi ~/.CtxlProfile$CLIENT_NAME
-
将以下字段添加到 Linux VDA 上的保存池文件:
deletespoolfile=no <!--NeedCopy-->
-
注销并重新登录以加载配置更改。
-
打印文档以重现问题。打印后,将有一个 spool 文件保存在 /var/spool/cups-ctx/$logon_user/$spool_file 下。
-
确认 spool 是否为空。如果 spool 文件大小为零,表示有问题。请联系 Citrix 支持(并提供打印日志)以获取更多指导。
-
如果 spool 大小不为零,则将该文件复制到客户端。spool 文件内容取决于客户端默认打印机的打印机驱动程序类型。如果映射的打印机(本机)驱动程序是 postscript,可以直接在 Linux 操作系统上打开 spool 文件。确认该内容是否正确。
如果 spool 文件是 PCL,或者客户端操作系统是 Windows,则将 spool 文件复制到客户端,并使用客户端打印机打印该文件。完成该步骤后,使用其他打印机驱动程序对其进行测试。
-
要将映射的打印机更改为其他第三方打印机驱动程序,请使用 postscript 客户端打印机,例如:
-
登录活动会话,在客户端桌面上打开浏览器。
-
打开打印管理门户:
localhost:631 <!--NeedCopy-->
-
选择映射的打印机 CitrixUniversalPrinter:$ClientName:app/dek$SESSION_ID 和 Modify Printer(修改打印机)。此操作要求使用管理员权限。
-
保持 cups-ctx 连接,然后单击“Continue”(继续)以更改打印机驱动程序。
-
在“Make and Model”(品牌和型号)页面,选择其他 postscript 驱动程序,而不是 Citrix UPD 驱动程序(例如,Citrix Universal Driver Postscript)。例如,如果安装了 CUPS-PDF 虚拟打印机,可以选择“Generic CUPS-PDF Printer”(通用 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-->