At long long last I have managed to get a Linux installation to print to a windows printer, amazingly the printer is a “windows only” printer.
I have a Canon MPC400 printer, which only has drivers for Windows, I have tried connecting to it from Linux with drivers as close as possible before, but it hasn’t worked…until now. Forget Samba printing, hooray for CUPS (Common Unix Printing System).
After a failed attempt at using SMB printing earlier tonight, I started thinking “Maybe I can download a program the intercepts print jobs sent to a certain compatible printer and redirects them to the windows-only printer.” This was fairly pointless, and lead me to a heap of $100+ shareware apps that didn’t do what I needed…then it struck me “I’ve seen CUPS in Windows before, but where?” I had a look throught the printer properties, nope, not there…hang on, it’s in Windows Setup…
So I went to Control Panel, Add Or Remove Programs, Add/Remove Windows Components. I scrolled down to “Other Network File & Print Services”, had a look inside and found “Print Services For Unix”. Needless to say, I was getting excited by this stage, but the description once I clicked on it was even better “Enables UNIX clients to print to any printer available to this computer” (Linux, for those of you who don’t know, is a UNIX derivative). Naturally, I installed this instantly, I watched it install as well.
After the installation I went back to the printer properties, but there was no change, and I thought “OK…..how does this work then…..”, suddenly I remembered seeing it install IIS stuff (IIS being the built-in Windows web server), and I remembered that CUPS is an extension of HTTP. So, Control Panel, Administrative Tools, IIS, delve through the tree of servers, and I found printers at address http://server/printers/ 
So, back to my Linux machine, bring up firefox and go to http://192.168.0.5/printers/  (192.168.0.5  being the IP address of the computer with the printer), it asked me for a username and password, I entered numerous different ones, but that didn’t work, so I hit cancel and got an IIS message telling me that webserver ACL’s (Access Control List’s) required me to login. Back to the Windows machine, try accessing the printer site using Internet Explorer and hey presto, it worked…this probably means Micorsoft did some nasty “Nothing but Internet Explorer” trick, which would be silly considering that it is supposed to give UNIX access to printers. Check authentication settings and (suprise suprise) discover that it is waiting for Internet Explorer to provide encrypted Windows style login details…well that’s just stupid, Linux/Unix/The entire non-microsoft world (except for some old versions of Macintosh) don’t use rubbish like Internet Explorer, we use good stuff, like Mozilla Firefox. I quickly changed it to anonymous access, but before hitting OK I realised the security implications, the rest of the world can now use my printer….oh, hang on, no they can’t, I’m safe behind my firewall…hit OK.
Back to my Linux machine and Mozilla Firefox, yay, I can now access the printer site, but I need the printer address, click on the printer and I now see the address is http://192.168.0.5/printers/Printer/.printer  tell Linux this and it asks me what sort of printer I have…Canon, naturally it didn’t have my MPC400, so I chose the closest thing, the MPC5000 (which happens to use bjc600 drivers). For the first time ever, I didn’t get a “can’t connect to server” message. I sent a test page to the printer…..the printer started making noise, my excitement shot through the roof, the printer was PRINTING FROM LINUX, yes, my windows-only printer was PRINTING FROM LINUX, I saw the test page emerge from the printer, I deliberately collapsed, got up, picked up the test page, danced around the room for a bit, put down the test page and, in excitement, started typing this…yes, I repeat, my windows-only printer was PRINTING FROM LINUX.
EDIT: Due to the number of people who are landing on my blog for information on Linux and the Canon MPC400, I have decided to add this note, as per the Linux Printing post I have discovered that the MPC400 works best with the Canon S630 drivers. END EDIT
In case you’re wondering, the reason I did all this is because I had two web pages to print, and was too lazy to walk to another computer and print them from there!!
I thought you might like to see my first ever Linux to Windows test page…no not particularly??? Well here it is anyway!!