Ya that's too bad about the printer. Generally more expensive ones work well. Cheap ones end up being so cheap that they on the drivers to have the computer control everything. Even have your windows in charge of moving the head back and forth across when it's printing!
So cheapo that they are called sometimes winprinters because they are like the stripped down winmodems that lack all the nessicary hardware to be a modem, and do everything thru emulation. (blah, poor quality and unreliable. Use up cpu time on old computers. Not so much a issue nowadays.)
I don't know if your canon is one like that. Also for linux printing stay away from most all-in-one printers... most of those things are pretty queer, and use very propriatory systems. HP makes good all-in-one printers that support linux decently, and supply printer drivers. (special deamons that run like a service.). They work ok with all established print standards for linux and they work with the "sane" and xsane scanning sub-system stuff.
Unix printing used to be a huge pain in the but. Every *nix OS had it's own weird printing subsystem based around the old line printer crap. This made it almost impossible to support unix stuff for most printer manufacturers and they just gave up trying, leaving all printing duties to macs and windows/dos PCs.
But now we have Cups, which is the common unix printing subsystem. Which is nice enough that even Apple ditched it's brand new printing system they developed for OS X in favor for cups in OS 10.2.
This now makes Linux a great print server for most purposes. Cups uses the internet printing protocol that is new and designed to get away from the Lan sharing style stuff that is now common and causes issues with routers, switches, firewalls and all that happy crap.
To have a w2k client for a Linux print server(after you set up permissions in the linux box in the cupsd.conf file (located in /etc/cups/cupsd.conf)) go to add printer, network print, and select the URL box. In the box you type in the url for the printer your connected to. In my case I have my HP all in one hooked up and it's url is
http://192.168.1.10/printers/HP.PSC.1210 (you can find this by going to
http://127.0.0.1:631 on any cups-enabled OS's, including OS X.). Select the proper driver for it and your done.
Also for some industrial/professional printers you can even set Linux up as a RIP for printing. Thus replacing special propriatory RIP devices that can cost thousands of dollars. (of course with professional level stuff, your millage will definately vary and it isn't the easiest stuff to do).
For linux printing compatablity check out
linuxprinting.org