Citrix MetaFrame has long been a popular terminal server solution for serving applications to users and has enjoyed regular use throughout many enterprises. However, along with its many great features, one of the long-standing challenges and annoyances in working with MetaFrame is the issue of printing. Charon Systems’ UniPrint provides a great way to solve the MetaFrame printing problem.

So what’s the problem?
Printing in a terminal server environment, such as Citrix MetaFrame, is a very delicate matter. If you make the mistake of installing a printer driver that the terminal server doesn’t like, then the server could end up seeing the infamous Blue Screen of Death (BSOD). I have to confess that, with the release of Windows 2000, the print driver blue-screening a server has become more rare, but it has not been completely abolished.

The BSOD is only part of the problem. The print spooler hanging is a much bigger and more complicated problem. With the BSOD, at least there is a way to know whether the server works with the driver; you can verify that the installed driver is certified to work in a terminal server either by testing or going to the manufacturer’s Web site. The print spooler hanging has no solution except stopping and restarting the service after cleaning the print spooler directory and doing all sorts of maintenance tasks.

As if those two issues aren’t enough
Another big annoyance is that for users to be able to print while they are in a terminal server session or a Citrix ICA (independent computing architecture) session, the driver for the printer they are printing to would need to be installed on the server. So let’s assume a user is trying to print to an HP LaserJet 4. That driver would have to be installed on the server in order for the user to get a printer mapped in the session and thus be able to print.

But wait—it gets more complicated. The driver name needs to match exactly between what is installed on the server and what is installed on the client computer in order for the client’s printer to properly map and print. If there is a difference in operating systems between the server and the client, the driver name will often differ between the platforms.

For example, HP may release a print driver name for an HP LaserJet 4 printer with two different names for the different operating systems. For Windows 95, the driver name may be HP LaserJet 4, while the same driver on Windows 2000 may be called HP LaserJet 4i, or something slightly different. When that happens, it can prevent clients from being able to print in the MetaFrame environment.

You now have an idea (if you didn’t already) of how problematic printing is in a terminal server environment. Citrix Systems has made some impressive progress in this regard with the release of the Universal Print Driver in MetaFrame XP, but while this effort may deliver a permanent solution in the near future, it is not yet an adequate fix. For now, the best solution available is probably UniPrint.

What’s UniPrint?
UniPrintfrees up the Citrix (and Windows Terminal Services) administrator from ever having to install a printer driver on the servers. UniPrint acts as a universal print driver and will enable your users to print to any device. If they can print to that device outside of the Citrix environment, then they can print to it from within their ICA session. How? The process is remarkably simple. Once a print job is submitted, UniPrint converts this print job to PDF format, sends it to the client, and uses the client’s locally installed print driver to print it out using the client’s default local printer.

Picture this: You are trying to print a Microsoft Word document submitted for printing using the traditional terminal services method (without UniPrint). The print job is roughly 150 KB, and this file would have to travel the LAN or the WAN in order to spool and print. This print job could be prone to communications errors and problems that would corrupt the file and render the print spooler unable to finish printing the file, prompting you to delete, purge, or even stop and start the print spooler in order to clear it and restore printing to your users. Now, imagine if you had 35 users on a single MetaFrame XP server all printing docs that are 150 KB (it could easily be larger than that). You can see how that could choke the print spooler. With UniPrint, however, converting the document to PDF format reduces its size tremendously. For example, a 200-KB doc can easily be shrunk to a 20-KB doc and thus can travel the WAN or LAN faster and is much less prone to error and print spooler hangs.

UniPrint’scomponents, options, and requirements
UniPrinthas two software components, a server piece, and a client piece that would need to be installed in order to make it work, in addition to a few other requirements. On the server side, you have to install UniPrint server, which creates the Universal Print Driver that users will be able to select as a printer. Users will choose to print to UniPrint. That is all you need to install on the server side. For those of you who are already asking the question of whether it needs some additional software that will create the PDF document, the answer is no. UniPrint server software is prebundled, and part of the software’s functionality is creating the PDF file.

Of course, you are given tools to configure the different options you would like UniPrint to perform. My favorite is Font Embedding, which converts the document to an imagelike document, thereby not requiring a special font in order to print correctly. As you know, some applications generate reports in strange, nonstandard fonts that might not be installed on every system and therefore will not print correctly. To avoid this, enable Font Embedding and forget about installing additional fonts.

On the client side, three things need to be present in order to make UniPrint work:

  • UniPrint Client
  • Adobe Acrobat Reader 4.0 or higher
  • Citrix ICA Client

The UniPrint Client has two versions: the full client and the Web client. The Web client is useful because it can be installed from a Web page, and for those of you who use Citrix NFuse (Web portal) technology in your server farm, the Web client is the perfect choice.

