April 3, 2008

The other day, a colleague submitted a programming request to me to try to improve the way some of the pages on our company web site print out. Knowing that I had trouble handling traditional paper documents because of my disability, she was polite enough to ask if we could just set up a quick meeting so she could show me the printed examples and flip through the pages for me. Although I appreciated the friendly gesture of help, I like it when I can suggest simpler, more accessible solutions that really end up saving time for everyone involved. So I asked if she could simply just print an XPS document instead of messing with a hard copy at all. And as somewhat expected, I promptly received a confused "What's an XPS document?" in return.

So then, what is an XPS document? Well, if you are really technically savvy and want to know the details, then I'd suggest looking elsewhere, perhaps starting by reading all about the XML Paper Specification at Microsoft. But if you really just want to know how you might actually end up using it without all the extra fuss, then keep reading.

In my mind, the main value XPS currently provides end users is its built-in virtual printer driver. Essentially, this virtual driver allows you to print any document to an XPS file (a file with a .xps extension) instead of spooling directly to a printer. This means that your printout doesn't have to go to paper immediately, if ever. It is simply saved as a file that you can open in an XPS viewer. In the viewer, you can do what you want with it. You can view the virtual printout, or, if you really need to, you can print a hard copy version from this viewer at that point. So it gives you more flexibility. That's what I like!

How do you actually use this virtual XPS printer driver then, you say? To do that, you'll first need to make sure you have XPS installed. Generally, this means you must have XP SP2 or later, and I believe the .NET Framework 3.0 is also a requirement. Obviously, most people have probably downloaded this already via Windows Update, or, if you have Vista, it was already a standard feature. If you're pretty sure you have that covered, then all you need to do to try it is to go to something you'd like to print and try it out.

For example, most of the stuff I print comes from the web, so that means I'm printing from a web browser. In Internet Explorer 7, just click the little down arrow next to the printer icon and then click on "Print..." so you can see the printer options. You don't want to go directly to the default printer because that's probably your standard hardware paper-and-ink printer that you already know and love. Instead, you'll want to select the printer labeled "Microsoft XPS Document Writer" and then click the "Print" button. At that point, you should be presented with a standard "Save As" dialog box where you can name your new XPS file (whatever-you-want.xps) and put it in whatever folder you wish. After clicking "Save" from there, in a few moments you should have a brand new XPS document saved wherever you chose to put it. And then, if you want to open it and see what it looks like, just double-click it, and it should automatically open up in the default XPS viewer. It's all pretty simple, really.

So now you have a way to save a document in a paginated, fixed format that looks just like traditional paper printouts. Think of it as electronic paper, which is obviously much simpler to exchange with others via email, file sharing, etc. than the hard copy alternative. It's certainly a lot handier for a guy like me with a physical disability, but it can be a money-saver, too, since you don't have to necessarily waste that gold-laced ink that costs an arm and a leg. In a way, you can actually use XPS as your own makeshift personal document imaging system. Give it a try if you haven't already!

What's the difference, you ask? "In my mind, the main value XPS currently provides end users is its built-in virtual printer driver." The key difference there being "built-in," which means it's really easy for throngs of Windows users to do without a hitch.

If Adobe packaged their print to PDF functionality along with their free Reader program, I'd probably recommend that, but that's just not the case. Frankly, most business workstations are not going to be set up with a PDF print driver even though, like you said, there are some options available. Plus, if a company has a security policy in place, the average user won't be given enough privileges to install whatever they want on their workstation anyway and can only run software supported by their internal tech support group. That leaves XPS as a much more attractive option for me because it's there and ready to go in Windows and is a lot less of a headache to explain to my less tech-savvy colleagues.

If portability is your main concern, then you're right, you probably don't want to use XPS or any other fairly new data format since there are going to be fewer programs on the market supporting them right now. However, it's important to note that XPS is an open specification, meaning there will be more and more support for it over time. In fact, I just performed a quick and easy googling experiment and apparently Okular already gives Linux KDE 4 users XPS capabilities. I'm sure there must be plenty of other examples out there for other operating systems if you're interested.