OneNote Print Driver – A 64 Bit Solution

UPDATED: I have released an updated solution that fixes the issues some people had on 64 bit Windows 7. It also enables optional printing to single page or separate sub pages. More details here .

_______

Short version: I have a solution for those of you needing a 64 bit OS solution for printing to OneNote. Read on for details.

Well… it’s been a long time between posts. Without making excuses, suffice it to say we’ve been crazy busy working on the next release of OneNote. And given strong feedback about the 64 bit print driver issue, I decided to put what little spare time I had into trying to develop a 64 bit OS solution for printing to OneNote 2007 for you, rather than blogging.

So after spending some time over Thanksgiving and Christmas vacations and more than a few evenings coding I now have a solution you can download to enable you to print to OneNote 2007 from 64 bit Vista (and Windows 7 beta if you have it…).

You can see the details, download, installation and usage instructions for the XPS2OneNote 64 bit OneNote print driver solution on codeplex.

I hope it works well for you. Please feel free to leave me comments and suggestions here.

 

Some additional comments

You can ignore all of this… unless you’re interested in context.

  • First, please let me repeat my sincere and humble apology that the included print driver didn’t work for 64 bit OSes as I wrote in my original post explaining why the Send to OneNote 2007 print driver doesn’t work on 64 bit OSes. I know it seems lame.
  • Second, please note that while this solution I’ve created works quite well, it’s something of an expedient hack. It leverages the XPS print driver included with Vista and watches a folder for XPS files landing in it. It’s not the sort of solution we could ship as an integrated part of OneNote in its current form. It’s not architected in a way to cleanly integrate into the product  (it’s basically a separate watcher exe…). There is a whole lot to shipping release quality software that this doesn’t cover (handling numerous edge cases and exceptions, internationalization and support in a hundred or so languages, patching support, accessibility, full test passes on a multitude of configurations, the ability to support the code base for 10 years and an abundance of other details). 
  • Given that, here are some caveats: I’m releasing this as a CodePlex project. It was created in my own personal time. It’s not Microsoft officially supported software. I will endeavor to do my best to address any issues that come up. I will make the source code available on CodePlex (once I’ve cleaned up a couple of things), so others can feel free to improve it too. And don’t judge Microsoft by the quality of the source. I’m actually the Group Program Manager for OneNote and I’m not paid to write code professionally these days. We have much smarter people to do that…
  • As I wrote in my previous post, the MODI print driver that the original Send to OneNote 2007 print driver is based on is a very old code base that’s frankly a big hairball. Making it support 64 bit wasn’t really viable. I’ve gotten some feedback along the lines of “surely this must be doable, or easy because how hard can a print driver be… or some other print driver supports this”. Well, yes in software anything is possible. And sometimes if you have the right code to start with it’s even easy. But that’s really not the case with the MODI code base. Our solution is to migrate OneNote in the next release to use a print driver code base (that was developed by printing experts elsewhere in Microsoft) that IS modern, DOES support 64 bit and has all these nice flexible characteristics you expect software should have. But unfortunately it didn’t exist yet when we originally created OneNote 2003…
  • This migration involves a significant enough shift in the way it integrates with OneNote that it’s not practical to do this as a patch to OneNote 2007 (i.e. it would very materially impact other important things customers have told us they want). So we’re doing it as part of the work for the next release of OneNote.
  • I’ve gotten a few heated comments (yes I was even told I was “a gimp” who should “suck rotten eggs”), implying that somehow we’re malicious and conspiratorial, don’t care about our customers and this is all a secret plot to make people pay us more money to upgrade. I will confess that kind of hurt. I can assure you it’s not true. We love OneNote. We want our customers to love OneNote. We work ridiculous hours to try and make that happen and bring you the best product we can. We’re actually a pretty small team. We’re just doing what we can with finite resources.
  • And while I know it’s not much consolation, we wrote in the System Requirements from day one that the print driver was not supported on 64 bit OSes. That’s on the box, and it’s on the web site. I know, no one reads System Requirements these days but really we weren’t trying to hide it and 64 bit OS support for the print driver never was a feature of OneNote 2007. So we didn’t remove a feature that was already there as somebody implied.

With that all said I hope this solution works for you and feel free to leave me comments about it.