However, the Web client lacks the functionality that the full client has and cannot be configured at all. The full client, on the other hand, has some features that can be configured, such as using UniPrint Native PDFs instead of Acrobat-compatible PDFs. By enabling this option in the full client, you don’t need Adobe Acrobat Reader to be installed on the local client machine. Instead, UniPrint uses its own mechanism to print the PDF rather than relying on Acrobat’s printing mechanisms. My experience with this option, though, has been that using Adobe Acrobat Reader’s printing mechanisms is a more reliable way of printing. Plus, the UniPrint driver lacks many of the options that can be enabled when using Acrobat, namely Font Embedding.

The second item on the requirements list is Adobe Acrobat Reader. As mentioned earlier, there is a way around having Acrobat installed on every PC, although this software has become a standard install on many desktop computers. Again, I strongly recommend using Adobe and not the native UniPrint PDF driver, which is still in its early stages of development.

The third item on the list is the ICA client, which is needed to launch ICA sessions to MetaFrame servers.

What about Citrix’s Universal Print Driver?
Citrix introduced the Universal Print Driver (UPD) in Feature Release 1 for MetaFrame XP, but UPD by Citrix doesn’t address all the issues that UniPrint does. For example, Citrix’s UPD doesn’t have any mechanism for reducing the size of the print job; therefore, in terms of bandwidth preservation and print spooling, the UPD doesn’t offer much. The UPD is also limited to the following:

  • UPD runs on MetaFrame XP with Feature Release 1 or 2 installed on the server.
  • UPD requires Citrix ICA 32-bit Client 6.20 or better.
  • UPD only supports, and will function correctly, in the PCL family printers.
  • UPD is limited to 600 dpi.
  • UPD will not use any advanced features of the print device, such as the ability to print full duplex.

Citrix is expected to release MetaFrame Feature Release 3 (FR3) sometime in the second quarter of 2003. As of the publishing of this article, FR3 is still in testing, but it promises to be an enhancement to the Universal Print Driver. Nevertheless, I think it’s going to be quite a while before Citrix really gets a handle on the Universal Print Driver technology. UniPrint, on the other hand, doesn’t have any of the above-mentioned limitations, and it offers a better printing method by reducing the size of the print job and conserving network bandwidth.

Installing UniPrint is very straightforward. Just pop in the software CD and go through the installation wizard, which doesn’t offer many choices. Once the UniPrint server has been installed, you can launch the UniPrint Server Configurator (see Figure A), which will allow you to tweak UniPrint.

Figure A
You can tweak UniPrint with the UniPrint Server Configurator.

The Server Configurator tool has many options you can set in advance for users. These options will become the users’ default UniPrint settings, which could include the resolution users print at or a user login script that you want a user to run (which allows you to specify the login script and its location). I usually like to enable Font Embedding by default for all users. Another setting I like to enable, which is in the Advanced tab, is the option to Spool Print Documents So The Program Finishes Printing Faster instead of printing directly to the printer. Keep in mind, though, that a server reboot is always needed after you make any modifications in the UniPrint Server Configurator utility.

Final analysis
I have implemented UniPrint in my organization’s Citrix environment and it proved to be a great success. Prior to installing UniPrint, our environment definitely struggled with print spooler hangs several times a day. We also dealt with our share of BSODs, and since we had to keep up with many different printer drivers, it got to the point that we could support only certain printers, which was a constant nagging issue raised by our users.

UniPrintcame through for us, and I can gladly say that ever since the implementation of UniPrint a year ago, I have not seen a single print spooler hang on all of our MetaFrame XP servers. Needless to say, there were no BSODs either, and we were thrilled with the idea that our users can now print to any printer, anywhere. Plus, since we use NFuse, our users can basically be anywhere on earth that has an Internet connection and a printer.

As for the disadvantages of UniPrint, the product itself is rock solid. We have only experienced a few minor hiccups with it during the past year, and these were taken care of by the product’s support team. My only criticism of Charon Systems is its support response time. When you get through to support, the problem is solved quickly; getting a hold of someone is the key. UniPrint support responds to calls within 24 hours, but sometimes a production environment that relies on UniPrint for its printing cannot afford to wait 24 hours for a response. Again, I have to stress the fact that we have yet to experience an issue that would cripple our work and render us unproductive, but that doesn’t mean it can’t happen. Therefore, Charon does need to address this issue.

Another issue I have with Charon Systems is that it has yet to develop a method by which the client software is updated or upgraded. It needs to come out with an upgrade version along with the full version. This would make upgrades easier by having smaller files that can be deployed faster and easier. I have recently been told it is working on a better delivery mechanism.

All in all, I strongly recommend UniPrint as the solution for better printing within a Citrix environment.