This article provides information about printing best practices.
The Linux VDA requires both cups and foomatic filters. Execute the following commands based on the Linux distribution.
RHEL 6 printing support
sudo yum –y install cups
sudo yum -y install foomatic
RHEL 7 printing support
sudo yum –y install cups
sudo yum -y install foomatic-filters
The Linux VDA functions for both published desktops and published applications. The printer name is different between desktops and applications. Consider the following:
If the same user opens both a published desktop and a published application, both printers are available to the session. Printing to a desktop printer in a published application session, or printing to an application printer in a published desktop fails.
Unable to print
There are a number of items to check if printing is not working correctly. The print daemon is a per-session process and must be running for the length of the session. Verify that the printing daemon is running.
ps –ef | grep ctxlpmngt
If the ctxlpmngt process is not running, manually start ctxlpmngt from a command line. If printing is still not working, check the CUPS framework. The ctxcups service is for printer management and communicates with the Linux CUPS framework. This is a single process per machine and can be checked by:
service ctxcups status
Extra log when printing CUPS
As one of the components of the Linux VDA, the method of how to get the log of a printing component is similar to other components.
For SUSE, some extra steps are necessary to configure the CUPS service file. Otherwise some logs cannot get logged in hdx.lo:
sudo service cups stop
sudo vi /etc/systemd/system/printer.target.wants/cups.service
sudo service cups start
sudo systemctl daemon-reload
This configuration is only for collecting the full printing log when an issue arises. Normally this configuration is not recommended because it breaks CUPS security.
Print output is garbled
Garbled output can be caused by an incompatible printer driver. A per-user driver configuration is available and can be configured by editing the ~/.CtxlpProfile$CLIENT_NAME configuration file:
The printername is a field containing the name of the current client side default printer. This is a read-only value and should not be edited.
The fields ppdpath, model and drivertype should not be set at the same time as only one takes effect for the mapped printer.
If the Universal Printer driver is not compatible with the client printer, configure the model of native printer driver with the model= option. You can find the current model name of the printer with the lpinfo command:
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
You can then set the model to match the printer:
If the Universal Printer driver is not compatible with the client printer, configure the ppd file path of native printer driver. The value of ppdpath is the absolute path of native printer driver file.
For example, there is a ppd driver under /home/tester/NATIVE_PRINTER_DRIVER.ppd:
There are three types of Universal Printer Driver supplied by Citrix (postscript, pcl5 and pcl6). You can configure those in the driver type if no native printer driver is available.
For example, if client default printer driver type is PCL5:
Output size is zero
Try different types of printers. And try with a virtual printer like CutePDF and PDFCreator to find out if this issue is related to the printer driver.
The print job depends on the printer driver of client default printer. It's important to identify the type of the current active driver type. If the client printer is using a PCL5 driver but the Linux VDA chooses a Postscript driver, this will cause an issue.
If the printer driver type is correct, you can identify the problem by the following steps:
To identify this issue:
4. Log off and log on again to load the configuration changes.
5. Print the document to reproduce the issue. After printing, there will be a spool file saved under /var/spool/cups-ctx/$logon_user/$spool_file.
6. Verify if the spool is empty. If the spool file is zero, this represents an issue. Contact Citrix Support (and provide the printing log) for additional guidance.
7. If the spool size is not zero, copy the file to the client. The spool file content depends on the printer driver type of the client default printer. If the mapped printer (native) driver is postscript, the spool file can be opened in the Linux OS directly. Verify that the content is correct.
If the spool file is PCL, or if the client OS is Windows, copy the spool file to the client and print it with the client-side printer. After completing this step, test it with the other printer driver.
8. To change the mapped printer to another third-party printer driver, use the postscript client printer as an example:
a. Log on to an active session and open a browser in the ICA desktop.
b. Open the printing management portal:
b. Choose the mapped printer CitrixUniversalPrinter:$ClientName:app/dek$SESSION_ID and Modify Printer. This operation requires administrator privileges.
c. Retain the cups-ctx connection, then click Continue to modify the printer driver.
d. In the Make and Model page, choose some other postcript driver instead of the Citrix UPD driver (for instance, Citrix Universal Driver Postscript). For example, if the CUPS-PDF virtual printer is installed, then Generic CUPS-PDF Printer can be chosen. Save the modification.
e. If this process succeeds, configure the ppd file path of the driver in .CtxlpProfile$CLIENT_NAME to allow the mapped printer to use this 3rd party driver.
The following issues have been identified when printing using the Linux VDA.
CTXPS driver is not compatible with some PLC printers
If you encounter printing output corruption, set the printer driver to the native one provided by the manufacturer.
Slow printing performance for large documents
When you print a large document on a local client printer, the print file is transferred over the server connection. On slow connections, this can take a long time.
Printer and print job notifications seen from other sessions
Linux does not have the same session concept as the Windows operating system. Therefore, all users get system wide notifications. You can disable these notifications by modifying the CUPS configuration file: /etc/cups/cupsd.conf.
Locate the current policy name configured in the file:
If the policy name is default, add the following lines into the default policy XML block:
# Job/subscription privacy...
Require user @OWNER