Although it’s 2016, the concept of the paperless office just hasn’t come to fruition. Legal requirements and compliance ensure that printing will continue to be necessary, and that Citrix administrators continue to hear the complaint, “I can’t print.”
Let’s take a fast but deep dive to discover the root of your printing issues. Because XenDesktop is a 1:1 technology and printing issues are far less common, the focus will be XenApp. Whether your environment is based on XenApp 6.5 or XenApp 7.x, the underlying printing engine functionality and troubleshooting steps are largely similar.
Printing is intentionally slower than other ICA/HDX functionality because users will tolerate print jobs taking a few seconds or a few minutes as compared with screen activities. Although the priority of the printing virtual channel can be modified, it’s far better to tackle other aspects of the print job and process.
Slow printing is often the result of limited bandwidth, inefficiencies in the print process, or a mediocre driver. In most cases, increasing bandwidth or implementing additional compression—such as NetScaler SD-WAN—isn’t a quick fix, so let’s look at other options.
In order to compress the data stream, the print job should traverse the network via ICA. Auto-created printing is not only the easiest configuration, but is also very efficient because it causes the print job to be sent from the XenApp server to the user device using ICA’s compression. If you can use auto-created printing with the Citrix Universal Print Driver, this is the easiest configuration to implement and support.
Having a mechanism to map local printers for users as IP printers simplifies the process. AD GPO-defined printers (group policy preferences) or the third-party solution from PrinterLogic can be used for automation. Once printers are defined on the local device, auto-creation maps them into the Citrix session.
When a print server is added, the location and type has a profound impact on the print job. Not only does it mean an extra hop in the process, but it also means that an overburdened or inefficient print server can become a bottleneck. The print server should always be located in the branch office; if it is located in the data center, the print stream will traverse the network uncompressed and that 300-page color report will indeed take forever to print!
So long as you have implemented a print server, consider taking it one step further and implementing the Citrix Universal Print Server, which is an add-on to standard Windows print server functionality. Better yet, v7.9 and higher allows you to use the Load Balanced Universal Print Server, which eliminates the print server and spooler service as a single point of failure.
Another common reason for slow printing is the printer drivers in use. If you can use the Citrix Universal Print Driver (UPD), this is the best and easiest option, but the lack of some functionality may have prevented that from being a suitable solution. While the default UPD preference within Citrix policies is EMF and it’s generally efficient, selecting XPS provides users with the option for stapling and paper source where v7.9 or higher is in use.
If Citrix UPD won’t work for your users, then installing printer drivers on XenApp servers is necessary. Keep in mind that the user device must have the same printer driver as the XenApp server. This road includes numerous complexities because every printer driver is different, and upgrading the driver on the client and server side must be done in parallel. Typically, PCL5 drivers are better than PCL6, but that’s not always true. Again, it’s far easier to use Citrix UPD or UPS if at all possible!
Another alternative is to consider a third-party solution, such as TriCerat, ThinPrint, or UniPrint.
Depending on which version of XenApp is in use, there are as many as eight places where printing can be disabled or modified. Eight. These locations are:
- Citrix policies
- 2008 R2 Remote Desktop Session Host Config (ICA and RDP)
- Server GPO
- AD GPO
- Receiver.admx (formerly icaclient.adm)
- Client machine
- AD GPO
In addition to printing enablement settings, USB-connected printers can be further controlled within each of these locations. Especially in environments where there are multiple administrators and/or loose change control policies, it’s quite possible for one setting to cause what appear to be intermittent issues.
Printer mappings (or lack thereof) can also cause printers to be unavailable to users. Again, there are numerous places to configure printer mappings:
- AD policies
- GPO-defined printers (group policy preferences)
- Logon script
- Citrix policies
- Auto-created printers
- Session printers
There are few “gotchas” associated with using AD policies. Logon scripts are typically not used in favor of the printing GPP, but it’s easy to overlook an old logon script when troubleshooting an issue. Occasionally, the printing GPP gets tattooed, and it’s necessary to remove it manually via the registry.
Speaking of the registry, that’s the place where all good and bad printer mappings go, and it’s sometimes necessary to investigate exactly what is lodged in the user profile. While the user is logged onto a XenApp server, open up the registry and locate the user profile (an easy trick is to look at the Volatile Environment key for reference to the specific user). All printers appear under the HKUsers\[SID]\Printers.
Depending on the configuration, the printers shown may be temporarily or permanently housed in the user profile. For example, the Citrix Session Printers policy does not permanently write printers into the user profile.
Occasionally, printer mappings become lodged in the user profile. Here are a few additional registry keys that could be harboring unwanted printer mappings:
- Software\Citrix\Printer Properties
- Software\Microsoft\WindowsNT\CurrentVersion\ Devices
- Software\Microsoft\WindowsNT\CurrentVersion\ PrinterPorts
Although less probable, some printer mappings may be hiding in the HKLM key:
To bring everything together—and to hopefully stop hearing “I can’t print!”—let’s go over some key recommendations.
First, if possible, use auto-created printers with Universal Print Driver.
- Add a few native drivers if you must or configure the Citrix policy to use universal printing only if requested driver is unavailable.
- Consider AD Printer GPP or PrinterLogic for local IP printer mapping.
- Be careful about forcing a default printer.
Second, Citrix Universal Print Server is a better alternative than a standard network print server. You can also load balance if you’re using v7.9 or higher.
Finally, it seems obvious, but be consistent about which printer settings are configured where—it will save you a lot of trouble down the road.