A very important function for many MetaFrame server users is printing. Printers can be integrated into user sessions in various ways, which makes the issue a complex and somewhat problematic one:
Printers that are physically connected to the client device.
Shared printers that are connected to the client operating system through the network and possibly also through a print server.
Virtual printers that are used to redirect document data in files with specific formats on the client device. The file formats can be, for example, PostScript, Adobe Portable Document Format (PDF), or Hewlett-Packard Printer Control Language (PCL).
Printers that are physically connected to the MetaFrame server. However, this is not a very common option in real-world environments.
Shared printers that are connected to the MetaFrame server through the network and through a print server. These are often the same printers that a client can access through the network.
Some of the system constellations described here might result in bottlenecks due to the network bandwidth they require for printing. Mapping the printers connected to the client devices locally in a MetaFrame server user session is also no simple task because of the possible differences between client and server platforms. The assignment of the desired printers is another aspect that requires some explanation if it is to be done by users themselves. That is why the Citrix MetaFrame XP Presentation Server provides a range of mechanisms and tools for managing printers.
When a connection is established between an ICA client and a MetaFrame server, an attempt is made to create a connection between the local printer configuration and the user session (the same as with an unmodified terminal server). When the user logs on, the print drivers that are installed on the client are dynamically loaded on the MetaFrame server side and will later be removed again. In other words, the server is basically asking the client which drivers it has installed and is integrating them locally in the user session. Users can therefore print on local printers without any extra effort, even though they might be working in a user session that is physically being executed on the MetaFrame server. However, the necessary print drivers must exist on the MetaFrame server, and the information about the printer on the client must be complete. (See Chapter 4 for more details.) An automatically created printer within a user session will have the name \\Clientname#\Printername.
The properties of an automatically created printer should never be modified manually. The proper functioning of the printer assignment is based on certain predetermined, and also automatically created, information.
The basic tasks involved with managing printers can be performed through the Printer Management list object in the Management Console for MetaFrame XP. The properties of this list object lead to a dialog box that allows the configuration of standards for the automatic creation of client printers. This includes how printer properties, print jobs, and printer selection are handled during the user logon procedure.
Furthermore, selecting the Printer Administration list object allows access to three tabs that can be used to modify the basic settings of the print system:
Content This displays the objects Printers and Drivers, which can also be seen in the structure under the Printer Administration list object. Besides displaying the installed printers and assigning printers to users, this feature is also used to configure the automatic replication of installed print drivers to other MetaFrame servers. This is done in the subordinated tab called Drivers accessed through the context menu of the individual print drivers listed.
Network Print Server Here, network print servers can be listed and added using the menu item Actions\Printer Management\Import Network Print Server. It is, of course, also possible to delete network print servers and update the corresponding information.
Bandwidth This feature allows the bandwidth of the print data stream to be defined for each server in the farm. This prevents user sessions from being negatively affected when the network is experiencing a heavy load from large print jobs. However, for each server it is possible to define only settings that are the same for both LAN and WAN. In this case, the corresponding printers in the LAN might function at full capacity.
Figure 10-17: Managing the printer configuration.
Most of these printer settings can also be conducted in the Server list object, but they will then apply only to individual MetaFrame servers.
How are client printers assigned to print drivers on the MetaFrame server? When a user logs on, the name of a print driver on the client will be transmitted to the MetaFrame server over the ICA protocol. The MetaFrame server checks whether it also has a driver of the same name installed. If it does, this is the driver that is used for creating the print data streams. However, there will always be cases when the identical printer name is not available on the client and the MetaFrame server. There could be any number of reasons for this: the client and server platforms are too different, the print model on the client was installed using an OEM driver, or some default print drivers were removed from the server. The solution to the problem is to logically map the respective print drivers using the menu item Actions\Printer Management\Mapping... in the Management Console for MetaFrame XP. In the corresponding dialog box, the exact names of the client print drivers (including all spaces and special characters) can be mapped to the corresponding names of the server print drivers.
The result of the mapping will be saved in the Wtsprnt.inf file, which is located in the %Systemroot%\system32 folder. It is also possible to execute additional mapping information in the %Systemroot%\System32\Wtsuprn.inf file, which, however, is applied at user level. A template called Wtsuprn.txt is placed in the Programs\Citrix\System32 folder when the installation of Citrix MetaFrame XP Presentation Serveris completed.
; ; WTSPRNT.INF -- DO NOT CHANGE ; ;This file is supplied by Citrix as a reference and best guess for ;client printer selections. The file wtsuprn.inf is the user file ;for client printer mapping and takes precedence over this file. ;An example file, wtsuprn.txt is supplied as a template. ; ;This file is changed automatically when the admin makes changes to ;the MetaFrame farm wide driver mapping settings. ;This file may be overwritten during software upgrades! [Identification] OptionType=PRINTER [ClientPrinters] "HP LaserJet 5P/5MP (HP)"="HP LaserJet 5MP" "HP LaserJet 5MP PostScript"="HP LaserJet 5P/5MP PostScript" "HP LaserJet 5P PostScript"="HP LaserJet 5P/5MP PostScript"
The Citrix MetaFrame XP Presentation Server comes with universal printer drivers that are used to address printers on the clients using a default print format. In many cases, this prevents having to install a large number of specific print drivers. Naturally, the universal printer drivers with their general data formats cannot support all of the properties of the various printer products on the market, but they do represent a common denominator. For higher requirements, the specific drivers are still needed. Buying, testing, installing, and managing a large number of specific drivers is, however, extremely time-consuming.
So how do you print with a universal printer driver? The universal printer driver on the MetaFrame server creates the print data stream in a universal format. This print job is directed to the ICA client over the spooler. There, the client printer outputs the print data stream directly, providing that it correctly interprets the universal data format. If it does not, the client’s local printer drivers generate a specific data stream from the universal print data format that the selected printer can understand.
Citrix supplies three universal print drivers with the MetaFrame XP Presentation Server:
PCL4 Understood even by older ICA clients and allows black and white printing to a resolution of 300 dots per inch (dpi).
PCL5c Understood only by 32-bit Windows and Macintosh clients of version 7.0, but it does offer color and black and white printing to a resolution of up to 600 dpi.
PostScript Can be used with version 7.0 of the UNIX client. PostScript- compatible printers and emulators also understand this format directly.
If the client printers are created automatically, it is also possible to specify whether universal or native print drivers should be used. This is done by going to Drivers in the properties under Printer Administration in the Management Console for MetaFrame XP.
The following options are available for using universal printer drivers:
Native drivers only The use of universal printer drivers is disabled. If a specific printer driver is not available on the server when the user logs on, the client printer cannot be created on the MetaFrame server.
Universal drivers only Only the universal drivers are used, not the native drivers.
Use universal driver only if native driver is unavailable The native drivers are the drivers of choice. Only if a native driver is not available on the MetaFrame server is a universal printer driver used.
Both universal and native drivers Both options can be used in parallel. However, the user must be very skilled in selecting the right driver for a specific task.
Automatically install native drivers for autocreated client and network printers This option allows the automatic installation of native print drivers, at which point the choice of printer can be set up through the driver compatibility list. This can be opened by going to Actions\Printer Management\Compatibility.
The ICA Client Printer Configuration manages the mapping of client printers and can be used for this purpose by all users. For this reason, it might not be the best solution to combine it with the administration tools into the same menu structure. It cannot be invoked from the system console of a MetaFrame server; it can be invoked only from an ICA session.
When the ICA client printer configuration is launched, it displays the printers available on the client. The options provided by the ICA protocols to use not only the server printers, but also the local printers, mean that each client often has an individual list to select from. The connections for the client printers have their own naming conventions that take into account the local names of the printers.